import type { IndexFlatL2 } from "faiss-node"; import type { NameRegistry, Parser } from "pickleparser"; import type { EmbeddingsInterface } from "@langchain/core/embeddings"; import { SaveableVectorStore } from "@langchain/core/vectorstores"; import { Document } from "@langchain/core/documents"; import { SynchronousInMemoryDocstore } from "../stores/doc/in_memory.js"; /** * Interface for the arguments required to initialize a FaissStore * instance. */ export interface FaissLibArgs { docstore?: SynchronousInMemoryDocstore; index?: IndexFlatL2; mapping?: Record; } /** * A class that wraps the FAISS (Facebook AI Similarity Search) vector * database for efficient similarity search and clustering of dense * vectors. */ export declare class FaissStore extends SaveableVectorStore { _index?: IndexFlatL2; _mapping: Record; docstore: SynchronousInMemoryDocstore; args: FaissLibArgs; _vectorstoreType(): string; getMapping(): Record; getDocstore(): SynchronousInMemoryDocstore; constructor(embeddings: EmbeddingsInterface, args: FaissLibArgs); /** * Adds an array of Document objects to the store. * @param documents An array of Document objects. * @returns A Promise that resolves when the documents have been added. */ addDocuments(documents: Document[], options?: { ids?: string[]; }): Promise; get index(): IndexFlatL2; private set index(value); /** * Adds an array of vectors and their corresponding Document objects to * the store. * @param vectors An array of vectors. * @param documents An array of Document objects corresponding to the vectors. * @returns A Promise that resolves with an array of document IDs when the vectors and documents have been added. */ addVectors(vectors: number[][], documents: Document[], options?: { ids?: string[]; }): Promise; /** * Performs a similarity search in the vector store using a query vector * and returns the top k results along with their scores. * @param query A query vector. * @param k The number of top results to return. * @returns A Promise that resolves with an array of tuples, each containing a Document and its corresponding score. */ similaritySearchVectorWithScore(query: number[], k: number): Promise<[Document>, number][]>; /** * Saves the current state of the FaissStore to a specified directory. * @param directory The directory to save the state to. * @returns A Promise that resolves when the state has been saved. */ save(directory: string): Promise; /** * Method to delete documents. * @param params Object containing the IDs of the documents to delete. * @returns A promise that resolves when the deletion is complete. */ delete(params: { ids: string[]; }): Promise; /** * Merges the current FaissStore with another FaissStore. * @param targetIndex The FaissStore to merge with. * @returns A Promise that resolves with an array of document IDs when the merge is complete. */ mergeFrom(targetIndex: FaissStore): Promise; /** * Loads a FaissStore from a specified directory. * @param directory The directory to load the FaissStore from. * @param embeddings An Embeddings object. * @returns A Promise that resolves with a new FaissStore instance. */ static load(directory: string, embeddings: EmbeddingsInterface): Promise; static loadFromPython(directory: string, embeddings: EmbeddingsInterface): Promise; /** * Creates a new FaissStore from an array of texts, their corresponding * metadata, and an Embeddings object. * @param texts An array of texts. * @param metadatas An array of metadata corresponding to the texts, or a single metadata object to be used for all texts. * @param embeddings An Embeddings object. * @param dbConfig An optional configuration object for the document store. * @returns A Promise that resolves with a new FaissStore instance. */ static fromTexts(texts: string[], metadatas: object[] | object, embeddings: EmbeddingsInterface, dbConfig?: { docstore?: SynchronousInMemoryDocstore; }): Promise; /** * Creates a new FaissStore from an array of Document objects and an * Embeddings object. * @param docs An array of Document objects. * @param embeddings An Embeddings object. * @param dbConfig An optional configuration object for the document store. * @returns A Promise that resolves with a new FaissStore instance. */ static fromDocuments(docs: Document[], embeddings: EmbeddingsInterface, dbConfig?: { docstore?: SynchronousInMemoryDocstore; }): Promise; /** * Creates a new FaissStore from an existing FaissStore and an Embeddings * object. * @param targetIndex An existing FaissStore. * @param embeddings An Embeddings object. * @param dbConfig An optional configuration object for the document store. * @returns A Promise that resolves with a new FaissStore instance. */ static fromIndex(targetIndex: FaissStore, embeddings: EmbeddingsInterface, dbConfig?: { docstore?: SynchronousInMemoryDocstore; }): Promise; static importFaiss(): Promise<{ IndexFlatL2: typeof IndexFlatL2; }>; static importPickleparser(): Promise<{ Parser: typeof Parser; NameRegistry: typeof NameRegistry; }>; }