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

基于Milvus与LlamaIndex构建RAG助手报错:向量维度不匹配

Milvus向量维度不匹配导致LlamaIndex RAG查询失败解决方案

核心报错原因

报错信息明确显示 向量维度不匹配(vector dimension mismatch err),同时原代码存在未完成的语法错误,导致无法正确加载Milvus集合执行查询操作。

问题拆解与修复步骤

1. 修复代码语法错误

原代码中index = VectorStoreIndex.语句未完成,正确逻辑是通过StorageContext关联Milvus向量存储,再加载已有集合的索引:

from llama_index.core import StorageContext, VectorStoreIndex
from llama_index.vector_stores.milvus import MilvusVectorStore
import openai
from dotenv import load_dotenv
import os

load_dotenv()
openai.api_key = os.environ["OPENAI_API_KEY"]

def chatbot(input_text):
    # 初始化Milvus向量存储连接
    vector_store = MilvusVectorStore(
       uri="http://localhost:19530",
       collection_name = "test"
    )
    # 创建存储上下文关联向量存储
    storage_context = StorageContext.from_defaults(vector_store=vector_store)
    # 从已有Milvus集合加载索引
    index = VectorStoreIndex.from_vector_store(vector_store, storage_context=storage_context)
    # 创建查询引擎并执行查询
    query_engine = index.as_query_engine()
    response = query_engine.query(input_text)
    return response

input_text = input('输入查询内容:')
print(chatbot(input_text))

2. 解决向量维度不匹配问题

  • 先确认Milvus集合的向量字段维度:对照你的集合截图,查看向量字段的维度数值。
  • LlamaIndex默认使用OpenAI的text-embedding-ada-002模型,生成的向量维度为1536。如果Milvus集合维度与此不符,二选一调整:
    • 重新创建Milvus集合,将向量维度设置为1536;
    • 在LlamaIndex中指定与Milvus集合维度匹配的嵌入模型,示例代码如下(假设集合维度为384):
      from llama_index.embeddings.openai import OpenAIEmbedding
      
      # 指定匹配维度的嵌入模型
      embed_model = OpenAIEmbedding(model="text-embedding-3-small", embed_batch_size=10)
      # 创建查询引擎时传入自定义嵌入模型
      query_engine = index.as_query_engine(embed_model=embed_model)
      

3. 额外检查项

  • 确认Milvus服务正常运行,http://localhost:19530可正常访问;
  • 确认Milvus集合test已成功插入向量数据,不存在空集合情况;
  • 验证OpenAI API密钥有效,可正常调用嵌入模型接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:33:26