Bug描述
我有一个带有Llamaindex的PostgreSQL数据库,并在其中进行过滤搜索。许多操作符都可以正常工作,但文本匹配过滤器无法正常工作。我使用的是Llamaindex的最新版本。包括文本匹配在内的过滤操作符列表如下:https://docs.llamaindex.ai/en/v0.10.17/api/llama_index.core.vector_stores.FilterOperator.html
版本
llama-index-0.10.45
重现步骤
我的代码:
filters = MetadataFilters(
filters=[
MetadataFilter(key="title",
operator=FilterOperator.TEXT_MATCH,
value="Graph RAG")
]
)
或者:operator="text_match"
其余代码基本上类似于https://docs.llamaindex.ai/en/stable/examples/vector_stores/postgres/
相关日志/回溯
It gives this error:
operator: FilterOperator.TEXT_MATCH, fallback to '='
2条答案
按热度按时间mkshixfv1#
嘿 @BurnyCoder! 我来帮助你解决仓库中的任何错误、问题或贡献。让我们一起解决你的问题。
在
sql_operator_mapper
字典中,TEXT_MATCH
过滤器操作符Map到 SQL 的LIKE
操作符。如果TEXT_MATCH
过滤器操作符无法识别并回退到默认的=
操作符,可能是由于代码中FilterOperator
的使用或引用存在问题。确保
FilterOperator.TEXT_MATCH
在你的过滤搜索逻辑中正确导入和使用。以下是相关的代码片段:此外,
PGVectorStore
类中的_to_postgres_operator
方法负责将FilterOperator
值转换为相应的 SQL 操作符。请确保此方法包括FilterOperator.TEXT_MATCH
的情况:确保你的过滤搜索逻辑正确引用
FilterOperator.TEXT_MATCH
并使用sql_operator_mapper
字典将其Map到LIKE
操作符。如果问题仍然存在,可能还有其他地方的代码中处理或应用过滤器操作符时出现问题。此外,你可以参考
llama-index-integrations/vector_stores/llama-index-vector-stores-postgres/tests/test_postgres.py
文件中的测试用例,以确保你的实现与预期行为一致。测试用例涵盖了各种场景,包括使用不同的过滤器操作符,可以帮助你发现代码中的任何差异 1(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/vector_stores/llama-index-vector-stores-lancedb/llama_index/vector_stores/lancedb/util.py)2(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/vector_stores/llama-index-vector-stores-postgres/llama_index/vector_stores/postgres/base.py)3(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/vector_stores/llama-index-vector-stores-postgres/tests/test_postgres.py)。eiee3dmh2#
该过滤器类型目前尚未实现,有人应该提交PR来添加它。