Weaviate:如何使用text2vec-transformers模块生成向量?
使用text2vec-transformers生成向量并结合nearVector查询Weaviate
两种生成向量的方式
当你将text2vec-transformers设为Weaviate的默认向量化器时,有两种方式获取可用的向量:
1. 自动为存储数据生成向量
导入数据时,Weaviate会自动调用text2vec-transformers模块为你定义的文本字段生成向量并存储,无需手动干预。比如导入对象时只需传入文本内容:
# Python客户端示例 client.data_object.create( data_object={ "title": "示例文本", "content": "这是需要向量化的内容" }, class_name="YourClassName" )
此时该对象的向量已由模块自动生成并存在Weaviate中。
2. 手动生成向量用于nearVector查询
如果你需要生成自定义文本的向量来执行nearVector查询,可以直接调用Weaviate的vectorize GraphQL端点:
{ vectorize( input: ["需要生成向量的目标文本"] moduleConfig: { text2vec-transformers: { model: "sentence-transformers/all-MiniLM-L6-v2" // 替换为你使用的模型 } } ) }
执行该查询后,会返回对应文本的浮点型向量数组。将这个向量填入nearVector查询即可:
{ Get { YourClassName( nearVector: { vector: [0.123, -0.456, 0.789, ...] // 填入生成的完整向量 distance: 0.6 // 可选,设置相似度阈值 } ) { id title _additional { distance // 返回与查询向量的距离 } } } }
额外:获取已存储对象的向量
如果需要基于现有对象的向量执行nearVector查询,可以通过查询对象的_additional字段获取其向量:
{ Get { YourClassName(where: {id: {equalTo: "目标对象ID"}}) { _additional { vector } } } }
注意事项
- 确保Weaviate实例已正确启用text2vec-transformers模块,且配置的模型与你调用时指定的一致
- 客户端(Python/JS等)也封装了
vectorize方法,可直接通过客户端API调用,无需手动编写GraphQL
内容的提问来源于stack exchange,提问作者Hardik Sardhara
相关产品推荐
相关产品推荐

