个人技术分享


前言

前阵子写了篇Text2SQL的简单介绍,发现其也是RAG只会,写下了Text2SQL之不装了,我也是RAG

最近也一直在做Text2SQL的优化,于是把自己的一些心得,总结于这篇文章。

一、优化方向

既然本质是RAG,那顺着RAG的优化方向走,准没错。

  • 文档增强:
    • 对文档进行摘要:先对摘要进行检索,如果有必要,才深入文档细节
    • 对文档进行QA生成:同时检索文档和生成的QA
    • 数据清洗,去除文档中存在的特殊字符或不相关信息
  • 元数据过滤:例如对query和文档分类,对应类别的query只查找对应类别的文档,能有效提升检索效率和召回率
  • 混合检索:语义检索 + 关键词检索
  • query改写:让LLM对query改写,在嵌入空间中,看似相同的两个问题并不一定很相似
    • 同义词替换:例如,将“LLM”、“大语言模型”和“大模型”标准化为通用术语。
    • 缩写替换
  • query分解:将复杂query分解成多个子问题,逐个进行匹配,然后汇总文档,生成答案
  • HyDE: 用LLM直接生成query的回答,将生成的答案与query 拼接,再进行RAG
  • 文档分块优化:
    • 内容重叠分块&