Convex
LangChain.js 支持将 Convex 作为 向量存储,并支持标准相似性搜索。
¥LangChain.js supports Convex as a vector store, and supports the standard similarity search.
设置
¥Setup
创建项目
¥Create project
设置一个可运行的 Convex 项目,例如使用以下方法:
¥Get a working Convex project set up, for example by using:
npm create convex@latest
添加数据库访问器
¥Add database accessors
向 convex/langchain/db.ts
添加查询和变异助手:
¥Add query and mutation helpers to convex/langchain/db.ts
:
convex/langchain/db.ts
export * from "@langchain/community/utils/convex";
配置你的模式
¥Configure your schema
设置模式(用于向量索引):
¥Set up your schema (for vector indexing):
convex/schema.ts
import { defineSchema, defineTable } from "convex/server";
import { v } from "convex/values";
export default defineSchema({
documents: defineTable({
embedding: v.array(v.number()),
text: v.string(),
metadata: v.any(),
}).vectorIndex("byEmbedding", {
vectorField: "embedding",
dimensions: 1536,
}),
});
用法
¥Usage
tip
- 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
提取
¥Ingestion
convex/myActions.ts
"use node";
import { ConvexVectorStore } from "@langchain/community/vectorstores/convex";
import { OpenAIEmbeddings } from "@langchain/openai";
import { action } from "./_generated/server.js";
export const ingest = action({
args: {},
handler: async (ctx) => {
await ConvexVectorStore.fromTexts(
["Hello world", "Bye bye", "What's this?"],
[{ prop: 2 }, { prop: 1 }, { prop: 3 }],
new OpenAIEmbeddings(),
{ ctx }
);
},
});
API Reference:
- ConvexVectorStore from
@langchain/community/vectorstores/convex
- OpenAIEmbeddings from
@langchain/openai
搜索
¥Search
convex/myActions.ts
"use node";
import { ConvexVectorStore } from "@langchain/community/vectorstores/convex";
import { OpenAIEmbeddings } from "@langchain/openai";
import { v } from "convex/values";
import { action } from "./_generated/server.js";
export const search = action({
args: {
query: v.string(),
},
handler: async (ctx, args) => {
const vectorStore = new ConvexVectorStore(new OpenAIEmbeddings(), { ctx });
const resultOne = await vectorStore.similaritySearch(args.query, 1);
console.log(resultOne);
},
});
API Reference:
- ConvexVectorStore from
@langchain/community/vectorstores/convex
- OpenAIEmbeddings from
@langchain/openai
相关
¥Related
向量存储 概念指南
¥Vector store conceptual guide
向量存储 操作指南
¥Vector store how-to guides