Momento Vector Index (MVI)
MVI:您数据的最高产、最易用的无服务器向量索引。要开始使用 MVI,只需注册一个账户即可。无需处理基础设施、管理服务器,也无需担心扩展问题。MVI 是一项可自动扩展以满足您需求的服务。无论是在 Node.js、浏览器还是边缘环境中,Momento 都能为您提供支持。
要注册并访问 MVI,请访问 Momento 控制台。
配置
在 Momento 控制台中注册一个 API 密钥。
为您的环境安装 SDK。
2.1 对于 Node.js:
- npm
- Yarn
- pnpm
npm install @gomomento/sdkyarn add @gomomento/sdkpnpm add @gomomento/sdk2.2 对于 浏览器或边缘环境:
- npm
- Yarn
- pnpm
npm install @gomomento/sdk-webyarn add @gomomento/sdk-webpnpm add @gomomento/sdk-web在运行代码前为 Momento 设置环境变量
3.1 OpenAI
export OPENAI_API_KEY=YOUR_OPENAI_API_KEY_HERE3.2 Momento
export MOMENTO_API_KEY=YOUR_MOMENTO_API_KEY_HERE # https://console.gomomento.com
使用方法
:::提示 请参阅安装集成包的一般说明部分。 :::
- npm
- Yarn
- pnpm
npm install @langchain/openai @langchain/community @langchain/core
yarn add @langchain/openai @langchain/community @langchain/core
pnpm add @langchain/openai @langchain/community @langchain/core
使用 fromTexts 方法索引文档并进行搜索
此示例演示了如何使用 fromTexts 方法实例化向量存储并索引文档。
如果索引不存在,则会创建它。如果索引已存在,则会将文档添加到现有索引中。
ids 是可选的;如果您省略它们,Momento 会为您生成 UUID。
import { MomentoVectorIndex } from "@langchain/community/vectorstores/momento_vector_index";
// For browser/edge, adjust this to import from "@gomomento/sdk-web";
import {
PreviewVectorIndexClient,
VectorIndexConfigurations,
CredentialProvider,
} from "@gomomento/sdk";
import { OpenAIEmbeddings } from "@langchain/openai";
import { sleep } from "langchain/util/time";
const vectorStore = await MomentoVectorIndex.fromTexts(
["hello world", "goodbye world", "salutations world", "farewell world"],
{},
new OpenAIEmbeddings(),
{
client: new PreviewVectorIndexClient({
configuration: VectorIndexConfigurations.Laptop.latest(),
credentialProvider: CredentialProvider.fromEnvironmentVariable({
environmentVariableName: "MOMENTO_API_KEY",
}),
}),
indexName: "langchain-example-index",
},
{ ids: ["1", "2", "3", "4"] }
);
// because indexing is async, wait for it to finish to search directly after
await sleep();
const response = await vectorStore.similaritySearch("hello", 2);
console.log(response);
/*
[
Document { pageContent: 'hello world', metadata: {} },
Document { pageContent: 'salutations world', metadata: {} }
]
*/
API Reference:
- MomentoVectorIndex from
@langchain/community/vectorstores/momento_vector_index - OpenAIEmbeddings from
@langchain/openai - sleep from
langchain/util/time
使用 fromDocuments 方法索引文档并进行搜索
与上述类似,此示例演示了如何使用 fromDocuments 方法实例化向量存储并索引文档。
如果索引不存在,则会创建它。如果索引已存在,则会将文档添加到现有索引中。
使用 fromDocuments 可以将各种文档加载器与索引无缝连接起来。
import { MomentoVectorIndex } from "@langchain/community/vectorstores/momento_vector_index";
// For browser/edge, adjust this to import from "@gomomento/sdk-web";
import {
PreviewVectorIndexClient,
VectorIndexConfigurations,
CredentialProvider,
} from "@gomomento/sdk";
import { OpenAIEmbeddings } from "@langchain/openai";
import { TextLoader } from "langchain/document_loaders/fs/text";
import { sleep } from "langchain/util/time";
// Create docs with a loader
const loader = new TextLoader("src/document_loaders/example_data/example.txt");
const docs = await loader.load();
const vectorStore = await MomentoVectorIndex.fromDocuments(
docs,
new OpenAIEmbeddings(),
{
client: new PreviewVectorIndexClient({
configuration: VectorIndexConfigurations.Laptop.latest(),
credentialProvider: CredentialProvider.fromEnvironmentVariable({
environmentVariableName: "MOMENTO_API_KEY",
}),
}),
indexName: "langchain-example-index",
}
);
// because indexing is async, wait for it to finish to search directly after
await sleep();
// Search for the most similar document
const response = await vectorStore.similaritySearch("hello", 1);
console.log(response);
/*
[
Document {
pageContent: 'Foo\nBar\nBaz\n\n',
metadata: { source: 'src/document_loaders/example_data/example.txt' }
}
]
*/
API Reference:
- MomentoVectorIndex from
@langchain/community/vectorstores/momento_vector_index - OpenAIEmbeddings from
@langchain/openai - TextLoader from
langchain/document_loaders/fs/text - sleep from
langchain/util/time
从现有集合中搜索
import { MomentoVectorIndex } from "@langchain/community/vectorstores/momento_vector_index";
// For browser/edge, adjust this to import from "@gomomento/sdk-web";
import {
PreviewVectorIndexClient,
VectorIndexConfigurations,
CredentialProvider,
} from "@gomomento/sdk";
import { OpenAIEmbeddings } from "@langchain/openai";
const vectorStore = new MomentoVectorIndex(new OpenAIEmbeddings(), {
client: new PreviewVectorIndexClient({
configuration: VectorIndexConfigurations.Laptop.latest(),
credentialProvider: CredentialProvider.fromEnvironmentVariable({
environmentVariableName: "MOMENTO_API_KEY",
}),
}),
indexName: "langchain-example-index",
});
const response = await vectorStore.similaritySearch("hello", 1);
console.log(response);
/*
[
Document {
pageContent: 'Foo\nBar\nBaz\n\n',
metadata: { source: 'src/document_loaders/example_data/example.txt' }
}
]
*/
API Reference:
- MomentoVectorIndex from
@langchain/community/vectorstores/momento_vector_index - OpenAIEmbeddings from
@langchain/openai
相关内容
Related
- Vector store conceptual guide
- Vector store how-to guides