Bug描述
[运行代码]
url = " https://127.0.0.1:9200 "
username = "elastic"
password = "xxxx"
es_client = Elasticsearch(
[url],
basic_auth=(username, password),
verify_certs=True,
ca_certs='./server_cert.pem')
vector_store = ElasticsearchStore(
index_name="example", es_client=es_client
)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(
documents,
storage_context=storage_context,
)
[版本]
elasticsearch=8.13.0
llama-index-vector-stores-elasticsearch=0.1.7
llama-index=0.10.28
Python Elasticsearch客户端elasticsearch[async]和elasticsearch都报告了相同的错误。
版本
0.10.28
重现步骤
我正在尝试通过使用VectorStoreIndex.from_documents方法生成嵌入。
相关日志/回溯
File "/opt/homebrew/Caskroom/miniconda/base/envs/rag/lib/python3.12/site-packages/llama_index/vector_stores/elasticsearch/base.py", line 281, in _create_index_if_not_exists
if await self.client.indices.exists(index=index_name):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: object HeadApiResponse can't be used in 'await' expression
4条答案
按热度按时间8fq7wneg1#
看起来您遇到了一个
TypeError
问题,原因是在与 LlamaIndex 集成的 Elasticsearch 中等待非协程对象时出现问题。当异步调用没有正确等待或尝试等待不支持异步操作的对象时,通常会出现此问题。鉴于您使用的库版本是最新的,这个问题可能是在最近的更新中解决的,或者是由于特定的使用模式导致了这个错误。以下是排查和可能解决该问题的步骤:
elasticsearch.AsyncElasticsearch
,并且没有将其与同步客户端混淆。TypeError
的具体操作。这可以帮助确定问题是出在如何使用 Elasticsearch 异步客户端上,还是出在您的异步代码结构上。如果在执行这些步骤后问题仍未解决,提供关于
VectorStoreIndex.from_documents
实现的更多详细信息以及导致错误的特定交互将有助于进一步诊断。来源
关于 Dosu
此响应旨在帮助您节省时间并提高效率。它不是精确的解决方案,而是您自己研究的一个起点。
请帮助我变得更有用!如果您觉得有帮助,请留下一个 👍 如果不相关的话请留下一个 👎 。
如果您想继续讨论,请用 @dosu-bot 开始回复。
mqxuamgl2#
请尝试更新您的Elastic客户端版本。关于此错误的大量回溯已经完成,这是由于您正在使用的Elastic客户端版本所致。
6qqygrtg3#
关于版本的任何特定指导?我在这个版本上看到了这个错误
elasticsearch: (8, 13, 0)
llama_index.core : 0.10.31
wrrgggsh4#
ElasticsearchStore
期望一个AsyncElasticsearch
对象来处理es_client
。这个需求在文档字符串中有描述。关于类型注解,可以更清晰一些。