@langchain/community
Version:
Third-party integrations for LangChain.js
1 lines • 12.6 kB
Source Map (JSON)
{"version":3,"file":"mariadb.d.ts","names":["Pool","PoolConfig","VectorStore","EmbeddingsInterface","Document","Metadata","Record","DistanceStrategy","MariaDBStoreArgs","MariaDBStore","Promise"],"sources":["../../src/vectorstores/mariadb.d.ts"],"sourcesContent":["import { type Pool, type PoolConfig } from \"mariadb\";\nimport { VectorStore } from \"@langchain/core/vectorstores\";\nimport type { EmbeddingsInterface } from \"@langchain/core/embeddings\";\nimport { Document } from \"@langchain/core/documents\";\ntype Metadata = Record<string, unknown>;\nexport type DistanceStrategy = \"COSINE\" | \"EUCLIDEAN\";\n/**\n * Interface that defines the arguments required to create a\n * `MariaDBStore` instance. It includes MariaDB connection options,\n * table name and verbosity level.\n */\nexport interface MariaDBStoreArgs {\n connectionOptions?: PoolConfig;\n pool?: Pool;\n tableName?: string;\n collectionTableName?: string;\n collectionName?: string;\n collectionMetadata?: Metadata | null;\n schemaName?: string | null;\n columns?: {\n idColumnName?: string;\n vectorColumnName?: string;\n contentColumnName?: string;\n metadataColumnName?: string;\n };\n verbose?: boolean;\n /**\n * The amount of documents to chunk by when\n * adding vectors.\n * @default 500\n */\n chunkSize?: number;\n ids?: string[];\n distanceStrategy?: DistanceStrategy;\n}\n/**\n * MariaDB vector store integration.\n *\n * Setup:\n * Install `@langchain/community` and `mariadb`.\n *\n * If you wish to generate ids, you should also install the `uuid` package.\n *\n * ```bash\n * npm install @langchain/community mariadb uuid\n * ```\n *\n * ## [Constructor args](https://api.js.langchain.com/classes/_langchain_community.vectorstores_mariadb.MariaDB.html#constructor)\n *\n * <details open>\n * <summary><strong>Instantiate</strong></summary>\n *\n * ```typescript\n * import {\n * MariaDBStore,\n * DistanceStrategy,\n * } from \"@langchain/community/vectorstores/mariadb\";\n *\n * // Or other embeddings\n * import { OpenAIEmbeddings } from \"@langchain/openai\";\n * import { PoolConfig } from \"mariadb\";\n *\n * const embeddings = new OpenAIEmbeddings({\n * model: \"text-embedding-3-small\",\n * });\n *\n * // Sample config\n * const config = {\n * connectionOptions: {\n * host: \"127.0.0.1\",\n * port: 3306,\n * user: \"myuser\",\n * password: \"ChangeMe\",\n * database: \"api\",\n * } as PoolConfig,\n * tableName: \"testlangchainjs\",\n * columns: {\n * idColumnName: \"id\",\n * vectorColumnName: \"vector\",\n * contentColumnName: \"content\",\n * metadataColumnName: \"metadata\",\n * },\n * // supported distance strategies: COSINE (default) or EUCLIDEAN\n * distanceStrategy: \"COSINE\" as DistanceStrategy,\n * };\n *\n * const vectorStore = await MariaDBStore.initialize(embeddings, config);\n * ```\n * </details>\n *\n * <br />\n *\n * <details>\n * <summary><strong>Add documents</strong></summary>\n *\n * ```typescript\n * import type { Document } from '@langchain/core/documents';\n *\n * const document1 = { pageContent: \"foo\", metadata: { baz: \"bar\" } };\n * const document2 = { pageContent: \"thud\", metadata: { bar: \"baz\" } };\n * const document3 = { pageContent: \"i will be deleted :(\", metadata: {} };\n *\n * const documents: Document[] = [document1, document2, document3];\n * const ids = [\"1\", \"2\", \"3\"];\n * await vectorStore.addDocuments(documents, { ids });\n * ```\n * </details>\n *\n * <br />\n *\n * <details>\n * <summary><strong>Delete documents</strong></summary>\n *\n * ```typescript\n * await vectorStore.delete({ ids: [\"3\"] });\n * ```\n * </details>\n *\n * <br />\n *\n * <details>\n * <summary><strong>Similarity search</strong></summary>\n *\n * ```typescript\n * const results = await vectorStore.similaritySearch(\"thud\", 1);\n * for (const doc of results) {\n * console.log(`* ${doc.pageContent} [${JSON.stringify(doc.metadata, null)}]`);\n * }\n * // Output: * thud [{\"baz\":\"bar\"}]\n * ```\n * </details>\n *\n * <br />\n *\n *\n * <details>\n * <summary><strong>Similarity search with filter</strong></summary>\n *\n * ```typescript\n * const resultsWithFilter = await vectorStore.similaritySearch(\"thud\", 1, {\"country\": \"BG\"});\n *\n * for (const doc of resultsWithFilter) {\n * console.log(`* ${doc.pageContent} [${JSON.stringify(doc.metadata, null)}]`);\n * }\n * // Output: * foo [{\"baz\":\"bar\"}]\n * ```\n * </details>\n *\n * <br />\n *\n *\n * <details>\n * <summary><strong>Similarity search with score</strong></summary>\n *\n * ```typescript\n * const resultsWithScore = await vectorStore.similaritySearchWithScore(\"qux\", 1);\n * for (const [doc, score] of resultsWithScore) {\n * console.log(`* [SIM=${score.toFixed(6)}] ${doc.pageContent} [${JSON.stringify(doc.metadata, null)}]`);\n * }\n * // Output: * [SIM=0.000000] qux [{\"bar\":\"baz\",\"baz\":\"bar\"}]\n * ```\n * </details>\n *\n * <br />\n *\n * <details>\n * <summary><strong>As a retriever</strong></summary>\n *\n * ```typescript\n * const retriever = vectorStore.asRetriever({\n * searchType: \"mmr\", // Leave blank for standard similarity search\n * k: 1,\n * });\n * const resultAsRetriever = await retriever.invoke(\"thud\");\n * console.log(resultAsRetriever);\n *\n * // Output: [Document({ metadata: { \"baz\":\"bar\" }, pageContent: \"thud\" })]\n * ```\n * </details>\n *\n * <br />\n */\nexport declare class MariaDBStore extends VectorStore {\n tableName: string;\n collectionTableName?: string;\n collectionName: string;\n collectionId?: string;\n collectionMetadata: Metadata | null;\n schemaName: string | null;\n idColumnName: string;\n vectorColumnName: string;\n contentColumnName: string;\n metadataColumnName: string;\n _verbose?: boolean;\n pool: Pool;\n chunkSize: number;\n distanceStrategy: DistanceStrategy;\n constructor(embeddings: EmbeddingsInterface, config: MariaDBStoreArgs);\n get computedTableName(): string;\n get computedCollectionTableName(): string;\n /**\n * Escape identifier\n *\n * @param identifier identifier value\n * @param alwaysQuote must identifier be quoted if not required\n */\n private escapeId;\n private printable;\n /**\n * Static method to create a new `MariaDBStore` instance from a\n * connection. It creates a table if one does not exist, and calls\n * `connect` to return a new instance of `MariaDBStore`.\n *\n * @param embeddings - Embeddings instance.\n * @param fields - `MariaDBStoreArgs` instance\n * @param fields.dimensions Number of dimensions in your vector data type. default to 1536.\n * @returns A new instance of `MariaDBStore`.\n */\n static initialize(embeddings: EmbeddingsInterface, config: MariaDBStoreArgs & {\n dimensions?: number;\n }): Promise<MariaDBStore>;\n /**\n * Static method to create a new `MariaDBStore` instance from an\n * array of texts and their metadata. It converts the texts into\n * `Document` instances and adds them to the store.\n *\n * @param texts - Array of texts.\n * @param metadatas - Array of metadata objects or a single metadata object.\n * @param embeddings - Embeddings instance.\n * @param dbConfig - `MariaDBStoreArgs` instance.\n * @returns Promise that resolves with a new instance of `MariaDBStore`.\n */\n static fromTexts(texts: string[], metadatas: object[] | object, embeddings: EmbeddingsInterface, dbConfig: MariaDBStoreArgs & {\n dimensions?: number;\n }): Promise<MariaDBStore>;\n /**\n * Static method to create a new `MariaDBStore` instance from an\n * array of `Document` instances. It adds the documents to the store.\n *\n * @param docs - Array of `Document` instances.\n * @param embeddings - Embeddings instance.\n * @param dbConfig - `MariaDBStoreArgs` instance.\n * @returns Promise that resolves with a new instance of `MariaDBStore`.\n */\n static fromDocuments(docs: Document[], embeddings: EmbeddingsInterface, dbConfig: MariaDBStoreArgs & {\n dimensions?: number;\n }): Promise<MariaDBStore>;\n _vectorstoreType(): string;\n /**\n * Method to add documents to the vector store. It converts the documents into\n * vectors, and adds them to the store.\n *\n * @param documents - Array of `Document` instances.\n * @param options - Optional arguments for adding documents\n * @returns Promise that resolves when the documents have been added.\n */\n addDocuments(documents: Document[], options?: {\n ids?: string[];\n }): Promise<void>;\n private loadCollectionId;\n /**\n * Method to add vectors to the vector store. It converts the vectors into\n * rows and inserts them into the database.\n *\n * @param vectors - Array of vectors.\n * @param documents - Array of `Document` instances.\n * @param options - Optional arguments for adding documents\n * @returns Promise that resolves when the vectors have been added.\n */\n addVectors(vectors: number[][], documents: Document[], options?: {\n ids?: string[];\n }): Promise<void>;\n /**\n * Convert float array to binary value\n * @param vector embedding value\n * @private\n */\n private getFloat32Buffer;\n /**\n * Method to delete documents from the vector store. It deletes the\n * documents that match the provided ids\n *\n * @param ids - array of ids\n * @returns Promise that resolves when the documents have been deleted.\n * @example\n * await vectorStore.delete([\"id1\", \"id2\"]);\n */\n delete(params: {\n ids?: string[];\n filter?: Record<string, unknown>;\n }): Promise<void>;\n private filterConverter;\n private subFilterConverter;\n /**\n * Method to perform a similarity search in the vector store. It returns\n * the `k` most similar documents to the query vector, along with their\n * similarity scores.\n *\n * @param query - Query vector.\n * @param k - Number of most similar documents to return.\n * @param filter - Optional filter to apply to the search.\n * @returns Promise that resolves with an array of tuples, each containing a `Document` and its similarity score.\n */\n similaritySearchVectorWithScore(query: number[], k: number, filter?: Record<string, unknown>): Promise<[Document, number][]>;\n /**\n * Method to ensure the existence of the table in the database. It creates\n * the table if it does not already exist.\n * @param dimensions Number of dimensions in your vector data type. Default to 1536.\n * @returns Promise that resolves when the table has been ensured.\n */\n ensureTableInDatabase(dimensions?: number): Promise<void>;\n /**\n * Method to ensure the existence of the collection table in the database.\n * It creates the table if it does not already exist.\n *\n * @returns Promise that resolves when the collection table has been ensured.\n */\n ensureCollectionTableInDatabase(): Promise<void>;\n /**\n * Close the pool.\n *\n * @returns Promise that resolves when the pool is terminated.\n */\n end(): Promise<void>;\n}\nexport {};\n//# sourceMappingURL=mariadb.d.ts.map"],"mappings":";;;;;;KAIKK,QAAAA,GAAWC;KACJC,gBAAAA;AAFyC;AAErD;AAMA;;;AAMyBF,UANRG,gBAAAA,CAMQH;EAgBFE,iBAAAA,CAAAA,EArBCN,UAqBDM;EAAgB,IAAA,CAAA,EApB5BP,IAoB4B;EAqJlBS,SAAAA,CAAAA,EAAAA,MAAY;EAKTJ,mBAAAA,CAAAA,EAAAA,MAAAA;EAOdL,cAAAA,CAAAA,EAAAA,MAAAA;EAEYO,kBAAAA,CAAAA,EAnLGF,QAmLHE,GAAAA,IAAAA;EACMJ,UAAAA,CAAAA,EAAAA,MAAAA,GAAAA,IAAAA;EAA6BK,OAAAA,CAAAA,EAAAA;IAqBvBL,YAAAA,CAAAA,EAAAA,MAAAA;IAA6BK,gBAAAA,CAAAA,EAAAA,MAAAA;IAE/CC,iBAAAA,CAAAA,EAAAA,MAAAA;IAARC,kBAAAA,CAAAA,EAAAA,MAAAA;EAYwEP,CAAAA;EAA+BK,OAAAA,CAAAA,EAAAA,OAAAA;EAE/FC;;;;;EAYAA,SAAAA,CAAAA,EAAAA,MAAAA;EAARC,GAAAA,CAAAA,EAAAA,MAAAA,EAAAA;EAUoBN,gBAAAA,CAAAA,EA/NLG,gBA+NKH;;;;;;;;;;;;;AA1EyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAhCK,YAAAA,SAAqBP,WAAAA;;;;;sBAKlBG;;;;;;;QAOdL;;oBAEYO;0BACMJ,6BAA6BK;;;;;;;;;;;;;;;;;;;;;gCAqBvBL,6BAA6BK;;MAEvDE,QAAQD;;;;;;;;;;;;8EAYgEN,+BAA+BK;;MAEvGE,QAAQD;;;;;;;;;;6BAUeL,wBAAwBD,+BAA+BK;;MAE9EE,QAAQD;;;;;;;;;;0BAUYL;;MAEpBM;;;;;;;;;;;6CAWuCN;;MAEvCM;;;;;;;;;;;;;;;;;;aAkBSJ;MACTI;;;;;;;;;;;;;uEAaiEJ,0BAA0BI,SAASN;;;;;;;8CAO5DM;;;;;;;qCAOTA;;;;;;SAM5BA"}