Qdrant介紹
Qdrant(讀作:quadrant /'kwɑdr?nt/ n. 象限;象限儀;四分之一圓)是一個向量相似度搜索引擎。它提供了一個生產就緒的服務,具有方便的 API 來存儲、搜索和管理點 - 帶有附加載荷的向量。Qdrant
專門支持擴展過濾功能,使其對各種神經網絡或基于語義的匹配、分面搜索和其他應用非常有用。
官方文檔:Home - Qdrant
以下展示了如何使用與Qdrant
向量數據庫相關的功能。
有各種運行Qdrant
的模式,取決于所選擇的模式,會有一些細微的差異。選項包括:
- 本地模式,無需服務器
- Qdrant 云
請參閱安裝說明。
%pip install --upgrade --quiet langchain-qdrant langchain-openai langchain
#示例:qdrant_local.py
from langchain_community.document_loaders import TextLoader
from langchain_openai import OpenAIEmbeddings
from langchain_qdrant import Qdrant
from langchain_text_splitters import CharacterTextSplitter
loader = TextLoader("../../resource/knowledge.txt", encoding="UTF-8")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1500, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()
本地模式
Python 客戶端允許您在本地模式下運行相同的代碼,而無需運行 Qdrant 服務器。這對于測試和調試或者如果您計劃僅存儲少量向量非常有用。嵌入可能完全保存在內存中或者持久化在磁盤上。
內存中
對于一些測試場景和快速實驗,您可能更喜歡僅將所有數據保存在內存中,因此當客戶端被銷毀時數據會丟失 - 通常在腳本/筆記本的末尾。
#示例:qdrant_local.py
qdrant = Qdrant.from_documents(docs,embeddings,location=":memory:", # 本地模式,僅內存存儲collection_name="my_documents",
)
磁盤存儲
在不使用 Qdrant 服務器的本地模式下,還可以將您的向量存儲在磁盤上,以便它們在運行之間持久化。
#示例:qdrant_disk.py
qdrant = Qdrant.from_documents(docs,embeddings,path="/tmp/local_qdrant",collection_name="my_documents",
)
相似度搜索
使用 Qdrant 向量存儲的最簡單場景是執行相似度搜索。在幕后,我們的查詢將使用embedding_function
對查詢進行編碼,并用于在 Qdrant 集合中查找相似的文檔。
query = "Pixar公司是做什么的?"
found_docs = qdrant.similarity_search(query)
print(found_docs[0].page_content)
結果輸出
During the next five years, I started a company named NeXT, another company named Pixar, and fell in love with an amazing woman who would become my wife. Pixar went on to create the worlds first computer animated feature film, Toy Story, and is now the most successful animation studio in the world. In a remarkable turn of events, Apple bought NeXT, I retuned to Apple, and the technology we developed at NeXT is at the heart of Apple's current renaissance. And Laurene and I have a wonderful family together.
在接下來的五年里, 我創立了一個名叫 NeXT 的公司,還有一個叫Pixar的公司,然后和一個后來成為我妻子的優雅女人相識。Pixar 制作了世界上第一個用電腦制作的動畫電影——“”玩具總動員”,Pixar 現在也是世界上最成功的電腦制作工作室。在后來的一系列運轉中,Apple 收購了NeXT,然后我又回到了蘋果公司。我們在NeXT 發展的技術在 Apple 的復興之中發揮了關鍵的作用。我還和 Laurence 一起建立了一個幸福的家庭。
Qdrant 云
如果您不想忙于管理基礎設施,可以選擇在 Qdrant 云上設置一個完全托管的 Qdrant 集群。包括一個永久免費的 1GB 集群供試用。使用托管版本與使用 Qdrant 的主要區別在于,您需要提供 API 密鑰以防止公開訪問您的部署。該值也可以設置在 QDRANT_API_KEY
環境變量中。
url = "<---qdrant cloud cluster url here --->"
api_key = "<---api key here--->"
qdrant = Qdrant.from_documents(docs,embeddings,url=url,prefer_grpc=True,api_key=api_key,collection_name="my_documents",
)