Qdrant Cloud集合创建问题:元数据与向量未正常存储求助
问题解决:Qdrant Cloud元数据为空的修复
核心原因
当前代码仅向Qdrant.from_texts()传入了文本列表,未附带元数据参数,导致Qdrant仅存储向量和文本内容,未保存name、urls、type等附加信息。另外,HuggingFaceEmbeddings的model_kwargs和encode_kwargs参数未正确传入构造函数,配置未生效。
修复步骤
- 构造元数据列表:从DataFrame中提取每一行的
name、urls、type,生成对应文本的元数据字典列表。 - 修正嵌入模型参数:将
model_kwargs和encode_kwargs传入HuggingFaceEmbeddings初始化方法。 - 传入元数据参数:调用
Qdrant.from_texts()时添加metadatas参数。
完整修正代码
from langchain.vectorstores import Qdrant from langchain.embeddings import HuggingFaceEmbeddings import pandas as pd # 原始DataFrame data = { 'name': ['Entry 1', 'Entry 2', 'Entry 3'], 'urls': ['http://example.com/1', 'http://example.com/2', 'http://example.com/3'], 'text': ['Text for Entry 1', 'Text for Entry 2', 'Text for Entry 3'], 'type': ['Type A', 'Type B', 'Type C'] } df = pd.DataFrame(data) # 提取文本列表 texts = df["text"].tolist() # 构造元数据列表:每一项对应一条文本的元数据字典 metadatas = df[['name', 'urls', 'type']].to_dict('records') # 正确初始化嵌入模型,传入配置参数 model_name = "sentence-transformers/sentence-t5-base" model_kwargs = {'device': 'cpu'} encode_kwargs = {'normalize_embeddings': False} embeddings = HuggingFaceEmbeddings( model_name=model_name, model_kwargs=model_kwargs, encode_kwargs=encode_kwargs ) # 调用from_texts时传入元数据参数 doc_store = Qdrant.from_texts( texts, embeddings, metadatas=metadatas, # 新增元数据参数 url=qdrant_url, api_key=qdrant_key, collection_name="my-collection" )
关键说明
df[['name', 'urls', 'type']].to_dict('records')生成格式为[{'name': 'Entry 1', 'urls': 'http://example.com/1', 'type': 'Type A'}, ...]的列表,完全匹配from_texts所需的元数据格式。- 修正后的嵌入模型参数确保模型运行在CPU上,且不做向量归一化,符合配置需求。
内容的提问来源于stack exchange,提问作者Vineet
相关产品推荐
相关产品推荐

