QdrantVectorStore 통합

QdrantVectorStore 통합

LangChain JavaScript로 QdrantVectorStore와 통합해요.

**호환성**: Node.js에서만 사용할 수 있어요.

Qdrant는 벡터 유사도 검색 엔진이에요. 추가 페이로드(payload)가 있는 포인트(벡터)를 저장·검색·관리하기 위한 편리한 API를 갖춘 프로덕션 지원 서비스를 제공해요.

이 가이드는 Qdrant 벡터 스토어 시작을 위한 빠른 개요를 제공해요. 모든 QdrantVectorStore 기능과 구성에 대한 자세한 문서는 API reference를 참고하세요.

개요 (Overview)

통합 세부 정보 (Integration details)

클래스 패키지 PY 지원 Downloads Version
QdrantVectorStore @langchain/qdrant NPM - Downloads NPM - Version

설정 (Setup)

Qdrant 벡터 스토어를 사용하려면 Qdrant 인스턴스를 설정하고 @langchain/qdrant@langchain/core를 설치하세요. @langchain/qdrant 패키지는 Qdrant REST 클라이언트(@qdrant/js-client-rest)를 번들로 포함해요.

이 가이드는 OpenAI 임베딩을 예시로 사용해요. 대신 다른 지원 임베딩 모델을 사용할 수도 있어요.

```bash npm npm install @langchain/qdrant @langchain/core @langchain/openai ```
yarn add @langchain/qdrant @langchain/core @langchain/openai
pnpm add @langchain/qdrant @langchain/core @langchain/openai

필요한 의존성을 설치한 후, Qdrant 설정 지침을 따라 컴퓨터의 Docker로 Qdrant 인스턴스를 실행하세요. 컨테이너가 실행되는 URL을 기록해 두세요.

자격 증명 (Credentials)

QDRANT_URL 환경 변수를 설정하세요:

// e.g. http://localhost:6333
process.env.QDRANT_URL = "your-qdrant-url"

이 가이드에 OpenAI 임베딩을 사용한다면 OpenAI 키도 설정하세요:

process.env.OPENAI_API_KEY = "YOUR_API_KEY";

모델 호출의 자동 추적을 받으려면 아래 주석을 해제해 LangSmith API 키를 설정할 수도 있어요:

// process.env.LANGSMITH_TRACING="true"
// process.env.LANGSMITH_API_KEY="your-api-key"

인스턴스화 (Instantiation)

import { QdrantVectorStore } from "@langchain/qdrant";
import { OpenAIEmbeddings } from "@langchain/openai";

const embeddings = new OpenAIEmbeddings({
  model: "text-embedding-3-small",
});

const vectorStore = await QdrantVectorStore.fromExistingCollection(embeddings, {
  url: process.env.QDRANT_URL,
  collectionName: "langchainjs-testing",
});

벡터 스토어 관리 (Manage vector store)

벡터 스토어에 항목 추가 (Add items to vector store)

import type { Document } from "@langchain/core/documents";

const document1: Document = {
  pageContent: "The powerhouse of the cell is the mitochondria",
  metadata: { source: "https://example.com" }
};

const document2: Document = {
  pageContent: "Buildings are made out of brick",
  metadata: { source: "https://example.com" }
};

const document3: Document = {
  pageContent: "Mitochondria are made out of lipids",
  metadata: { source: "https://example.com" }
};

const document4: Document = {
  pageContent: "The 2024 Olympics are in Paris",
  metadata: { source: "https://example.com" }
}

const documents = [document1, document2, document3, document4];

await vectorStore.addDocuments(documents);

최상위 문서 id와 삭제는 현재 지원되지 않아요.

벡터 스토어 쿼리 (Query vector store)

직접 쿼리 (Query directly)

간단한 유사도 검색은 다음과 같이 수행할 수 있어요:

const filter = {
  "must": [
      { "key": "metadata.source", "match": { "value": "https://example.com" } },
  ]
};

const similaritySearchResults = await vectorStore.similaritySearch("biology", 2, filter);

for (const doc of similaritySearchResults) {
  console.log(`* ${doc.pageContent} [${JSON.stringify(doc.metadata, null)}]`);
}
* The powerhouse of the cell is the mitochondria [{"source":"https://example.com"}]
* Mitochondria are made out of lipids [{"source":"https://example.com"}]

Qdrant 필터 문법에 대한 자세한 내용은 이 페이지를 참고하세요. 모든 값은 metadata. 접두사를 붙여야 해요.

유사도 검색을 실행하고 대응하는 점수를 받으려면 다음을 실행할 수 있어요:

const similaritySearchWithScoreResults = await vectorStore.similaritySearchWithScore("biology", 2, filter)

for (const [doc, score] of similaritySearchWithScoreResults) {
  console.log(`* [SIM=${score.toFixed(3)}] ${doc.pageContent} [${JSON.stringify(doc.metadata)}]`);
}
* [SIM=0.165] The powerhouse of the cell is the mitochondria [{"source":"https://example.com"}]
* [SIM=0.148] Mitochondria are made out of lipids [{"source":"https://example.com"}]

리트리버로 변환해 쿼리 (Query by turning into retriever)

벡터 스토어를 리트리버로 변환해 체인에서 더 쉽게 사용할 수도 있어요.

const retriever = vectorStore.asRetriever({
  // Optional filter
  filter: filter,
  k: 2,
});
await retriever.invoke("biology");

검색 증강 생성(RAG) 사용법 (Usage for retrieval-augmented generation)

이 벡터 스토어를 검색 증강 생성(RAG)에 사용하는 방법에 대한 가이드는 다음 섹션을 참고하세요:


API reference

모든 QdrantVectorStore 기능과 구성에 대한 자세한 문서는 API reference를 참고하세요.

출처: 문서

본문

QdrantVectorStore는 Qdrant 벡터 검색 엔진용 통합이에요. @langchain/qdrant 패키지에서 가져와 QDRANT_URL·collectionName으로 fromExistingCollection을 호출해 인스턴스화하고, addDocuments·similaritySearch·similaritySearchWithScore·asRetriever()를 사용할 수 있어요. 필터는 Qdrant 문법(metadata. 접두사 필수)을 따르며, 최상위 문서 id·삭제는 지원하지 않아요. Node.js에서만 사용할 수 있어요.

더 알아보기 (Learn more)