OpenAI分享的他们如何实现RAG技术

274 阅读3分钟

RAG技术(AI搜索引擎技术)应用实践

OpenAI分享了他们如何通过prompt工程结合finetuning,将准确率从45%提升到98%的经验。

客户需求:

客户有大量文档(比如10万份),希望模型仅基于这些文档进行知识检索。

解决方案:

  1. 直接将PDF和docx文件嵌入:最初的准确率是45%。
  2. 经过20次调优迭代:解决了细节小Bug,准确率提升至65%。
  3. 基于规则的优化:比如先判断问题属于什么领域,再回答,效果提升至85%。
  4. 结构化数据提取:发现部分数据是结构化数据(如表格),针对这些数据定制提取方案,准确率提升至98%。

开源项目参考:

  • Haystack:一个开源的RAG框架,用于构建基于文档检索的问答系统。GitHub地址:Haystack
  • Langchain:一个流行的框架,可以轻松集成大语言模型和文档检索系统。GitHub地址:Langchain

视频地址OpenAI RAG最佳实践

OpenAI分享RAG技术最佳实践(2)

客户需求:

生成SQL查询:根据自然语言问题和数据库模式生成语法正确的SQL查询。

解决方案:

  1. 最简单方法:余弦相似性:最初使用余弦相似性搜索类似问题的SQL查询,效果不佳。
  2. 针对特定问题进行假设查询搜索:用预设的文档嵌入生成SQL查询进行相似性搜索,效果有所改善。
  3. 上下文检索:对问题进行难度排序,只返回相同难度的问题。
  4. 链式推理:通过推理识别列和表,构建查询。
  5. 自我一致性检查:通过自我一致性检查,模型生成查询并运行,出错时会给出提示并重新尝试。

通过微调,模型准确率从69%提升到83.5%。

开源项目参考:

  • GPT-3 SQL Generator:一个使用GPT-3生成SQL查询的项目,能够从自然语言生成SQL查询。GitHub地址:GPT-3 SQL Generator
  • SQLova:一个将自然语言转化为SQL查询的开源项目。GitHub地址:SQLova

总结

提高语言模型(LM)性能的最佳实践:

  1. 从简单的提示工程开始:通过小规模的迭代来验证技术可行性。
  2. 过程非线性:从问题的提出到解决过程中,可能会遇到不断调整的情况,需要反复优化。
  3. 数据评测与标准化:建立好评测标准和样本集合,才能发现潜在的优化空间。

参考链接: