前不久刚做了一个基于本地知识库的问答系统设计,也尝试了不同的大语言模型,Embedding 模型组合什么的,最终在如何评测系统的性能上犯了困,在中文社区短暂的搜索了一下,感觉大家讲的要么是自己的经验之谈,要么避重就轻,不好好完整的介绍这个框架的具体实现细节,接下来我将从如何使用这个框架和我使用时的问题和解决方式给出回答。
本文所有的参考资料都来源于:
1.https://
docs.ragas.io/en/stable/getstarted/index.html2.Es, S., James, J.,Espinosa-Anke, L., & Schockaert, S. (2023). RAGAs: Automated Evaluation ofRetrieval Augmented Generation. arXiv preprintarXiv:2309.15217.
一.如何使用
按照官方的说明,使用这个框架需要用户提供四个用户参数,分别是:
1. question:输入给你的 RAG 应用的问题
2. answer:RAG 应用基于 question 生成的答案
3. contexts:RAG 应用基于 question 检索到的上下文
4. ground_truths: 对应 question 的参考答案
在按照官方文档配置好这些参数后,就可以直接进行评估这四个关键指标了
1.忠诚度( Faithfulness )
2.上下文精确度(Context-precision)
3.答案相关性(Answer-relevancy)
4.上下文召回率(Context-recall)
然而在实际计算中我发现,它无法将中文的问题很好的分割成陈述句,这计算出来的值就不对,但是转换为对应英文就对了,考虑到中英都是转换为带有语义的高维向量,就可以理解了。英文转的向量和中文转的向量,在空间上肯定离的远,因此这个框架只适用评估英文问题。
例如这张图片所示:
https://github.com/BlackSiao/LangChain-OpenAI-gradio/blob/main/img/%E5%BF%A0%E8%AF%9A%E5%BA%A6%E8%AE%A1%E7%AE%97%E9%97%AE%E9%A2%98.png2.同上所述,在实际应用中,即使我提供了评估所需的参数,然后在设置向量数据库为大 ChunkSize 的情况下,有时候会出现评估结果丢失的情况,虽然我们在进行测试的时候都是几百个数据测,丢失一二个数据好像没什么大碍,但是实在影响用户体验,并且我去网上搜了一圈也没有找到问题所在。只能通过我的实际使用发现,在设置文本切割时为小 ChunkSize 的时候评估指标都被计算出来了。而 ChunkSIze 越大,最后生成的结果丢失越严重。
三.如果你也是使用 LangChain 框架搭建的本地知识库应用,可以参考我发布的测试代码进行测试:
https://github.com/BlackSiao/LangChain-OpenAI-gradio/blob/main/%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE/RAGAs%E6%B5%8B%E8%AF%95.py
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/1040544
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.