策略一:智能检索优化
1. 动态Top-K调整
# 示例:基于查询复杂度动态调整检索数量
def dynamic_top_k(query, base_k=3, max_k=20):
query_complexity = estimate_query_complexity(query)
# 复杂查询增加检索量,简单查询减少
adjusted_k = min(max_k, max(base_k, int(base_k * query_complexity)))
return adjusted_k
即不是固定的返回的多少个文档切片,而是根据文档的复杂程度来决定,如果简单问题,则范围3个左右,而问题复杂则范围15-20个。
2. 检索结果预过滤
在向量相似度检索前,先使用轻量级的关键词匹配或元数据过滤,缩小搜索范围:
3. 分层检索架构
第一层:快速但粗略的检索(如BM25)
第二层:精确但较慢的向量检索
第三层:仅在必要时使用的重排序模型