基礎用法這裡不再贅述了。直接參照官網。
想看看一些機率可以參考下面兩個網站:
1. https://m.elecfans.com/article/2078558.html
2. https://blog.csdn.net/cxs812760493/article/details/135346390
下面說一些在 langchain 可能遇到的問題:
1. 先確定自己 Collections 中向量 的長度不然會提示:
b'{"status":{"error":"Wrong input: Vector inserting error: expected dim: 100, got 1536"},"time":0.00411009}'
from qdrant_client.models import PointStruct from qdrant_client import QdrantClient import uuid import numpy as np client = QdrantClient(host="localhost", port=6333) collection_name = 'my_collection' operation_info = client.upsert( collection_name=collection_name, wait=True, points=[ PointStruct(id=str(uuid.uuid4()), vector=np.random.rand(1536), payload={"city": "Berlin"}), PointStruct(id=str(uuid.uuid4()), vector=np.random.rand(1536), payload={"city": "Berlin2"}), ], ) print(operation_info)
2. 向量資料庫中資料已經成功插入,使用者內容匹配的方法
# 計算嵌入向量 def generate_embedding(self,query_text): openai_client = openai.Client( api_key=Keys.MONSTER_API_KEY, base_url=Keys.MONSTER_API_BASE ) embedding_result = openai_client.embeddings.create( input=query_text, model="text-embedding-ada-002" ) return embedding_result.data[0].embedding # 從 qdrant 中查詢資料 def qdrant_query(self, query_text): try: query_vector = self.generate_embedding(query_text) result = self.qdrant_client.search( collection_name=self.collection_name, query_vector=query_vector, limit=10, ) # 此處可以做一個簡單的計算, 將低於 0.7 的去掉 # for res in result: # print(res) return result except Exception as e: print(f"請稍後重試,異常原因: {e}") # 建立倉庫 self.qdrant_client.recreate_collection( collection_name=self.collection_name, vectors_config=models.VectorParams(size=1536, distance=models.Distance.COSINE), ) return []
3. langchain 文件中都是先處理檔案(txt,pdf等)然後再檢索的
retriever = qdrant.as_retriever()
有沒有可能是,檔案已經插入 Collections 後再檢索的辦法。我一直沒有找到。還是思路不對。