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

Llama_index部署HTTP服务时加载索引触发KeyError: 'docs'求助

LlamaIndex加载预生成索引部署到HTTP服务时出现KeyError: 'docs'问题

问题现象

本地虚拟环境中运行代码可正常加载索引并查询,但将代码部署到Flask API或AWS容器化Lambda后,ask_ai方法中的GPTSimpleVectorIndex.load_from_disk调用触发KeyError: 'docs'错误。

生成索引代码

from llama_index import SimpleDirectoryReader, GPTListIndex, readers, GPTSimpleVectorIndex, LLMPredictor, PromptHelper, ServiceContext
from langchain import OpenAI
import sys
import os

def construct_index():
    # set maximum input size
    max_input_size = 40960
    # set number of output tokens
    num_outputs = 20000
    # set maximum chunk overlap
    max_chunk_overlap = 20
    # set chunk size limit
    chunk_size_limit = 600

    # define prompt helper
    prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)

    # define LLM
    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.5, model_name="text-davinci-003", max_tokens=num_outputs))

    documents = SimpleDirectoryReader("./data").load_data()

    service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper)
    index = GPTSimpleVectorIndex.from_documents(documents, service_context=service_context)

    index.save_to_disk('./index.json')

    return index

查询代码

def ask_ai(query):
    index = GPTSimpleVectorIndex.load_from_disk('./index.json')
    response = index.query(query)

    return response.response

错误日志

ERROR:app:Exception on /api/query [POST]
Traceback (most recent call last):
  File "C:\pmi\python-flask-restapi\flaskapi\lib\site-packages\flask\app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\pmi\python-flask-restapi\flaskapi\lib\site-packages\flask\app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\pmi\python-flask-restapi\flaskapi\lib\site-packages\flask\app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\pmi\python-flask-restapi\flaskapi\lib\site-packages\flask\app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "C:\pmi\python-flask-restapi\app.py", line 17, in qyery_chatgpt
    return appService.ask_ai(query)
  File "C:\pmi\python-flask-restapi\app_service.py", line 10, in ask_ai
    index = GPTSimpleVectorIndex.load_from_disk('index.json')
  File "C:\pmi\python-flask-restapi\flaskapi\lib\site-packages\llama_index\indices\base.py", line 352, in load_from_disk
    return cls.load_from_string(file_contents, **kwargs)
  File "C:\pmi\python-flask-restapi\flaskapi\lib\site-packages\llama_index\indices\base.py", line 328, in load_from_string
    return cls.load_from_dict(result_dict, **kwargs)
  File "C:\pmi\python-flask-restapi\flaskapi\lib\site-packages\llama_index\indices\vector_store\base.py", line 260, in load_from_dict
    return super().load_from_dict(result_dict, **config_dict, **kwargs)
  File "C:\pmi\python-flask-restapi\flaskapi\lib\site-packages\llama_index\indices\base.py", line 304, in load_from_dict
    docstore = DocumentStore.load_from_dict(result_dict[DOCSTORE_KEY])
  File "C:\pmi\python-flask-restapi\flaskapi\lib\site-packages\llama_index\docstore.py", line 72, in load_from_dict
    for doc_id, doc_dict in docs_dict["docs"].items():
KeyError: 'docs'

部署环境信息

  • Flask:基于python-flask-restapi仓库改造,仅保留ask_ai方法并通过路由调用
  • AWS容器化Lambda:Dockerfile如下
FROM public.ecr.aws/lambda/python:3.10

COPY requirements.txt ./
RUN pip3 install -r requirements.txt
COPY myfunction.py ./
COPY index.json ./

CMD ["myfunction.lambda_handler"]

可能的解决方向

  • 统一依赖版本:确保本地开发环境与部署环境的llama-index、langchain、OpenAI等依赖版本完全一致,版本差异可能导致索引序列化/反序列化格式不兼容
  • 验证索引文件完整性:检查部署环境中的index.json是否完整,避免文件复制过程中出现损坏或缺失
  • 加载时指定ServiceContext:加载索引时传入与生成阶段一致的service_context参数,确保反序列化使用相同的配置,示例:
    # 先重新构建与生成时一致的service_context
    prompt_helper = PromptHelper(40960, 20000, 20, chunk_size_limit=600)
    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.5, model_name="text-davinci-003", max_tokens=20000))
    service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper)
    # 加载索引时传入service_context
    index = GPTSimpleVectorIndex.load_from_disk('./index.json', service_context=service_context)
    
  • 确认文件路径正确性:检查部署环境中index.json的实际路径是否与代码中的路径匹配,比如Flask应用的工作目录、Lambda的执行目录是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 08:25:35