错误描述
我想为将数据加载到VectorStoreIndex中添加可观察性。遵循文档中的仪器化和使用Arize Phoenix进行可观察性的说明,只有生成的最后一个Embeddings批次被跟踪。当我查看属性选项卡时,所有块都显示在输入字段中。如何正确跟踪在创建索引期间创建的所有Embeddings?
版本
0.10.65
重现步骤
按照设置可观察性的说明进行操作:https://docs.arize.com/phoenix/tracing/integrations-tracing/llamaindex
使用SimpleDirectoryReader加载文档并从文档创建VectorStoreIndex。
相关日志/回溯
- 无响应*
3条答案
按热度按时间aemubtdh1#
为了在使用Arize Phoenix进行可观察性时,正确跟踪使用
LlamaIndexInstrumentor
为BaseEmbeddings.get_text_embedding_batch
创建的所有嵌入,请确保EmbeddingStartEvent
和EmbeddingEndEvent
被正确分派,并且回调管理器的事件得到妥善处理。以下是相关代码片段,展示了如何实现这一点:7gyucuyw2#
这并不能解决问题,它只是显示当前的实现,看起来似乎不起作用。
lymnna713#
要解决仅追踪最后一批生成的嵌入的问题,您应该确保
EmbeddingStartEvent
和EmbeddingEndEvent
为每批正确分派,并且回调管理器已正确配置以处理这些事件。以下是一些排查和可能解决此问题的方法:
确保
dispatcher
和callback_manager
已正确初始化和配置。调度器应在模块级别设置,回调管理器应正确分配给 LLM 组件。确认
EmbeddingStartEvent
和EmbeddingEndEvent
每批都分派。提供的代码片段应处理此问题,但您可能需要添加日志以验证这些事件是否按预期分派。确保回调管理器正确处理事件。对于每个事件,应调用
on_event_start
和on_event_end
方法,并正确记录有效载荷。以下是带有额外日志的代码片段增强版本,以帮助调试问题:
此代码在
EmbeddingStartEvent
和EmbeddingEndEvent
分派时添加了 print 语句。这可以帮助您验证事件是否为每批分派。此外,请确保与 Arize Phoenix 的集成已正确设置,并且事件正在捕获并发送到 Phoenix 服务器。如果问题仍然存在,您可能需要审查与 Arize Phoenix 的集成,以确保其正确配置以处理来自 LlamaIndex 1(https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/base/embeddings/base.py)2(https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/instrumentation/dispatcher.py) 的事件。