OpenAI是怎么搞RAG的
- 前一阵子,OpenAI在他们的demo day,分享了他们在RAG场景下的一些经验,其中的很多点还是很有意思的。
- OpenAI的第一个重要的实践就是问题路由和文档的分类。因为不同的问题所需要的信息可能是有比较大的差别的,有的问题需要对文档进行总结或者解读,有的需要查询结构化的数据,所以他们就先通过问题的意图判断,把它分成了需要查询结构化数据的text to SQL和需要查询非结构化数据的语义向量查询,这样召回内容的准确性就大大提高了。另外他们还把文档进行了分类,不同文档他们使用了不同优化的prompt,来提升语言模型的输出结果
- 他们另外一个重要的实践就是问题增强。他们使用了HyDE和查询扩展两种方式来增强用户的问题。这些方法能把用户的问题从不同角度生成多个查询。对于每个查询,它都会检索一组相关文档,然后获取所有查询的唯一并集。这种方法就大大提升了召回知识的覆盖度
- 这个分享最有意思的就是OpenAI分享了他们是怎么从45%左右的准确率,一步步优化到接近98%准确率的过程,其中有一些策略他们觉得是比较有效的,另外一些策略至少在他们的场景里,效果是很不明显的。就比如他们觉得reranking和问题增强都是比较有效能够增强准确率的方法。
- 在OpenAI现在的角度来看,RAG是不存在银弹的,也没有放之四海而皆准的法则,每个场景下都值得用这些策略去不断地尝试,看哪些策略是比较适合自己的。简单来说,现在的RAG就是用各种策略不断地进行缝缝补补,尝试找到场景下的最优解
- 如果大家对这次分享的细节比较感兴趣,可以去youtube的OpenAI官方账户去看他们的demo day的视频,或者去langchain的官方blog去看文字的总结
OpenAI是怎么搞RAG的
- 前一阵子,OpenAI在他们的demo day,分享了他们在RAG场景下的一些经验,其中的很多点还是很有意思的。
- OpenAI的第一个重要的实践就是问题路由和文档的分类。因为不同的问题所需要的信息可能是有比较大的差别的,有的问题需要对文档进行总结或者解读,有的需要查询结构化的数据,所以他们就先通过问题的意图判断,把它分成了需要查询结构化数据的text to SQL和需要查询非结构化数据的语义向量查询,这样召回内容的准确性就大大提高了。另外他们还把文档进行了分类,不同文档他们使用了不同优化的prompt,来提升语言模型的输出结果
- 他们另外一个重要的实践就是问题增强。他们使用了HyDE和查询扩展两种方式来增强用户的问题。这些方法能把用户的问题从不同角度生成多个查询。对于每个查询,它都会检索一组相关文档,然后获取所有查询的唯一并集。这种方法就大大提升了召回知识的覆盖度
- 这个分享最有意思的就是OpenAI分享了他们是怎么从45%左右的准确率,一步步优化到接近98%准确率的过程,其中有一些策略他们觉得是比较有效的,另外一些策略至少在他们的场景里,效果是很不明显的。就比如他们觉得reranking和问题增强都是比较有效能够增强准确率的方法。
- 在OpenAI现在的角度来看,RAG是不存在银弹的,也没有放之四海而皆准的法则,每个场景下都值得用这些策略去不断地尝试,看哪些策略是比较适合自己的。简单来说,现在的RAG就是用各种策略不断地进行缝缝补补,尝试找到场景下的最优解
- 如果大家对这次分享的细节比较感兴趣,可以去youtube的OpenAI官方账户去看他们的demo day的视频,或者去langchain的官方blog去看文字的总结