벡터스토어 통합

벡터스토어 통합 (Vector store integrations)

벡터스토어는 임베딩된 데이터를 저장하고 유사도 검색(similarity search)을 수행하는 저장소예요. 문서를 임베딩 모델로 벡터화해 저장해 두면, 쿼리 벡터와의 유사도를 계산해 의미적으로 비슷한 문서를 빠르게 찾아냅니다. LangChain은 공통 인터페이스로 여러 벡터스토어 구현을 갈아끼울 수 있게 해줘요.

출처: 공식문서

인터페이스 (Interface)

  • add_documents - 문서를 스토어에 추가.
  • delete - ID로 저장된 문서 제거.
  • similarity_search - 의미적으로 유사한 문서 쿼리.

이 추상화 덕분에 애플리케이션 로직을 바꾸지 않고 다른 구현으로 전환할 수 있어요.

초기화 (Initialization)

벡터스토어를 초기화할 땐 임베딩 모델을 제공하면 됩니다.

from langchain_core.vectorstores import InMemoryVectorStore
vector_store = InMemoryVectorStore(embedding=SomeEmbeddingModel())

문서 추가 (Adding documents)

Document 객체(page_content와 선택 메타데이터)를 이렇게 추가해요.

vector_store.add_documents(documents=[doc1, doc2], ids=["id1", "id2"])

문서 삭제 (Deleting documents)

ID를 지정해 삭제해요.

vector_store.delete(ids=["id1"])

similarity_search로 의미 쿼리를 날리면 가장 가까운 임베딩 문서를 반환해요.

similar_docs = vector_store.similarity_search("your query here")

많은 벡터스토어가 이런 파라미터를 지원해요: k(반환할 결과 수), filter(메타데이터 기반 조건 필터).

유사도 지표와 인덱싱

임베딩 유사도는 코사인 유사도, 유클리드 거리, 내적으로 계산돼요. 효율적 검색에는 HNSW(Hierarchical Navigable Small World) 같은 인덱싱 기법이 자주 쓰이지만, 구체적인 내용은 벡터스토어마다 달라요.

메타데이터 필터링

vector_store.similarity_search(
  "query",
  k=3,
  filter={"source": "tweets"}
)

⚠️ 메타데이터 기반 필터링 지원 여부는 구현별로 달라요. 선택한 벡터스토어 문서를 확인하세요.

인기 통합 (Top integrations)

임베딩 모델 선택

  • OpenAI: pip install -qU langchain-openai, OpenAIEmbeddings(model="text-embedding-3-large")
  • Azure: pip install -qU langchain-azure-ai, AzureOpenAIEmbeddings(azure_endpoint=..., azure_deployment=..., openai_api_version=...)
  • Google Gemini: pip install -qU langchain-google-genai, GoogleGenerativeAIEmbeddings(model="models/gemini-embedding-001")
  • Gemini Enterprise Agent Platform: langchain-google-vertexai, VertexAIEmbeddings(model="text-embedding-005")
  • AWS: langchain-aws, BedrockEmbeddings(model_id="amazon.titan-embed-text-v2:0")
  • HuggingFace: langchain-huggingface, HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2")
  • Ollama: langchain-ollama, OllamaEmbeddings(model="nomic-embed-text")
  • Cohere: langchain-cohere, CohereEmbeddings(model="embed-english-v3.0")
  • Mistral AI: langchain-mistralai, MistralAIEmbeddings(model="mistral-embed")
  • Nomic: langchain-nomic, NomicEmbeddings(model="nomic-embed-text-v1.5")
  • NVIDIA: langchain-nvidia-ai-endpoints, NVIDIAEmbeddings(model="NV-Embed-QA")
  • Voyage AI: langchain-voyageai, VoyageAIEmbeddings(model="voyage-3") (문서)
  • IBM watsonx: langchain-ibm, WatsonxEmbeddings(model_id="ibm/slate-125m-english-rtrvr", url="https://us-south.ml.cloud.ibm.com", project_id="<WATSONX PROJECT_ID>")
  • Fake: langchain-core, DeterministicFakeEmbedding(size=4096)
  • xAI: langchain-xai, model = init_chat_model("grok-2", model_provider="xai")
  • Perplexity: langchain-perplexity, init_chat_model("llama-3.1-sonar-small-128k-online", model_provider="perplexity")
  • DeepSeek: langchain-deepseek, init_chat_model("deepseek-chat", model_provider="deepseek")

