DashVector
DashVector 是一個完全託管的向量資料庫服務,支援高維度稠密和稀疏向量、即時插入和過濾搜尋。它旨在自動擴展,並能適應不同的應用程式需求。
這個筆記本展示如何使用與 DashVector
向量資料庫相關的功能。
要使用 DashVector,您必須擁有 API 金鑰。這裡是 安裝說明。
安裝
%pip install --upgrade --quiet langchain-community dashvector dashscope
我們想要使用 DashScopeEmbeddings
,因此我們也必須取得 Dashscope API 金鑰。
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:")
範例
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()
API 參考文檔:TextLoader
我們可以從文件建立 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
參數
partition
參數預設為 default,如果傳入不存在的 partition
參數,則會自動建立 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)