UNPKG

llamaindex

Version:

<p align="center"> <img height="100" width="100" alt="LlamaIndex logo" src="https://ts.llamaindex.ai/square.svg" /> </p> <h1 align="center">LlamaIndex.TS</h1> <h3 align="center"> Data framework for your LLM application. </h3>

93 lines (92 loc) 3.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "LlamaCloudRetriever", { enumerable: true, get: function() { return LlamaCloudRetriever; } }); const _api = require("@llamaindex/cloud/api"); const _global = require("@llamaindex/core/global"); const _retriever = require("@llamaindex/core/retriever"); const _schema = require("@llamaindex/core/schema"); const _utils = require("@llamaindex/core/utils"); const _utils1 = require("./utils.js"); class LlamaCloudRetriever extends _retriever.BaseRetriever { clientParams; retrieveParams; organizationId; projectName = _global.DEFAULT_PROJECT_NAME; pipelineName; resultNodesToNodeWithScore(nodes) { return nodes.map((node)=>{ const textNode = (0, _schema.jsonToNode)(node.node, _schema.ObjectType.TEXT); textNode.metadata = { ...textNode.metadata, ...node.node.extra_info }; return { // Currently LlamaCloud only supports text nodes node: textNode, score: node.score ?? undefined }; }); } // LlamaCloud expects null values for filters, but LlamaIndexTS uses undefined for empty values // This function converts the undefined values to null convertFilter(filters) { if (!filters) return null; const processFilter = (filter)=>{ if ("filters" in filter) { // type MetadataFilters return { ...filter, filters: filter.filters.map(processFilter) }; } return { ...filter, value: filter.value ?? null }; }; return { ...filters, filters: filters.filters.map(processFilter) }; } constructor(params){ super(); this.clientParams = { apiKey: params.apiKey, baseUrl: params.baseUrl }; (0, _utils1.initService)(this.clientParams); this.retrieveParams = params; this.pipelineName = params.name; if (params.projectName) { this.projectName = params.projectName; } if (params.organizationId) { this.organizationId = params.organizationId; } } async _retrieve(query) { const pipelineId = await (0, _utils1.getPipelineId)(this.pipelineName, this.projectName, this.organizationId); const filters = this.convertFilter(this.retrieveParams.filters); const { data: results } = await (0, _api.runSearchApiV1PipelinesPipelineIdRetrievePost)({ throwOnError: true, path: { pipeline_id: pipelineId }, body: { ...this.retrieveParams, query: (0, _utils.extractText)(query), search_filters: filters, dense_similarity_top_k: this.retrieveParams.similarityTopK } }); return this.resultNodesToNodeWithScore(results.retrieval_nodes); } }