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

Solr 9向量存入错误字段求助:如何指定knn_vector字段存储

问题描述

在Solr 9中尝试索引稠密向量,已在managed-schema.xml中添加以下配置,将名为vector的字段设置为knn_vector类型:

<fieldType name="knn_vector" class="solr.DenseVectorField" vectorDimension="768" similarityFunction="euclidean"/>

<field name="vector" type="knn_vector" indexed="true" stored="true"/>

但Solr自动创建了一个名为vectors的pdoubles类型字段:

<field name="vectors" type="pdoubles"/>

数据处理及Solr操作代码如下:

embedder = SentenceTransformer('distilbert-base-nli-stsb-mean-tokens')
corpus = [documents[d]['paragraph'] for d in documents]
corpus_embeddings = embedder.encode(corpus, convert_to_tensor=False)

d=0
for row in corpus_embeddings:
   documents[str(d)]['vectors']=np.array(row).tolist()
   d=d+1 
import pysolr
solr = pysolr.Solr('http://localhost:8983/solr/VectorPilotRun/', always_commit=True, timeout=10)

results=solr.search("{!knn f=vector topK=10}"+str(documents['500']['vectors']))
print("Saw {0} result(s).".format(len(results)))
for result in results:
    print("The details are : '{0} {1} {2}'\n.".format(result['id'],result['paragraph'],result['paragraph_num']))

目前查询vector字段返回null,无结果,推测所有向量数据都存入了vectors(pdoubles)字段而非vector(knn_vector)字段。使用pysolr传入浮点型列表向量,需要解决如何让数据存入正确的knn_vector类型字段,避免Solr自动创建错误字段。

解决方案
  • 修正数据字段名:代码中把向量存入了vectors字段,但schema里定义的目标字段是vector,字段名不匹配导致Solr自动创建新的pdoubles类型字段。修改数据处理代码中的字段名:
    d=0
    for row in corpus_embeddings:
       documents[str(d)]['vector']=np.array(row).tolist()  # 把'vectors'改为'vector'
       d=d+1 
    
  • 确保向量格式与维度匹配:确认生成的向量维度是768,与managed-schema.xml中vectorDimension="768"的配置一致,避免因维度不匹配导致数据无法存入目标字段。
  • 禁用自动字段创建:为防止后续Solr自动创建未定义的字段,在solrconfig.xml中找到updateHandler相关配置,设置autoCreateFields="false":
    <updateHandler class="solr.DirectUpdateHandler2">
      <autoCreateFields>false</autoCreateFields>
    </updateHandler>
    
  • 清理错误字段并重新索引:删除Solr中自动创建的vectors字段,然后重新运行数据索引代码,确保向量数据正确写入vector字段。

内容的提问来源于stack exchange,提问作者atulbhushan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:20:58