UNPKG

@langchain/community

Version:
219 lines (217 loc) • 11.5 kB
import { Document } from "@langchain/core/documents"; import { EmbeddingsInterface } from "@langchain/core/embeddings"; import { VectorStore } from "@langchain/core/vectorstores"; import { Cluster } from "couchbase"; //#region src/vectorstores/couchbase_search.d.ts /** * This interface define the optional fields for adding vector * - `ids` - vector of ids for each document. If undefined, then uuid will be used * - `metadata` - vector of metadata object for each document */ interface AddVectorOptions { ids?: string[]; metadata?: Record<string, any>[]; } /** * This interface defines the fields required to initialize a vector store * These are the fields part of config: * @property {Cluster} cluster - The Couchbase cluster that the store will interact with. * @property {string} bucketName - The name of the bucket in the Couchbase cluster. * @property {string} scopeName - The name of the scope within the bucket. * @property {string} collectionName - The name of the collection within the scope. * @property {string} indexName - The name of the index to be used for vector search. * @property {string} textKey - The key to be used for text in the documents. Defaults to "text". * @property {string} embeddingKey - The key to be used for embeddings in the documents. Defaults to "embedding". * @property {boolean} scopedIndex - Whether to use a scoped index for vector search. Defaults to true. * @property {AddVectorOptions} addVectorOptions - Options for adding vectors with specific id/metadata */ interface CouchbaseSearchVectorStoreArgs { cluster: Cluster; bucketName: string; scopeName: string; collectionName: string; indexName: string; textKey?: string; embeddingKey?: string; scopedIndex?: boolean; addVectorOptions?: AddVectorOptions; } /** * This type defines the search filters used in couchbase vector search * - `fields`: Optional list of fields to include in the * metadata of results. Note that these need to be stored in the index. * If nothing is specified, defaults to all the fields stored in the index. * - `searchOptions`: Optional search options that are passed to Couchbase search. Defaults to empty object. */ type CouchbaseSearchVectorStoreFilter = { fields?: any; searchOptions?: any; }; /** * Class for interacting with the Couchbase database. It extends the * VectorStore class and provides methods for adding vectors and * documents, and searching for similar vectors. * Initiate the class using initialize() method. */ declare class CouchbaseSearchVectorStore extends VectorStore { FilterType: CouchbaseSearchVectorStoreFilter; private metadataKey; private readonly defaultTextKey; private readonly defaultScopedIndex; private readonly defaultEmbeddingKey; private cluster; private _bucket; private _scope; private _collection; private bucketName; private scopeName; private collectionName; private indexName; private textKey; private embeddingKey; private scopedIndex; /** * The private constructor used to provide embedding to parent class. * Initialize the class using static initialize() method * @param embedding - object to generate embedding * @param config - the fields required to initialize a vector store */ private constructor(); /** * initialize class for interacting with the Couchbase database. * It extends the VectorStore class and provides methods * for adding vectors and documents, and searching for similar vectors. * This also verifies the params * * @param embeddings - object to generate embedding * @param config - the fields required to initialize a vector store */ static initialize(embeddings: EmbeddingsInterface, config: CouchbaseSearchVectorStoreArgs): Promise<CouchbaseSearchVectorStore>; private checkIndexExists; private checkBucketExists; private checkScopeAndCollectionExists; _vectorstoreType(): string; /** * Formats couchbase metadata by removing `metadata.` from initials * @param fields - all the fields of row * @returns - formatted metadata fields */ private formatMetadata; /** * Performs a similarity search on the vectors in the Couchbase database and returns the documents and their corresponding scores. * * @param queryEmbeddings - Embedding vector to look up documents similar to. * @param k - Number of documents to return. Defaults to 4. * @param filter - Optional search filter that are passed to Couchbase search. Defaults to empty object. * - `fields`: Optional list of fields to include in the * metadata of results. Note that these need to be stored in the index. * If nothing is specified, defaults to all the fields stored in the index. * - `searchOptions`: Optional search options that are passed to Couchbase search. Defaults to empty object. * * @returns - Promise of list of [document, score] that are the most similar to the query vector. * * @throws If the search operation fails. */ similaritySearchVectorWithScore(queryEmbeddings: number[], k?: number, filter?: CouchbaseSearchVectorStoreFilter): Promise<[Document, number][]>; /** * Return documents that are most similar to the vector embedding. * * @param queryEmbeddings - Embedding to look up documents similar to. * @param k - The number of similar documents to return. Defaults to 4. * @param filter - Optional search filter that are passed to Couchbase search. Defaults to empty object. * - `fields`: Optional list of fields to include in the * metadata of results. Note that these need to be stored in the index. * If nothing is specified, defaults to all the fields stored in the index. * - `searchOptions`: Optional search options that are passed to Couchbase search. Defaults to empty object. * * @returns - A promise that resolves to an array of documents that match the similarity search. */ similaritySearchByVector(queryEmbeddings: number[], k?: number, filter?: CouchbaseSearchVectorStoreFilter): Promise<Document[]>; /** * Return documents that are most similar to the query. * * @param query - Query to look up for similar documents * @param k - The number of similar documents to return. Defaults to 4. * @param filter - Optional search filter that are passed to Couchbase search. Defaults to empty object. * - `fields`: Optional list of fields to include in the * metadata of results. Note that these need to be stored in the index. * If nothing is specified, defaults to all the fields stored in the index. * - `searchOptions`: Optional search options that are passed to Couchbase search. Defaults to empty object. * * @returns - Promise of list of documents that are most similar to the query. */ similaritySearch(query: string, k?: number, filter?: CouchbaseSearchVectorStoreFilter): Promise<Document[]>; /** * Return documents that are most similar to the query with their scores. * * @param query - Query to look up for similar documents * @param k - The number of similar documents to return. Defaults to 4. * @param filter - Optional search filter that are passed to Couchbase search. Defaults to empty object. * - `fields`: Optional list of fields to include in the * metadata of results. Note that these need to be stored in the index. * If nothing is specified, defaults to all the fields stored in the index. * - `searchOptions`: Optional search options that are passed to Couchbase search. Defaults to empty object. * * @returns - Promise of list of documents that are most similar to the query. */ similaritySearchWithScore(query: string, k?: number, filter?: CouchbaseSearchVectorStoreFilter): Promise<[Document, number][]>; private upsertDocuments; /** * Add vectors and corresponding documents to a couchbase collection * If the document IDs are passed, the existing documents (if any) will be * overwritten with the new ones. * @param vectors - The vectors to be added to the collection. * @param documents - The corresponding documents to be added to the collection. * @param options - Optional parameters for adding vectors. * This may include the IDs and metadata of the documents to be added. Defaults to an empty object. * * @returns - A promise that resolves to an array of document IDs that were added to the collection. */ addVectors(vectors: number[][], documents: Document[], options?: AddVectorOptions): Promise<string[]>; /** * Run texts through the embeddings and persist in vectorstore. * If the document IDs are passed, the existing documents (if any) will be * overwritten with the new ones. * @param documents - The corresponding documents to be added to the collection. * @param options - Optional parameters for adding documents. * This may include the IDs and metadata of the documents to be added. Defaults to an empty object. * * @returns - A promise that resolves to an array of document IDs that were added to the collection. */ addDocuments(documents: Document[], options?: AddVectorOptions): Promise<string[]>; /** * Create a new CouchbaseVectorStore from a set of documents. * This function will initialize a new store, add the documents to it, and then return the store. * @param documents - The documents to be added to the new store. * @param embeddings - The embeddings to be used for the documents. * @param config - The configuration for the new CouchbaseVectorStore. This includes the options for adding vectors. * * @returns - A promise that resolves to the new CouchbaseVectorStore that contains the added documents. */ static fromDocuments(documents: Document[], embeddings: EmbeddingsInterface, config: CouchbaseSearchVectorStoreArgs): Promise<CouchbaseSearchVectorStore>; /** * Create a new CouchbaseVectorStore from a set of texts. * This function will convert each text and its corresponding metadata into a Document, * initialize a new store, add the documents to it, and then return the store. * @param texts - The texts to be converted into Documents and added to the new store. * @param metadatas - The metadata for each text. If an array is passed, each text will have its corresponding metadata. * If not, all texts will have the same metadata. * @param embeddings - The embeddings to be used for the documents. * @param config - The configuration for the new CouchbaseVectorStore. This includes the options for adding vectors. * * @returns - A promise that resolves to the new CouchbaseVectorStore that contains the added documents. */ static fromTexts(texts: string[], metadatas: any, embeddings: EmbeddingsInterface, config: CouchbaseSearchVectorStoreArgs): Promise<CouchbaseSearchVectorStore>; /** * Delete documents asynchronously from the collection. * This function will attempt to remove each document in the provided list of IDs from the collection. * If an error occurs during the deletion of a document, an error will be thrown with the ID of the document and the error message. * @param ids - An array of document IDs to be deleted from the collection. * * @returns - A promise that resolves when all documents have been attempted to be deleted. If a document could not be deleted, an error is thrown. */ delete(ids: string[]): Promise<void>; } //#endregion export { AddVectorOptions, CouchbaseSearchVectorStore, CouchbaseSearchVectorStoreArgs }; //# sourceMappingURL=couchbase_search.d.ts.map