You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qdrant Cloud集合创建问题:元数据与向量未正常存储求助

问题解决:Qdrant Cloud元数据为空的修复

核心原因

当前代码仅向Qdrant.from_texts()传入了文本列表,未附带元数据参数,导致Qdrant仅存储向量和文本内容,未保存name、urls、type等附加信息。另外,HuggingFaceEmbeddings的model_kwargs和encode_kwargs参数未正确传入构造函数,配置未生效。

修复步骤

  1. 构造元数据列表:从DataFrame中提取每一行的name、urls、type,生成对应文本的元数据字典列表。
  2. 修正嵌入模型参数:将model_kwargs和encode_kwargs传入HuggingFaceEmbeddings初始化方法。
  3. 传入元数据参数:调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:35:11