Cloudflare vectorize 통합
Cloudflare vectorize 통합
LangChain JavaScript로 Cloudflare vectorize 벡터 스토어와 통합해요.
프로젝트를 Cloudflare worker에 배포한다면 Cloudflare Vectorize를 LangChain.js와 함께 사용할 수 있어요. Cloudflare에 직접 내장된 강력하고 편리한 옵션이에요.
설정 (Setup)
Cloudflare Vectorize는 현재 오픈 베타이며, 사용하려면 유료 플랜의 Cloudflare 계정이 필요해요.
프로젝트를 설정한 뒤, 다음 Wrangler 명령으로 인덱스를 생성하세요:
$ npx wrangler vectorize create <index_name> --preset @cf/baai/bge-small-en-v1.5
vectorize 명령의 전체 옵션 목록은 공식 문서에서 볼 수 있어요.
그런 다음 wrangler.toml 파일에 [[vectorize]] 항목을 추가해야 해요:
[[vectorize]]
binding = "VECTORIZE_INDEX"
index_name = "<index_name>"
마지막으로 LangChain Cloudflare 통합 패키지를 설치해야 해요:
yarn add @langchain/cloudflare @langchain/core
pnpm add @langchain/cloudflare @langchain/core
사용법 (Usage)
아래는 경로에 따라 벡터 스토어에 문서를 추가하거나, 쿼리하거나, 비우는 워커 예제예요. 또한 Cloudflare Workers AI Embeddings를 사용해요.
name = "langchain-test"
main = "worker.ts"
compatibility_date = "2024-01-10"
[[vectorize]]
binding = "VECTORIZE_INDEX"
index_name = "langchain-test"
[ai]
binding = "AI"
// @ts-nocheck
import type {
VectorizeIndex,
Fetcher,
Request,
} from "@cloudflare/workers-types";
import {
CloudflareVectorizeStore,
CloudflareWorkersAIEmbeddings,
} from "@langchain/cloudflare";
export interface Env {
VECTORIZE_INDEX: VectorizeIndex;
AI: Fetcher;
}
export default {
async fetch(request: Request, env: Env) {
const { pathname } = new URL(request.url);
const embeddings = new CloudflareWorkersAIEmbeddings({
binding: env.AI,
model: "@cf/baai/bge-small-en-v1.5",
});
const store = new CloudflareVectorizeStore(embeddings, {
index: env.VECTORIZE_INDEX,
});
if (pathname === "/") {
const results = await store.similaritySearch("hello", 5);
return Response.json(results);
} else if (pathname === "/load") {
// Upsertion by id is supported
await store.addDocuments(
[
{
pageContent: "hello",
metadata: {},
},
{
pageContent: "world",
metadata: {},
},
{
pageContent: "hi",
metadata: {},
},
],
{ ids: ["id1", "id2", "id3"] }
);
return Response.json({ success: true });
} else if (pathname === "/clear") {
await store.delete({ ids: ["id1", "id2", "id3"] });
return Response.json({ success: true });
}
return Response.json({ error: "Not Found" }, { status: 404 });
},
};
이전에 로드한 메타데이터로 필터링하기 위해 filter 파라미터를 전달할 수도 있어요. 필수 형식에 대한 정보는 공식 문서를 참고하세요.
관련 (Related)
- 벡터 스토어 개념 가이드
- 벡터 스토어 how-to 가이드
출처: 문서
본문
CloudflareVectorizeStore는 Cloudflare Vectorize에 벡터를 저장·검색하는 통합이에요. @langchain/cloudflare 패키지에서 가져와 CloudflareWorkersAIEmbeddings와 env.VECTORIZE_INDEX 바인딩으로 인스턴스화하고, addDocuments(ID 업서트 지원)·similaritySearch·delete를 사용해요. Cloudflare worker에서 실행할 때 특히 유용하며, 오픈 베타이므로 유료 플랜 계정이 필요해요.