DashVector는 고차원 dense 및 sparse vector를 지원하고, 실시간 삽입 및 필터링된 검색을 지원하는 완전 관리형 vectorDB 서비스입니다. 자동으로 확장되도록 구축되었으며 다양한 애플리케이션 요구사항에 적응할 수 있습니다.
이 노트북은 DashVector vector database와 관련된 기능을 사용하는 방법을 보여줍니다. DashVector를 사용하려면 API key가 필요합니다. 설치 지침은 여기에서 확인하세요.

Install

pip install -qU  langchain-community dashvector dashscope
DashScopeEmbeddings를 사용하려면 Dashscope API Key도 가져와야 합니다.
import getpass
import os

if "DASHVECTOR_API_KEY" not in os.environ:
    os.environ["DASHVECTOR_API_KEY"] = getpass.getpass("DashVector API Key:")
if "DASHSCOPE_API_KEY" not in os.environ:
    os.environ["DASHSCOPE_API_KEY"] = getpass.getpass("DashScope API Key:")

Example

from langchain_community.embeddings.dashscope import DashScopeEmbeddings
from langchain_community.vectorstores import DashVector
from langchain_text_splitters import CharacterTextSplitter
from langchain_community.document_loaders import TextLoader

loader = TextLoader("../../how_to/state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

embeddings = DashScopeEmbeddings()
문서로부터 DashVector를 생성할 수 있습니다.
dashvector = DashVector.from_documents(docs, embeddings)

query = "What did the president say about Ketanji Brown Jackson"
docs = dashvector.similarity_search(query)
print(docs)
메타데이터와 id를 포함한 텍스트를 추가하고, 메타 필터로 검색할 수 있습니다.
texts = ["foo", "bar", "baz"]
metadatas = [{"key": i} for i in range(len(texts))]
ids = ["0", "1", "2"]

dashvector.add_texts(texts, metadatas=metadatas, ids=ids)

docs = dashvector.similarity_search("foo", filter="key = 2")
print(docs)
[Document(page_content='baz', metadata={'key': 2})]

partition parameter 작동

partition parameter는 기본적으로 default로 설정되며, 존재하지 않는 partition parameter가 전달되면 partition이 자동으로 생성됩니다.
texts = ["foo", "bar", "baz"]
metadatas = [{"key": i} for i in range(len(texts))]
ids = ["0", "1", "2"]
partition = "langchain"

# add texts
dashvector.add_texts(texts, metadatas=metadatas, ids=ids, partition=partition)

# similarity search
query = "What did the president say about Ketanji Brown Jackson"
docs = dashvector.similarity_search(query, partition=partition)

# delete
dashvector.delete(ids=ids, partition=partition)

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I