-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Description
Contact Information
MaxKB Version
每个版本
Problem Description
SELECT paragraph_id, comprehensive_score, comprehensive_score as similarity FROM ( SELECT DISTINCT ON ("paragraph_id") ( similarity ),* ,similarity AS comprehensive_score FROM ( SELECT *,ts_rank_cd(embedding.search_vector,websearch_to_tsquery('simple',%s),32) AS similarity FROM embedding ${keywords_query}) TEMP ORDER BY paragraph_id, similarity DESC ) DISTINCT_TEMP WHERE comprehensive_score>%s ORDER BY comprehensive_score DESC LIMIT %s
这是你们的全文检索sql 语句,通过验证和查看代码发现。
在子chunk层级进行ts_rank_cd的计算,实际上会导致段落被拆分后的子chunk可能无法反映整个段落的相关性。如果一个段落包含查询词“你好”和“世界”,但是被分割成两个子chunk,一个包含“你好”,另一个包含“世界”,那么这两个子chunk可能都会有较低的相似度分数,而实际的段落应该有较高的相似度。(甚至说第一个子chunk没有出现,”世界“,另外一个子 chunk没有”你好“,那么这个段落将不会返回)
建议你修改成对整个段落进行ts_rank_cd评分。
我发现你V2.2.1的代码也是如此。
Steps to Reproduce
在v1.10.8版本中使用大于256的段落,前256字符出现”你好“,不出现”世界“。另外一个子chunk范围内出现”世界“,不出现”你好“。query为你好世界,进行全文检索测试。
The expected correct result
No response
Related log output
Additional Information
No response