IncarnaMind 项目介绍
简而言之
IncarnaMind 是一个创新性的平台,您可以通过大型语言模型(LLMs),例如 GPT,与您个人的文档(如 PDF 和 TXT 文件)进行交流。虽然 OpenAI 最近推出了 GPT 模型的微调 API,但它并不能让基础预训练模型学习新数据,且其回答可能会有事实性错误。IncarnaMind 提供了一种灵活的滑动窗口分块机制和集成检索器,使得在处理文档中的细粒度和粗粒度信息时更加高效。
最新更新
开源与本地 LLMs 支持
- 推荐模型:我们主要使用并推荐 Llama2 系列模型中的 llama2-70b-chat 进行测试。无论是完整版本还是 GGUF 版本,都是最佳的选择。用户可以尝试使用其他大型语言模型。
- 系统要求:运行 GGUF 量化版本需要超过 35GB 的 GPU 内存。
备选开源 LLMs 选项
- 内存不足:如果您的 GPU 内存有限,可以考虑使用 Together.ai API,它支持大多数开源 LLMs,包括 llama2-70b-chat。此外,用户注册后还可以获得 25 美元的免费使用额度。
- 即将推出:未来将推出更小且具成本效益的微调模型。
如何使用 GGUF 模型
有关获取和使用量化 GGUF LLM 的说明,请观看此视频(从 10:45 播放到 12:30)。
解决的挑战
- 固定分块问题:传统的 RAG 工具依赖固定的分块大小,难以适应不同数据复杂性和上下文的处理。
- 精确性与语义性:现有检索方法通常偏重语义理解或精确检索,两者兼顾的却很少。
- 单文档限制:许多解决方案只能查询一个文档,限制了多文档信息检索。
- 稳定性:IncarnaMind 兼容 OpenAI GPT、Anthropic Claude、Llama2 及其他开源 LLMs,确保解析的稳定性。
核心功能
- 自适应分块:提供滑动窗口分块技术,可以根据数据复杂性和上下文动态调整窗口大小和平衡细粒度和粗粒度数据获取。
- 多文档对话式问答:支持简单及多跳查询,可以跨多个文档同时进行检索,打破单文档限制。
- 文件兼容性:支持 PDF 和 TXT 文件格式。
- 语言模型兼容性:支持 OpenAI GPT、Anthropic Claude、Llama2 及其他开源的大型语言模型。
架构概览
IncarnaMind 的架构采用灵活的设计,支持多种大型语言模型的集成。使用滑动窗口分块技术以适应不同的文档复杂性和上下文需求。
快速开始
安装步骤
-
前提条件:
- 需要使用 Python 3.8 至 3.11 版本,以及 Conda 进行环境管理。
- 您需要相关 API 的密钥用于访问大型语言模型。
- 当然,还有您的个人文档。
-
克隆代码仓库:
git clone https://github.com/junruxiong/IncarnaMind cd IncarnaMind
-
设置环境: 创建并激活 Conda 虚拟环境,然后安装所需依赖项。
使用方法
-
上传并处理文件: 将您的文件放入
/data
目录并运行如下命令进行数据处理:python docs2db.py
-
运行程序: 启动交互会话:
python main.py
-
开始聊天,提问: 在脚本提示输入后便可进行交互。
限制和未来计划
- 当前版本尚不支持引用功能,但即将推出。
- 支持的异步操作能力有限。
- 将引入用户界面、微调的小型开源 LLMs、更过的文本格式支持等功能。
致谢
特别感谢 Langchain、Chroma DB、LocalGPT 和 Llama-cpp 的贡献,他们的工作对 IncarnaMind 项目的完成给予了重要支持。
引用
如果您想引用我们的工作,请使用以下 Bibtex 条目:
@misc{IncarnaMind2023,
author = {Junru Xiong},
title = {IncarnaMind},
year = {2023},
publisher = {GitHub},
journal = {GitHub Repository},
howpublished = {\url{https://github.com/junruxiong/IncarnaMind}}
}
许可证
项目使用 Apache 2.0 许可证。