首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开源RAG项目实现准确高效召回,比同类LLM知识库效果更好

IncarnaMind是一个可通过大语言模型(LLMs)与多个文档(PDF、TXT等)同时聊天的开源项目。项目使用了Langchain框架,向量数据库选用Chroma DB。

虽然OpenAI最近推出了GPT-3.5模型的微调API,但它不允许预训练模型学习最新的数据,且响应内容产生幻觉。利用IncarnaMind的窗口分块机制和集成检索器,可有效查询用户的地面真实文档中的精细和粗粒度信息,以增强LLMs的功能。

01 功能

1. 文档交互:用户可以上传他们的文档(如 PDF、TXT)并与之进行交互聊天。

2. 多文档查询:不仅限于单一文档,用户可以同时在多个文档上执行简单和多跳查询。

3. 自适应内容分块:该工具能够动态地调整文本块的大小和位置,以提高查询的准确性。

4. 模型兼容性:支持多种大语言模型,如 OpenAI GPT 和 Anthropic Claude。

02 工作原理

IncarnaMind 与其他同类型工具的主要区别在于其独特的特点和方法,使其在与文档交互时更为高效和准确。以下是 IncarnaMind 的一些独特之处:

1. 自适应分块:IncarnaMind 能够动态地调整文本块的大小和位置,以提高查询的准确性。这意味着它可以根据查询的内容和上下文自动调整分块策略,而不是简单地使用固定大小的窗口。

2. 混合搜索方法:它结合了基于嵌入的方法和 BM25 方法进行混合搜索。这种组合使得搜索更为准确,因为它结合了两种不同的搜索策略的优点。

3. 检索增强生成(RAG):一旦找到相关的文本块,这些块被送入大型语言模型进行进一步的处理。这种方法结合了检索和生成两个步骤,使得生成的答案更为相关和准确。

4. 模型兼容性:IncarnaMind 支持多种大型语言模型,如 OpenAI GPT 和 Anthropic Claude。这为用户提供了更多的选择,使他们可以根据自己的需求选择最合适的模型,项目基于Langchain框架实现,这使得切换其他大语言模型变得简单。

5. 针对长文档的优化:IncarnaMind 特别针对长文档进行了优化,使其能够有效地处理和查询大量的文本内容。

03 值得借鉴

通过查看项目的开源代码,这个项目是有一些值得借鉴之处的:

1. 用LLM将用户的提问转换成独立查询。当用户提问后,它先针对问题和历史消息,让LLM对问题重新提炼,拆分成多个独立查询。举例来说:

用户提问:“Transformer论文作者是谁?”LLM回复:“Ashish Vaswani,....”用户提问:“那这篇论文和GPT论文有什么区别?”

上面的两个用户问题和一个LLM回复提交给LLM后,LLM将其提炼成两个独立的查询:“论文《Attention is all you need》的内容是什么?”,“论文《GPT》的内容是什么?”。

这样做的好处就是在做相似度检索时,能过滤掉用户输入问题的无用信息,检索效果更好。

2. 用小分块保证尽可能找到更多的相关内容,用大分块保证内容完整性。如果是用Embedding做相似度检索,第一步就是要对文档进行分块,分块太大的话检索效果要差一些,分块太小检索出来的内容不完整。

所以它在分块时,分的比较小,但在分块的元数据中会保留大块的信息,当做相似度检索时,借助滑块遍历结果时,可以根据小块反向找出大块,这样最终在提交给LLM作为上下文时,可以提交完整的段落,不影响上下文的效果。

这个实现思路在Langchain中也有实践,父文档检索器(Parent Document Retriever)通过分割和存储小块数据来达到平衡。在检索过程中,首先获取小块,然后查找这些块的父 ID,并返回那些较大的文档。

04

IncarnaMind 项目依旧在持续更新,接下来开发者计划推出的新功能包括:加上前端UI界面、OCR支持、回复的异步优化、支持开源的LLM、支持更多文档格式。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O1cGm7eu82wdN0JhBXr6LuQw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券