0x0 LightRag 简介
“LightRAG”是一个轻量级的检索增强生成(Retrieval-Augmented Generation, RAG)框架,由香港大学数据科学实验室开发。它通过结合知识图谱和向量检索技术,优化了传统RAG系统在处理复杂知识关系和检索效率方面的不足
Q: 为什么要使用LightRag?
A: 涉及到LightRag特性(优势):
1. **知识图谱与向量检索结合**
2. **双重检索机制**
3. **高效与低成本(重点)**
4. **增量更新能力**
0x01 LightRag 获取
1.若只需要使用LightRag本身, 直接 pip 安装使用即可。
pip install lightrag-hku
2.若对LightRag有二开, 服务化的需求 则请自行fork源码
git clone https://github.com/HKUDS/LightRAG.git
注意: lightrag 的相关依赖需要 python.version ≥ 3.9 的运行环境
0x02 LightRag 依赖安装
1.安装依赖
pip install -r requirements.txt
2.可能遇到的问题[1] - hnswlib编译错误类似(win11环境下):
该错误是因为 LightRag 的依赖包中存在对于HNSW 开源向量索引的依赖
解决方式可以参考: Not able to install hnswlib · Issue #648 · pypa/packaging-problems · GitHub 这里的指引进行解决。
当然, 若不使用相关功能, 使用本地存储数据(文件) / 使用NoSql 则可以直接注释。(不要为难自己)
0x03 (原) 启动
-
可以在 /LightRag/examples 中找到对应的启动demo, 假如使用的是 openAI的LLM, 则使用 lightragopenaidemo.py 作为启动样例即可。
-
注意启动目录(Working directory) 最好配置在项目根目录。 启动目录的相关影响跟知识就不赘述了。
-
若使用LLM, 则需要添加相关的[密钥]的环境变量。
Light 在环境变量需要怎么配置方面没有很详细的说明。(工程化做的不是很好)
但是可以通过 /lightrag/llm.py 中搜索 "os.environ" 来获得需要配置的信息。 (当然有的demo.py 中可能会有做assert, 但是不要有过多期待。)
注意需要添加环境变量 (建议在项目中添加)
4. 简易代码说明:
# 初始化rag -- 此处可以定 rag使用的 llm 以及相关的 storage 配置
rag = LightRAG(...)
# 插入知识库 -- 对相关文档进行拆词, 向量化处理
rag.insert(doc_str)
# 使用 知识库,llm 进行问题回答
rag.query(question_str, param=QueryParam(...))
对于 QueryParam 可以采用多种模式 "naive", "local", "global", "hybrid" 。 对于不同模式的原理可以参考这个技术不咋行的up的博客 LightRAG基础原理解析-CSDN博客
0x04 存储数据库引入
LightRag 在初始化时可以指定 rag使用的存储引擎:
- 除此之外, 还需要指定 文档存储的db
0x05 postgres 相关组件安装
LightRag 依赖 pg插件 vector , age 。
可以通过 确认安装了哪些插件。
SELECT * FROM pg_extension;
vector 插件安装 (linux)
# 安装编译插件依赖
sudo apt-get update
sudo apt-get install build-essential libpq-dev zlib1g-dev
# 拉取插件代码
git clone https://github.com/pgvector/pgvector.git
cd pgvector
# 编译,安装
make
make install
# !!! 本地登录 pg 执行 (一定要宿主机登录)
CREATE EXTENSION vector;
age 插件安装 (linux)
方法同上, 插件仓库使用
git clone https://github.com/apache/age.git