跳至主要內容

TileDB

TileDB 是一個強大的引擎,用於索引和查詢密集和稀疏的多維陣列。

TileDB 使用 TileDB-Vector-Search 模組提供 ANN 搜尋功能。 它提供 ANN 查詢的無伺服器執行,以及向量索引在本地磁碟和雲端物件儲存 (例如 AWS S3) 上的儲存。

更多詳細資訊請參考:

此筆記本展示了如何使用 TileDB 向量資料庫。

%pip install --upgrade --quiet  tiledb-vector-search langchain-community

基本範例

from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import TileDB
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_text_splitters import CharacterTextSplitter

raw_documents = TextLoader("../../how_to/state_of_the_union.txt").load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
documents = text_splitter.split_documents(raw_documents)
model_name = "sentence-transformers/all-mpnet-base-v2"
embeddings = HuggingFaceEmbeddings(model_name=model_name)
db = TileDB.from_documents(
documents, embeddings, index_uri="/tmp/tiledb_index", index_type="FLAT"
)
query = "What did the president say about Ketanji Brown Jackson"
docs = db.similarity_search(query)
docs[0].page_content

依向量進行相似性搜尋

embedding_vector = embeddings.embed_query(query)
docs = db.similarity_search_by_vector(embedding_vector)
docs[0].page_content

帶分數的相似性搜尋

docs_and_scores = db.similarity_search_with_score(query)
docs_and_scores[0]

最大邊際相關性搜尋 (MMR)

除了在檢索器物件中使用相似性搜尋外,您也可以將 mmr 用作檢索器。

retriever = db.as_retriever(search_type="mmr")
retriever.invoke(query)

或直接使用 max_marginal_relevance_search

db.max_marginal_relevance_search(query, k=2, fetch_k=10)

此頁面是否有幫助?