Procházet zdrojové kódy

feat: support metadata condition filter string array (#23111)

Signed-off-by: kenwoodjw <blackxin55+@gmail.com>
tags/1.7.2
kenwoodjw před 3 měsíci
rodič
revize
28478cdc41
Žádný účet není propojen s e-mailovou adresou tvůrce revize

+ 2
- 0
api/core/app/app_config/entities.py Zobrazit soubor

"is not", "is not",
"empty", "empty",
"not empty", "not empty",
"in",
"not in",
# for number # for number
"=", "=",
"≠", "≠",

+ 2
- 0
api/core/rag/entities/metadata_entities.py Zobrazit soubor

"is not", "is not",
"empty", "empty",
"not empty", "not empty",
"in",
"not in",
# for number # for number
"=", "=",
"≠", "≠",

+ 2
- 0
api/core/workflow/nodes/knowledge_retrieval/entities.py Zobrazit soubor

"is not", "is not",
"empty", "empty",
"not empty", "not empty",
"in",
"not in",
# for number # for number
"=", "=",
"≠", "≠",

+ 22
- 0
api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py Zobrazit soubor

**{key: metadata_name, key_value: f"%{value}"} **{key: metadata_name, key_value: f"%{value}"}
) )
) )
case "in":
if isinstance(value, str):
escaped_values = [v.strip().replace("'", "''") for v in str(value).split(",")]
escaped_value_str = ",".join(escaped_values)
else:
escaped_value_str = str(value)
filters.append(
(text(f"documents.doc_metadata ->> :{key} = any(string_to_array(:{key_value},','))")).params(
**{key: metadata_name, key_value: escaped_value_str}
)
)
case "not in":
if isinstance(value, str):
escaped_values = [v.strip().replace("'", "''") for v in str(value).split(",")]
escaped_value_str = ",".join(escaped_values)
else:
escaped_value_str = str(value)
filters.append(
(text(f"documents.doc_metadata ->> :{key} != all(string_to_array(:{key_value},','))")).params(
**{key: metadata_name, key_value: escaped_value_str}
)
)
case "=" | "is": case "=" | "is":
if isinstance(value, str): if isinstance(value, str):
filters.append(Document.doc_metadata[metadata_name] == f'"{value}"') filters.append(Document.doc_metadata[metadata_name] == f'"{value}"')

+ 2
- 0
web/app/components/workflow/nodes/knowledge-retrieval/components/metadata/condition-list/utils.ts Zobrazit soubor

ComparisonOperator.endWith, ComparisonOperator.endWith,
ComparisonOperator.empty, ComparisonOperator.empty,
ComparisonOperator.notEmpty, ComparisonOperator.notEmpty,
ComparisonOperator.in,
ComparisonOperator.notIn,
] ]
case MetadataFilteringVariableType.number: case MetadataFilteringVariableType.number:
return [ return [

+ 2
- 2
web/i18n/zh-Hans/workflow.ts Zobrazit soubor

'not empty': '不为空', 'not empty': '不为空',
'null': '空', 'null': '空',
'not null': '不为空', 'not null': '不为空',
'in': '',
'not in': '不',
'in': '',
'not in': '不',
'all of': '全部是', 'all of': '全部是',
'exists': '存在', 'exists': '存在',
'not exists': '不存在', 'not exists': '不存在',

Načítá se…
Zrušit
Uložit