(각각 필요한 API 키를 환경변수로 설정해야 해요. 예: OPENAI_API_KEY, AZURE_OPENAI_API_KEY + AZURE_OPENAI_ENDPOINT/AZURE_OPENAI_DEPLOYMENT_NAME/AZURE_OPENAI_API_VERSION, GOOGLE_API_KEY, COHERE_API_KEY, MISTRALAI_API_KEY, NOMIC_API_KEY, NVIDIA_API_KEY, VOYAGE_API_KEY, WATSONX_APIKEY, XAI_API_KEY, PPLX_API_KEY, DEEPSEEK_API_KEY.)

벡터스토어 선택

  • In-memory: InMemoryVectorStore(embeddings)langchain-core
  • Amazon OpenSearch: OpenSearchVectorSearch.from_documents(...)boto3 + opensearchpy (service="es", region="us-east-2", AWS4Auth, connection_class=RequestsHttpConnection, index_name="test-index")
  • Astra DB: AstraDBVectorStore(embedding=embeddings, api_endpoint=ASTRA_DB_API_ENDPOINT, collection_name="astra_vector_langchain", token=ASTRA_DB_APPLICATION_TOKEN, namespace=ASTRA_DB_NAMESPACE)langchain-astradb
  • Azure Cosmos DB NoSQL: AzureCosmosDBNoSqlVectorSearch.from_documents(...)langchain-azure-cosmosdb + azure-cosmos
  • Azure Cosmos DB Mongo vCore: AzureCosmosDBMongoVCoreVectorSearch.from_documents(...)langchain-azure-ai + pymongo
  • Chroma: Chroma(collection_name="example_collection", embedding_function=embeddings, persist_directory="./chroma_langchain_db")langchain-chroma
  • CockroachDB: AsyncCockroachDBVectorStore(engine=engine, embeddings=embeddings, collection_name="vectors")langchain-cockroachdb (커넥션 문자열 cockroachdb://user:pass@host:26257/db?sslmode=verify-full)
  • Elasticsearch: langchain-elasticsearch + curl -fsSL https://elastic.co/start-local | sh, ./start.sh, ElasticsearchStore(index_name="langchain-demo", embedding=embeddings, es_url="http://localhost:9200")
  • Google AlloyDB: langchain-google-alloydb-pg, AlloyDBVectorStore.create_sync(engine=engine, table_name="my_vectors", embedding_service=embeddings)
  • Milvus: langchain-milvus, Milvus(embedding_function=embeddings, connection_args={"uri": URI}, index_params={"index_type": "FLAT", "metric_type": "L2"})
  • MongoDB: langchain-mongodb, MongoDBAtlasVectorSearch(embedding=embeddings, collection=MONGODB_COLLECTION, index_name=ATLAS_VECTOR_SEARCH_INDEX_NAME, relevance_score_fn="cosine") (문서)
  • PGVector: langchain-postgres, PGVector(embeddings=embeddings, collection_name="my_docs", connection="postgresql+psycopg://...")
  • PGVectorStore: langchain-postgres, PGVectorStore.create_sync(engine=pg_engine, table_name='test_table', embedding_service=embedding), PGEngine.from_connection_string(url="postgresql+psycopg://...")
  • Pinecone: langchain-pinecone, PineconeVectorStore(embedding=embeddings, index=index) (pc = Pinecone(api_key=...); index = pc.Index(index_name))
  • Qdrant: langchain-qdrant, QdrantVectorStore(client=client, collection_name="test", embedding=embeddings) (QdrantClient(":memory:"), 컬렉션 생성 시 VectorParams(size=vector_size, distance=Distance.COSINE))
  • Redis: langchain-redis, RedisVectorStore(embeddings=embeddings, config=config) (RedisConfig(index_name="my_vectors", redis_url=os.getenv("REDIS_URL", "redis://localhost:6379"), distance_metric="COSINE"))
  • Oracle AI Database: langchain-oracledb, OracleVS(client=connection, embedding_function=embedding_model, table_name="VECTOR_SEARCH_DEMO", distance_strategy=DistanceStrategy.EUCLIDEAN_DISTANCE) (⚠️ langchain-community는 더 이상 유지보수되지 않으니 주의)
  • turbopuffer: langchain-turbopuffer, TurbopufferVectorStore(embedding=embeddings, namespace=ns) (Turbopuffer(region="gcp-us-central1"); ns = tpuf.namespace("langchain-test"))
  • Valkey: langchain-aws[valkey], ValkeyVectorStore(embedding=embeddings, valkey_url="valkey://localhost:6379", index_name="my_index")
  • Weaviate: langchain-weaviate, WeaviateVectorStore(client=weaviate_client, index_name="langchain_example", text_key="text", embedding=embeddings) (weaviate.connect_to_local() — 로컬 8080/gRPC 50051)

인기 벡터스토어 기능 비교

주요 벡터스토어별 지원 여부(기능 테이블 요약):

벡터스토어 ID 삭제 필터링 벡터 검색 점수 검색 Async 표준 테스트 멀티 테넌시 add 시 ID
ValkeyVectorStore
DatabricksVectorSearch
AzureCosmosDBMongoVCoreVectorStore
MongoDBAtlasVectorSearch
QdrantVectorStore
PineconeVectorStore
Milvus
Oracle AI Database
ElasticsearchStore
Weaviate
AstraDBVectorStore
RedisVectorStore
AzureCosmosDBNoSqlVectorStore
Google AlloyDB
InMemoryVectorStore

모든 벡터스토어 (All vector stores)

전체 목록(다운로드 수 포함)은 원문 문서의 "All vector stores" 테이블을 참고하세요. 그 외에도 Feature Store on Gemini Enterprise Agent Platform, Google bigquery vector search, Vector Search on Gemini Enterprise Agent Platform, Amazon memorydb, Chroma, PGVector, PGVectorStore, Pinecone (Sparse), Neo4j vector index, Google firestore, Sap hana cloud vector engine, Google spanner, Google cloud SQL for postgresql, OpensolrVectorStore, OceanbaseVectorStore, IBM db2 vector store and vector search, PolarDBXVectorStore, AsyncCockroachDBVectorStore, InfinoVectorStore, CouchbaseSearchVectorStore, SingleStoreVectorStore, TeradataVectorStore, PolarDBPGVector, SurrealDBVectorStore, SQLServer, YDB, Mariadb, Intel's visual data management system (VDMS), ChronoVecVectorStore, Google memorystore for Redis, ShannonBaseVectorStore, TypesenseVectorStore, YantrikDBVectorStore, FalkorDBVector, BigtableVectorStore, RostamVectorStore, VectorPandaStore, MixpeekVectorStore, openGauss, VastDBVectorStore, SereneDB, Azure database for postgresql - flexible server, turbopuffer, ZeusDB, Kinetica vectorstore, Google cloud SQL for mysql, LambdaDB, Vectara, PixeltableVectorStore, Activeloop Deep lake, Gel, Moorcheh, ActianVectorAIVectorStore, Firebolt, DeweyVectorStore, LindormVectorStore, Vedb for mysql, Volcengine rds for mysql, Alibaba cloud mysql, ChDBVectorStore, CosVectors 등이 있어요.

더 알아보기 (Learn more)

  • 임베딩 모델 통합 — 벡터스토어에 넣을 임베딩 연결
  • Document 인터페이스 — 벡터스토어에 저장되는 문서 객체
  • 각 벡터스토어 공식 통합 문서 (OpenAI, Azure, Qdrant, Pinecone, Milvus, Weaviate, Redis 등)