Weaviate命名向量使用及自定义向量数据集导入方法问询
向Weaviate命名向量集合导入数据的方案
你的集合named_vec_class包含两种命名向量:
openai:由Weaviate调用OpenAI API自动生成(基于text字段)cohere:需要你自行生成后传入
步骤1:准备待导入数据
先构造符合集合字段要求的数据列表,示例如下:
sample_data = [ { "tokens": 150, "text": "这是一段测试文本内容", "uid": "123e4567-e89b-12d3-a456-426614174000", "parent_uid": "123e4567-e89b-12d3-a456-426614174001", "author": "测试作者", "book_name": "测试书籍", "creation_date": "2024-05-20", "chunk_type": "段落" }, # 可添加更多数据条目 ]
步骤2:批量生成Cohere向量
利用你已定义的get_embed_cohere函数批量生成向量,提升效率:
# 提取所有需要生成向量的text内容 texts_to_embed = [item["text"] for item in sample_data] # 批量生成Cohere嵌入向量 cohere_vectors = get_embed_cohere(texts_to_embed)
步骤3:构造导入条目并批量插入
将数据与对应的Cohere向量绑定,通过Weaviate的批量插入接口导入:
from weaviate.classes import data as wvc_data # 构造带命名向量的导入对象 import_items = [] for data, cohere_vec in zip(sample_data, cohere_vectors): import_items.append( wvc_data.DataObject( properties=data, vectors={"cohere": cohere_vec} # 指定cohere命名向量 ) ) # 执行批量插入 insert_result = collection.data.insert_many(import_items) # 检查插入结果 print(f"成功插入 {insert_result.successful} 条数据") if insert_result.failed: print("失败条目:", insert_result.failed)
关键说明
openai向量无需手动传入:Weaviate会自动根据集合配置,使用text字段调用OpenAI API生成该命名向量。- 单个数据插入:如果只需要插入一条数据,可使用
collection.data.insert_one(),构造单个DataObject即可:single_item = wvc_data.DataObject( properties={ "tokens": 100, "text": "单条测试文本", # 其他字段... }, vectors={"cohere": get_embed_cohere("单条测试文本")} ) collection.data.insert_one(single_item) - 向量维度一致性:确保Cohere生成的向量维度与集合中
cohere向量的维度一致(第一次插入时Weaviate会自动设置维度,后续插入需匹配)。
内容的提问来源于stack exchange,提问作者figs_and_nuts
相关产品推荐
相关产品推荐

