Azure Cosmos DB for MongoDB vCore

Azure Cosmos DB for MongoDB vCore (deprecated)

LangChain JavaScript로 Azure Cosmos DB for MongoDB vcore 벡터 스토어와 통합해요.

**이 통합은 이름이 바뀌었어요.** Azure Cosmos DB for MongoDB vCore는 Microsoft에 의해 Azure DocumentDB로 리브랜딩됐어요.

대신 새 Azure DocumentDB 통합을 사용하세요. 이전 클래스 이름(AzureCosmosDBMongoDBVectorStore 등)은 하위 호환성을 위해 deprecated 별칭으로 여전히 사용할 수 있지만, 새 AzureDocumentDBVectorStore 클래스로 마이그레이션해야 해요.

Azure Cosmos DB for MongoDB vCore는 완전한 네이티브 MongoDB 지원으로 데이터베이스를 쉽게 만들 수 있게 해줘요. 애플리케이션을 API for MongoDB vCore 계정의 연결 문자열로 지정하면 MongoDB 경험을 그대로 적용하고 좋아하는 MongoDB 드라이버, SDK, 툴을 계속 사용할 수 있어요. Azure Cosmos DB for MongoDB vCore의 벡터 검색을 사용해 AI 기반 애플리케이션을 Azure Cosmos DB에 저장된 데이터와 원활하게 통합할 수 있어요.

Azure Cosmos DB for MongoDB vCore는 익숙한 아키텍처로 최신 애플리케이션을 구축할 수 있는 완전 관리형 MongoDB 호환 데이터베이스 서비스를 개발자에게 제공해요.

Azure Cosmos DB for MongoDB vCore의 벡터 검색 기능을 활용하는 방법은 이 페이지에서 배울 수 있어요. Azure 계정이 없다면 무료 계정을 만들면 시작할 수 있어요.

설정 (Setup)

먼저 @langchain/azure-cosmosdb 패키지를 설치해야 해요:

LangChain 패키지 설치에 대한 일반적인 지침은 [이 섹션](/oss/javascript/langchain/install)을 참고하세요.
npm install @langchain/azure-cosmosdb @langchain/core

실행 중인 Azure Cosmos DB for MongoDB vCore 인스턴스도 필요해요. 이 가이드를 따라 Azure Portal에서 무료 버전을 비용 없이 배포할 수 있어요.

인스턴스가 실행되면 연결 문자열과 관리자 키가 있는지 확인하세요. Azure Portal의 인스턴스 "Connection strings" 섹션에서 찾을 수 있어요. 그런 다음 다음 환경 변수를 설정해야 해요:

AZURE_COSMOSDB_MONGODB_CONNECTION_STRING=

예제 (Example)

다음은 파일의 문서를 Azure Cosmos DB for MongoDB vCore에 인덱싱하고, 벡터 검색 쿼리를 실행한 뒤, 마지막으로 검색된 문서를 기반으로 자연어로 질문에 답하는 체인을 사용하는 예제예요.

import {
  AzureCosmosDBMongoDBVectorStore,
  AzureCosmosDBMongoDBSimilarityType,
} from "@langchain/azure-cosmosdb";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { ChatOpenAI, OpenAIEmbeddings } from "@langchain/openai";
import { createStuffDocumentsChain } from "@langchain/classic/chains/combine_documents";
import { createRetrievalChain } from "@langchain/classic/chains/retrieval";
import { TextLoader } from "@langchain/classic/document_loaders/fs/text";
import { RecursiveCharacterTextSplitter } from "@langchain/textsplitters";

// Load documents from file
const loader = new TextLoader("./state_of_the_union.txt");
const rawDocuments = await loader.load();
const splitter = new RecursiveCharacterTextSplitter({
  chunkSize: 1000,
  chunkOverlap: 0,
});
const documents = await splitter.splitDocuments(rawDocuments);

// Create Azure Cosmos DB for MongoDB vCore vector store
const store = await AzureCosmosDBMongoDBVectorStore.fromDocuments(
  documents,
  new OpenAIEmbeddings(),
  {
    databaseName: "langchain",
    collectionName: "documents",
    indexOptions: {
      numLists: 100,
      dimensions: 1536,
      similarity: AzureCosmosDBMongoDBSimilarityType.COS,
    },
  }
);

// Performs a similarity search
const resultDocuments = await store.similaritySearch(
  "What did the president say about Ketanji Brown Jackson?"
);

console.log("Similarity search results:");
console.log(resultDocuments[0].pageContent);

// Use the store as part of a chain
const model = new ChatOpenAI({ model: "gpt-3.5-turbo-1106" });
const questionAnsweringPrompt = ChatPromptTemplate.fromMessages([
  [
    "system",
    "Answer the user's questions based on the below context:\n\n{context}",
  ],
  ["human", "{input}"],
]);

const combineDocsChain = await createStuffDocumentsChain({
  llm: model,
  prompt: questionAnsweringPrompt,
});

const chain = await createRetrievalChain({
  retriever: store.asRetriever(),
  combineDocsChain,
});

const res = await chain.invoke({
  input: "What is the president's top priority regarding prices?",
});

console.log("Chain response:");
console.log(res.answer);

// Clean up
await store.delete();

await store.close();

출처: 문서

본문

AzureCosmosDBMongoDBVectorStore는 Azure Cosmos DB for MongoDB vCore에 벡터를 저장·검색하는 통합이에요. @langchain/azure-cosmosdb 패키지에서 가져와 fromDocuments로 문서를 인덱싱하고, similaritySearch로 유사도 검색하며, asRetriever()createRetrievalChain으로 RAG 체인에 연결할 수 있어요. 이 통합은 Azure DocumentDB로 리브랜딩되어 새 AzureDocumentDBVectorStore 클래스를 권장해요.

더 알아보기 (Learn more)