UNPKG

@llamaindex/core

Version:
133 lines (128 loc) 5 kB
Object.defineProperty(exports, '__esModule', { value: true }); var index_cjs$1 = require('../../global/dist/index.cjs'); var index_cjs = require('../../schema/dist/index.cjs'); const DEFAULT_TEXT_KEY = "text"; function validateIsFlat(obj) { for(const key in obj){ if (typeof obj[key] === "object" && obj[key] !== null) { throw new Error(`Value for metadata ${key} must not be another object`); } } } function nodeToMetadata(node, removeText = false, textField = DEFAULT_TEXT_KEY, flatMetadata = false) { const { metadata, embedding, ...rest } = node.toMutableJSON(); if (flatMetadata) { validateIsFlat(metadata); } if (removeText) { rest[textField] = ""; } metadata["_node_content"] = JSON.stringify(rest); metadata["_node_type"] = node.constructor.name.replace("_", ""); // remove leading underscore to be compatible with Python metadata["document_id"] = node.sourceNode?.nodeId || "None"; metadata["doc_id"] = node.sourceNode?.nodeId || "None"; metadata["ref_doc_id"] = node.sourceNode?.nodeId || "None"; return metadata; } function metadataDictToNode(metadata, options) { const { _node_content: nodeContent, _node_type: nodeType, document_id, doc_id, ref_doc_id, ...rest } = metadata; let nodeObj; if (!nodeContent) { if (options?.fallback) { nodeObj = options?.fallback; } else { throw new Error("Node content not found in metadata."); } } else { nodeObj = JSON.parse(nodeContent); nodeObj = { ...rest, ...options?.fallback, ...nodeObj }; nodeObj.metadata = { ...options?.fallback && "metadata" in options.fallback && typeof options.fallback.metadata === "object" ? options?.fallback.metadata : {}, ...rest }; } // Note: we're using the name of the class stored in `_node_type` // and not the type attribute to reconstruct // the node. This way we're compatible with LlamaIndex Python switch(nodeType){ case "IndexNode": return index_cjs.jsonToNode(nodeObj, index_cjs.ObjectType.INDEX); default: return index_cjs.jsonToNode(nodeObj, index_cjs.ObjectType.TEXT); } } const escapeLikeString = (value)=>{ return value.replace(/[%_\\]/g, "\\$&"); }; var VectorStoreQueryMode = /*#__PURE__*/ function(VectorStoreQueryMode) { VectorStoreQueryMode["DEFAULT"] = "default"; VectorStoreQueryMode["SPARSE"] = "sparse"; VectorStoreQueryMode["HYBRID"] = "hybrid"; // fit learners VectorStoreQueryMode["SVM"] = "svm"; VectorStoreQueryMode["LOGISTIC_REGRESSION"] = "logistic_regression"; VectorStoreQueryMode["LINEAR_REGRESSION"] = "linear_regression"; // maximum marginal relevance VectorStoreQueryMode["MMR"] = "mmr"; // for Azure AI Search VectorStoreQueryMode["SEMANTIC_HYBRID"] = "semantic_hybrid"; return VectorStoreQueryMode; }({}); var FilterOperator = /*#__PURE__*/ function(FilterOperator) { FilterOperator["EQ"] = "=="; FilterOperator["IN"] = "in"; FilterOperator["GT"] = ">"; FilterOperator["LT"] = "<"; FilterOperator["NE"] = "!="; FilterOperator["GTE"] = ">="; FilterOperator["LTE"] = "<="; FilterOperator["NIN"] = "nin"; FilterOperator["ANY"] = "any"; FilterOperator["ALL"] = "all"; FilterOperator["TEXT_MATCH"] = "text_match"; FilterOperator["CONTAINS"] = "contains"; FilterOperator["IS_EMPTY"] = "is_empty"; return FilterOperator; }({}); var FilterCondition = /*#__PURE__*/ function(FilterCondition) { FilterCondition["AND"] = "and"; FilterCondition["OR"] = "or"; return FilterCondition; }({}); class BaseVectorStore { constructor(params){ this.embedModel = params?.embeddingModel ?? index_cjs$1.Settings.embedModel; } } const parsePrimitiveValue = (value)=>{ if (typeof value !== "number" && typeof value !== "string") { throw new Error("Value must be a string or number"); } return value; }; const parseArrayValue = (value)=>{ const isPrimitiveArray = Array.isArray(value) && value.every((v)=>typeof v === "string" || typeof v === "number"); if (!isPrimitiveArray) { throw new Error("Value must be an array of strings or numbers"); } return value; }; const parseNumberValue = (value)=>{ if (typeof value !== "number") throw new Error("Value must be a number"); return value; }; exports.BaseVectorStore = BaseVectorStore; exports.FilterCondition = FilterCondition; exports.FilterOperator = FilterOperator; exports.VectorStoreQueryMode = VectorStoreQueryMode; exports.escapeLikeString = escapeLikeString; exports.metadataDictToNode = metadataDictToNode; exports.nodeToMetadata = nodeToMetadata; exports.parseArrayValue = parseArrayValue; exports.parseNumberValue = parseNumberValue; exports.parsePrimitiveValue = parsePrimitiveValue; exports.validateIsFlat = validateIsFlat;