import type { createCluster, createClient } from "redis"; import { VectorAlgorithms } from "redis"; import type { EmbeddingsInterface } from "@langchain/core/embeddings"; import { VectorStore } from "@langchain/core/vectorstores"; import { Document } from "@langchain/core/documents"; /** * @deprecated Install and import from the "@langchain/redis" integration package instead. * Type for creating a schema vector field. It includes the algorithm, * distance metric, and initial capacity. */ export type CreateSchemaVectorField> = { ALGORITHM: T; DISTANCE_METRIC: "L2" | "IP" | "COSINE"; INITIAL_CAP?: number; } & A; /** * @deprecated Install and import from the "@langchain/redis" integration package instead. * Type for creating a flat schema vector field. It extends * CreateSchemaVectorField with a block size property. */ export type CreateSchemaFlatVectorField = CreateSchemaVectorField; /** * @deprecated Install and import from the "@langchain/redis" integration package instead. * Type for creating a HNSW schema vector field. It extends * CreateSchemaVectorField with M, EF_CONSTRUCTION, and EF_RUNTIME * properties. */ export type CreateSchemaHNSWVectorField = CreateSchemaVectorField; type CreateIndexOptions = NonNullable["ft"]["create"]>[3]>; /** @deprecated Install and import from the "@langchain/redis" integration package instead. */ export type RedisSearchLanguages = `${NonNullable}`; /** @deprecated Install and import from the "@langchain/redis" integration package instead. */ export type RedisVectorStoreIndexOptions = Omit & { LANGUAGE?: RedisSearchLanguages; }; /** * @deprecated Install and import from the "@langchain/redis" integration package instead. * Interface for the configuration of the RedisVectorStore. It includes * the Redis client, index name, index options, key prefix, content key, * metadata key, vector key, and filter. */ export interface RedisVectorStoreConfig { redisClient: ReturnType | ReturnType; indexName: string; indexOptions?: CreateSchemaFlatVectorField | CreateSchemaHNSWVectorField; createIndexOptions?: Omit; keyPrefix?: string; contentKey?: string; metadataKey?: string; vectorKey?: string; filter?: RedisVectorStoreFilterType; } /** * @deprecated Install and import from the "@langchain/redis" integration package instead. * Interface for the options when adding documents to the * RedisVectorStore. It includes keys and batch size. */ export interface RedisAddOptions { keys?: string[]; batchSize?: number; } /** * @deprecated Install and import from the "@langchain/redis" integration package instead. * Type for the filter used in the RedisVectorStore. It is an array of * strings. */ export type RedisVectorStoreFilterType = string[]; /** * @deprecated Install and import from the "@langchain/redis" integration package instead. * Class representing a RedisVectorStore. It extends the VectorStore class * and includes methods for adding documents and vectors, performing * similarity searches, managing the index, and more. */ export declare class RedisVectorStore extends VectorStore { FilterType: RedisVectorStoreFilterType; private redisClient; indexName: string; indexOptions: CreateSchemaFlatVectorField | CreateSchemaHNSWVectorField; createIndexOptions: CreateIndexOptions; keyPrefix: string; contentKey: string; metadataKey: string; vectorKey: string; filter?: RedisVectorStoreFilterType; _vectorstoreType(): string; constructor(embeddings: EmbeddingsInterface, _dbConfig: RedisVectorStoreConfig); /** * Method for adding documents to the RedisVectorStore. It first converts * the documents to texts and then adds them as vectors. * @param documents The documents to add. * @param options Optional parameters for adding the documents. * @returns A promise that resolves when the documents have been added. */ addDocuments(documents: Document[], options?: RedisAddOptions): Promise; /** * Method for adding vectors to the RedisVectorStore. It checks if the * index exists and creates it if it doesn't, then adds the vectors in * batches. * @param vectors The vectors to add. * @param documents The documents associated with the vectors. * @param keys Optional keys for the vectors. * @param batchSize The size of the batches in which to add the vectors. Defaults to 1000. * @returns A promise that resolves when the vectors have been added. */ addVectors(vectors: number[][], documents: Document[], { keys, batchSize }?: RedisAddOptions): Promise; /** * Method for performing a similarity search in the RedisVectorStore. It * returns the documents and their scores. * @param query The query vector. * @param k The number of nearest neighbors to return. * @param filter Optional filter to apply to the search. * @returns A promise that resolves to an array of documents and their scores. */ similaritySearchVectorWithScore(query: number[], k: number, filter?: RedisVectorStoreFilterType): Promise<[Document, number][]>; /** * Static method for creating a new instance of RedisVectorStore from * texts. It creates documents from the texts and metadata, then adds them * to the RedisVectorStore. * @param texts The texts to add. * @param metadatas The metadata associated with the texts. * @param embeddings The embeddings to use. * @param dbConfig The configuration for the RedisVectorStore. * @returns A promise that resolves to a new instance of RedisVectorStore. */ static fromTexts(texts: string[], metadatas: object[] | object, embeddings: EmbeddingsInterface, dbConfig: RedisVectorStoreConfig): Promise; /** * Static method for creating a new instance of RedisVectorStore from * documents. It adds the documents to the RedisVectorStore. * @param docs The documents to add. * @param embeddings The embeddings to use. * @param dbConfig The configuration for the RedisVectorStore. * @returns A promise that resolves to a new instance of RedisVectorStore. */ static fromDocuments(docs: Document[], embeddings: EmbeddingsInterface, dbConfig: RedisVectorStoreConfig): Promise; /** * Method for checking if an index exists in the RedisVectorStore. * @returns A promise that resolves to a boolean indicating whether the index exists. */ checkIndexExists(): Promise; /** * Method for creating an index in the RedisVectorStore. If the index * already exists, it does nothing. * @param dimensions The dimensions of the index * @returns A promise that resolves when the index has been created. */ createIndex(dimensions?: number): Promise; /** * Method for dropping an index from the RedisVectorStore. * @param deleteDocuments Optional boolean indicating whether to drop the associated documents. * @returns A promise that resolves to a boolean indicating whether the index was dropped. */ dropIndex(deleteDocuments?: boolean): Promise; /** * Deletes vectors from the vector store. * @param params The parameters for deleting vectors. * @returns A promise that resolves when the vectors have been deleted. */ delete(params: { deleteAll: boolean; }): Promise; private buildQuery; private prepareFilter; /** * Escapes all '-' characters. * RediSearch considers '-' as a negative operator, hence we need * to escape it * @see https://redis.io/docs/stack/search/reference/query_syntax * * @param str * @returns */ private escapeSpecialChars; /** * Unescapes all '-' characters, returning the original string * * @param str * @returns */ private unEscapeSpecialChars; /** * Converts the vector to the buffer Redis needs to * correctly store an embedding * * @param vector * @returns Buffer */ private getFloat32Buffer; } export {};