Cherry for SDU创新实训团队周报(五)

创新实训项目中期总结

一、项目整体进展

本项目基于Haystack框架构建生产级RAG(检索增强生成)系统,覆盖技术选型、核心功能开发、中文优化、服务器部署、前端交互全流程。通过五周迭代,实现以下核心成果:

  1. 技术架构分析:完成BM25检索、语义排序、Pipeline设计的深度解析。
  2. 功能验证:集成DeepSeek API,实现基础问答与RAG功能,发现BM25中文支持问题。
  3. 多维优化:引入jieba分词、流式输出、ChromaDB持久化存储,显著提升中文场景性能。
  4. 生产部署:完成Docker容器化部署与依赖配置,支持跨平台运行。
  5. 交互升级:基于FastAPI+SSE实现流式输出,搭建动态渲染前端界面。

二、分阶段进展与关键技术

1. 第一阶段(2025.04.02):Haystack技术架构分析
  • 目标:拆解框架核心模块,明确技术路线。
  • 关键技术
    • BM25检索算法:优化长文本匹配,公式如下:
      Score(D,Q)=∑i=1nIDF(qi)⋅f(qi,D)⋅(k1+1)f(qi,D)+k1⋅(1−b+b⋅∣D∣avgdl)Score(D, Q) = \sum_{i=1}^n IDF(q_i) \cdot\frac{ f(q_i, D) \cdot (k_1 + 1)}{ f(q_i, D) + k_1 \cdot (1 - b + b \cdot\frac{ |D|} { avg \text{dl}})}Score(D,Q)=i=1nIDF(qi)f(qi,D)+k1(1b+bavgdlD)f(qi,D)(k
为什么要引入`BM25`?一开始项目是只用向量检索的,有一次我问了一个问题“重排序是什么?”,八条向量检索都没有捕获到“重排序”片段,因为在原文中,“重排序”也只出现了一次,在一个小点中一笔带过。所以光靠向量检索不能够捕捉到这样微小的字眼…… 内容概要:本文详细介绍了在一个项目中采用BM25关键字检索与向量语义检索相结合的混合检索策略的原因、实现方式及其优势。由于纯向量检索在处理某些特定词汇(如“重排序”)时存在不足,引入BM25能够弥补这一缺陷,增强对稀有关键词的捕捉能力。文中阐述了如何利用Langchain组件BM25Retriever实现BM25检索,并通过EnsembleRetriever将BM25与向量检索结果进行融合,同时探讨了与重排序逻辑的整合方案。对于性能优化方面,提出了使用asyncio.to_thread()解决同步方法带来的阻塞问题,并讨论了使用MongoDB替代ChromaDB存储文档片段的可能性。 适合人群:对搜索引擎优化、信息检索技术感兴趣的开发者,尤其是那些希望提升自己项目检索效率的人群。 使用场景及目标:①希望通过引入BM25改进现有检索系统的精准度;②掌握如何在项目中集成BM25与向量检索,实现两者优势互补;③学习如何优化混合检索系统的性能,确保高效运行。 阅读建议:读者应重点关注BM25和向量检索的工作原理及其结合点,理解为什么这种混合策略能更好地解决问题。同时,对于涉及到的技术细节,如Langchain组件的具体用法、性能优化措施等,建议结合实际案例深入研究,以便更好地应用于自己的项目中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值