@jackhua/mini-langchain
Version:
A lightweight TypeScript implementation of LangChain with cost optimization features
101 lines • 2.82 kB
TypeScript
/**
* Base vector store interface and implementations
*/
import { Document } from '../core/types';
/**
* Vector store search type
*/
export declare enum VectorStoreSearchType {
SIMILARITY = "similarity",
MMR = "mmr"
}
/**
* Search parameters for vector stores
*/
export interface VectorStoreSearchParams {
k?: number;
filter?: Record<string, any>;
fetchK?: number;
lambda?: number;
}
/**
* Vector with metadata
*/
export interface Vector {
id: string;
values: number[];
metadata?: Record<string, any>;
}
/**
* Embeddings interface
*/
export interface Embeddings {
/**
* Embed a single text
*/
embedQuery(text: string): Promise<number[]>;
/**
* Embed multiple texts
*/
embedDocuments(texts: string[]): Promise<number[][]>;
}
/**
* Base vector store interface
*/
export declare abstract class VectorStore {
protected embeddings: Embeddings;
constructor(embeddings: Embeddings);
/**
* Add documents to the vector store
*/
abstract addDocuments(documents: Document[]): Promise<string[]>;
/**
* Add vectors directly
*/
abstract addVectors(vectors: number[][], documents: Document[]): Promise<string[]>;
/**
* Similarity search
*/
abstract similaritySearch(query: string, k?: number, filter?: Record<string, any>): Promise<Document[]>;
/**
* Similarity search with score
*/
abstract similaritySearchWithScore(query: string, k?: number, filter?: Record<string, any>): Promise<[Document, number][]>;
/**
* Similarity search by vector
*/
abstract similaritySearchVectorWithScore(query: number[], k: number, filter?: Record<string, any>): Promise<[Document, number][]>;
/**
* Delete documents
*/
abstract delete(params?: {
ids?: string[];
filter?: Record<string, any>;
}): Promise<void>;
/**
* Create index if needed (optional)
*/
ensureIndex?(): Promise<void>;
/**
* Max marginal relevance search
*/
maxMarginalRelevanceSearch(query: string, options?: {
k?: number;
fetchK?: number;
lambda?: number;
filter?: Record<string, any>;
}): Promise<Document[]>;
/**
* Calculate diversity between two documents
*/
protected calculateDiversity(doc1: Document, doc2: Document): number;
/**
* Create vector store from texts
*/
static fromTexts(texts: string[], metadatas: Record<string, any>[] | Record<string, any>, embeddings: Embeddings, dbConfig?: Record<string, any>): Promise<VectorStore>;
/**
* Create vector store from documents
*/
static fromDocuments(docs: Document[], embeddings: Embeddings, dbConfig?: Record<string, any>): Promise<VectorStore>;
}
//# sourceMappingURL=base.d.ts.map