概述
一个 向量存储 存储了 嵌入 数据,并执行相似性搜索。接口
LangChain 提供了一个统一的向量存储接口,允许你:addDocuments- 向存储中添加文档。delete- 通过 ID 删除存储的文档。similaritySearch- 查询语义相似的文档。
初始化
LangChain 中的大多数向量存储在初始化向量存储时接受一个嵌入模型作为参数。import { OpenAIEmbeddings } from "@langchain/openai";
import { MemoryVectorStore } from "@langchain/classic/vectorstores/memory";
const embeddings = new OpenAIEmbeddings({
model: "text-embedding-3-small",
});
const vectorStore = new MemoryVectorStore(embeddings);
添加文档
你可以通过使用addDocuments 函数向向量存储中添加文档。
import { Document } from "@langchain/core/documents";
const document = new Document({
pageContent: "Hello world",
});
await vectorStore.addDocuments([document]);
删除文档
你可以通过使用delete 函数从向量存储中删除文档。
await vectorStore.delete({
filter: {
pageContent: "Hello world",
},
});
相似性搜索
使用similaritySearch 发起语义查询,它将返回最接近的嵌入文档:
const results = await vectorStore.similaritySearch("Hello world", 10);
k— 返回的结果数量filter— 基于元数据的条件过滤
相似性指标与索引
嵌入相似性可能使用以下方法计算:- 余弦相似度
- 欧几里得距离
- 点积
元数据过滤
通过元数据(例如,来源、日期)过滤可以细化搜索结果:vectorStore.similaritySearch("query", 2, { source: "tweets" });
顶级集成
选择嵌入模型:OpenAI
OpenAI
安装依赖项:添加环境变量:实例化模型:
npm install @langchain/openai @langchain/core
yarn add @langchain/openai @langchain/core
pnpm add @langchain/openai @langchain/core
OPENAI_API_KEY=your-api-key
import { OpenAIEmbeddings } from "@langchain/openai";
const embeddings = new OpenAIEmbeddings({
model: "text-embedding-3-large"
});
Azure
Azure
安装依赖项添加环境变量:实例化模型:
npm install @langchain/openai @langchain/core
yarn add @langchain/openai @langchain/core
pnpm add @langchain/openai @langchain/core
AZURE_OPENAI_API_INSTANCE_NAME=<YOUR_INSTANCE_NAME>
AZURE_OPENAI_API_KEY=<YOUR_KEY>
AZURE_OPENAI_API_VERSION="2024-02-01"
import { AzureOpenAIEmbeddings } from "@langchain/openai";
const embeddings = new AzureOpenAIEmbeddings({
azureOpenAIApiEmbeddingsDeploymentName: "text-embedding-ada-002"
});
AWS
AWS
安装依赖项:添加环境变量:实例化模型:
npm i @langchain/aws
yarn add @langchain/aws
pnpm add @langchain/aws
BEDROCK_AWS_REGION=your-region
import { BedrockEmbeddings } from "@langchain/aws";
const embeddings = new BedrockEmbeddings({
model: "amazon.titan-embed-text-v1"
});
Google Gemini
Google Gemini
安装依赖项:添加环境变量:实例化模型:
npm i @langchain/google-genai
yarn add @langchain/google-genai
pnpm add @langchain/google-genai
GOOGLE_API_KEY=your-api-key
import { GoogleGenerativeAIEmbeddings } from "@langchain/google-genai";
const embeddings = new GoogleGenerativeAIEmbeddings({
model: "gemini-embedding-001"
});
Gemini Enterprise Agent Platform
Gemini Enterprise Agent Platform
安装依赖项:添加环境变量:实例化模型:
npm i @langchain/google-vertexai
yarn add @langchain/google-vertexai
pnpm add @langchain/google-vertexai
GOOGLE_APPLICATION_CREDENTIALS=credentials.json
import { VertexAIEmbeddings } from "@langchain/google-vertexai";
const embeddings = new VertexAIEmbeddings({
model: "gemini-embedding-001"
});
MistralAI
MistralAI
安装依赖:添加环境变量:实例化模型:
npm install @langchain/mistralai @langchain/core
yarn add @langchain/mistralai @langchain/core
pnpm add @langchain/mistralai @langchain/core
MISTRAL_API_KEY=your-api-key
import { MistralAIEmbeddings } from "@langchain/mistralai";
const embeddings = new MistralAIEmbeddings({
model: "mistral-embed"
});
Cohere
Cohere
安装依赖:添加环境变量:实例化模型:
npm i @langchain/cohere
yarn add @langchain/cohere
pnpm add @langchain/cohere
COHERE_API_KEY=your-api-key
import { CohereEmbeddings } from "@langchain/cohere";
const embeddings = new CohereEmbeddings({
model: "embed-english-v3.0"
});
Ollama
Ollama
安装依赖:实例化模型:
npm install @langchain/ollama @langchain/core
yarn add @langchain/ollama @langchain/core
pnpm add @langchain/ollama @langchain/core
import { OllamaEmbeddings } from "@langchain/ollama";
const embeddings = new OllamaEmbeddings({
model: "llama2",
baseUrl: "http://localhost:11434", // Default value
});
Voyage AI
Voyage AI
安装依赖:添加环境变量:实例化模型:
npm install @langchain/mongodb @langchain/core
yarn add @langchain/mongodb @langchain/core
pnpm add @langchain/mongodb @langchain/core
VOYAGE_API_KEY=your-api-key
import { VoyageEmbeddings } from "@langchain/mongodb";
const embeddings = new VoyageEmbeddings({
model: "voyage-4"
});
Memory
Memory
npm i langchain
yarn add langchain
pnpm add langchain
import { MemoryVectorStore } from "@langchain/classic/vectorstores/memory";
const vectorStore = new MemoryVectorStore(embeddings);
MongoDB
MongoDB
- Manual embedding
- Automated embedding
npm install @langchain/mongodb mongodb @langchain/core
yarn add @langchain/mongodb mongodb @langchain/core
pnpm add @langchain/mongodb mongodb @langchain/core
import { MongoDBAtlasVectorSearch } from "@langchain/mongodb"
import { MongoClient } from "mongodb";
const client = new MongoClient(process.env.MONGODB_ATLAS_URI!);
const collection = client
.db(process.env.MONGODB_ATLAS_DB_NAME)
.collection(process.env.MONGODB_ATLAS_COLLECTION_NAME);
const vectorStore = new MongoDBAtlasVectorSearch(embeddings, {
collection,
indexName: "vector_index",
textKey: "text",
embeddingKey: "embedding",
});
npm install @langchain/mongodb mongodb @langchain/core
yarn add @langchain/mongodb mongodb @langchain/core
pnpm add @langchain/mongodb mongodb @langchain/core
import { MongoDBAtlasVectorSearch } from "@langchain/mongodb"
import { MongoClient } from "mongodb";
const client = new MongoClient(process.env.MONGODB_ATLAS_URI!);
const collection = client
.db(process.env.MONGODB_ATLAS_DB_NAME)
.collection(process.env.MONGODB_ATLAS_COLLECTION_NAME);
const vectorStore = new MongoDBAtlasVectorSearch({ collection });
Pinecone
Pinecone
npm install @langchain/pinecone @langchain/core @pinecone-database/pinecone
yarn add @langchain/pinecone @langchain/core @pinecone-database/pinecone
pnpm add @langchain/pinecone @langchain/core @pinecone-database/pinecone
import { PineconeStore } from "@langchain/pinecone";
import { Pinecone as PineconeClient } from "@pinecone-database/pinecone";
const pinecone = new PineconeClient();
const vectorStore = new PineconeStore(embeddings, {
pineconeIndex,
maxConcurrency: 5,
});
Redis
Redis
npm install @langchain/redis @langchain/core redis
yarn add @langchain/redis @langchain/core redis
pnpm add @langchain/redis @langchain/core redis
import { RedisVectorStore } from "@langchain/redis";
const vectorStore = new RedisVectorStore(embeddings, {
redisClient: client,
indexName: "langchainjs-testing",
});
Qdrant
Qdrant
npm install @langchain/qdrant @langchain/core
yarn add @langchain/qdrant @langchain/core
pnpm add @langchain/qdrant @langchain/core
import { QdrantVectorStore } from "@langchain/qdrant";
const vectorStore = await QdrantVectorStore.fromExistingCollection(embeddings, {
url: process.env.QDRANT_URL,
collectionName: "langchainjs-testing",
});
Oracle AI Database
Oracle AI Database
npm i @oracle/langchain-oracledb @langchain/core
yarn add @oracle/langchain-oracledb @langchain/core
pnpm add @oracle/langchain-oracledb @langchain/core
import oracledb from "oracledb";
import { OracleEmbeddings, OracleVS } from "@oracle/langchain-oracledb";
const connection = await oracledb.getConnection({
user: process.env.ORACLE_USER,
password: process.env.ORACLE_PASSWORD,
connectionString: process.env.ORACLE_DSN,
});
const embeddings = new OracleEmbeddings(connection, {
provider: "database",
model: process.env.DEMO_ONNX_MODEL ?? "DEMO_MODEL",
});
const vectorStore = new OracleVS(embeddings, {
client: connection,
tableName: "DEMO_VECTORS",
query: "Find support tickets mentioning service outages.",
distanceStrategy: "DOT",
});
await vectorStore.initialize();
Weaviate
Weaviate
npm install @langchain/weaviate @langchain/core weaviate-client
yarn add @langchain/weaviate @langchain/core weaviate-client
pnpm add @langchain/weaviate @langchain/core weaviate-client
import { WeaviateStore } from "@langchain/weaviate";
const vectorStore = new WeaviateStore(embeddings, {
client: weaviateClient,
indexName: "Langchainjs_test",
});
所有向量存储
官方原文:src/oss/javascript/integrations/vectorstores/index.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。