Qdrant用法;Qdrant在langchain里的用法
基础用法这里不再赘述了。直接参照官网。
想看看一些概率可以参考下面两个网站:
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 后再检索的办法。我一直没有找到。还是思路不对。