现象:
File "~/anaconda3/envs/leo_py38/lib/python3.8/site-packages/httpx/_transports/default.py", line 86, in map_httpcore_exceptions raise mapped_exc(message) from exc httpx.ReadTimeout: timed out
代码:
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings from llama_index.embeddings.huggingface import HuggingFaceEmbedding from llama_index.llms.ollama import Ollama ###定义使用的llm,embedding 模型 llm = Ollama(model="yi:34b") embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-large-zh-v1.5") Settings.llm = llm Settings.embed_model = embed_model ## 加载文档 documents = SimpleDirectoryReader("../../data").load_data() print("documents: ", len(documents)) ## 构建index index = VectorStoreIndex.from_documents(documents, show_progress=True) ## 构建query engine query_engine = index.as_query_engine() query = "身长九尺,髯长二尺的人是谁?" ## query response = query_engine.query(query) print(f"query:{query}") print(f"查询结果:{response}")
解决办法是增加timeout时长
llm = Ollama(model="yi:34b", request_timeout=500)
总结
### 文章总结**现象描述**:
当执行基于`llama_index`库的文本检索代码时,出现了HTTP超时错误(`httpx.ReadTimeout: timed out`)。这一错误指出在请求过程中,预设的等待时间内未能成功完成HTTP请求,导致超时异常。
**代码分析**:
代码主要流程包括设置使用的LLM(大型语言模型)和embedding模型,加载文档数据,进而构建向量索引以及查询引擎,并最终执行一个文本查询。错误发生在模型请求过程中,可能由于网络延迟、模型响应慢等原因导致。
**解决方法**:
针对上述问题,通过在初始化LLM(Language Model,语言模型)时增加`request_timeout`参数,并设置一个更长的等待时间(例如500秒),来解决HTTP超时问题。这一方法通过延长请求的超时时间来保证模型有足够的时间响应,从而避免超时异常的发生。
**关键修改**:
```python
llm = Ollama(model="yi:34b", request_timeout=500) # 增加 request_timeout 参数设置超时时间为500秒
```
**总结建议**:
在处理网络请求或与远程服务交互的编程中,遇到超时错误时,首先应考虑增加超时时间的设置。此外,根据需要和实际情况,可以考虑进一步优化网络配置、升级硬件设备或提升服务端性能等多种手段,来减少此类错误的发生,确保程序的稳定运行和高效响应。 llmllamadocctohuggingface语言模型pythonstore等待时间大型语言模型代码分析llmsapplms