RAG技术(AI搜索引擎技术)应用实践
OpenAI分享了他们如何通过prompt工程结合finetuning,将准确率从45%提升到98%的经验。
客户需求:
客户有大量文档(比如10万份),希望模型仅基于这些文档进行知识检索。
解决方案:
- 直接将PDF和docx文件嵌入:最初的准确率是45%。
- 经过20次调优迭代:解决了细节小Bug,准确率提升至65%。
- 基于规则的优化:比如先判断问题属于什么领域,再回答,效果提升至85%。
- 结构化数据提取:发现部分数据是结构化数据(如表格),针对这些数据定制提取方案,准确率提升至98%。
开源项目参考:
- Haystack:一个开源的RAG框架,用于构建基于文档检索的问答系统。GitHub地址:Haystack
- Langchain:一个流行的框架,可以轻松集成大语言模型和文档检索系统。GitHub地址:Langchain
视频地址:OpenAI RAG最佳实践
OpenAI分享RAG技术最佳实践(2)
客户需求:
生成SQL查询:根据自然语言问题和数据库模式生成语法正确的SQL查询。
解决方案:
- 最简单方法:余弦相似性:最初使用余弦相似性搜索类似问题的SQL查询,效果不佳。
- 针对特定问题进行假设查询搜索:用预设的文档嵌入生成SQL查询进行相似性搜索,效果有所改善。
- 上下文检索:对问题进行难度排序,只返回相同难度的问题。
- 链式推理:通过推理识别列和表,构建查询。
- 自我一致性检查:通过自我一致性检查,模型生成查询并运行,出错时会给出提示并重新尝试。
通过微调,模型准确率从69%提升到83.5%。
开源项目参考:
- GPT-3 SQL Generator:一个使用GPT-3生成SQL查询的项目,能够从自然语言生成SQL查询。GitHub地址:GPT-3 SQL Generator
- SQLova:一个将自然语言转化为SQL查询的开源项目。GitHub地址:SQLova
总结
提高语言模型(LM)性能的最佳实践:
- 从简单的提示工程开始:通过小规模的迭代来验证技术可行性。
- 过程非线性:从问题的提出到解决过程中,可能会遇到不断调整的情况,需要反复优化。
- 数据评测与标准化:建立好评测标准和样本集合,才能发现潜在的优化空间。