LightRAG: 轻量级检索增强生成系统

查看 28|回复 0
作者:suke119   
试了下LightRAG 本地化 rag 中的翘楚,效果非常不错,搭配 ollama 。
如图随便找个文档,示例是从裁判文书下载的文档

快速上手的话直接 pip 安装即可:
pip install lightrag-hku
注意事项
  • llm_model_max_token_size 配置 32768后,服务端 ollama 的OLLAMA_NUM_PARALLEL并发数就不要配置了,如果配置则这个参数乘以对应的数值就会显存爆炸
  • 其次 图谱生成的配置中并不是完成本地化的,对应的图谱 js 的 cdn 是外面的

    ollama demo
    import os
    import logging
    from lightrag import LightRAG, QueryParam
    from lightrag.llm import ollama_model_complete, ollama_embedding
    from lightrag.utils import EmbeddingFunc
    # 设置日志级别
    logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.INFO)
    # 创建工作目录
    WORKING_DIR = "./my_rag_project"
    os.makedirs(WORKING_DIR, exist_ok=True)
    # 初始化 LightRAG,使用 Ollama 模型
    rag = LightRAG(
        working_dir=WORKING_DIR,
        llm_model_func=ollama_model_complete,
        llm_model_name="qwen2:7b",  # 使用 qwen 模型
        llm_model_max_async=4,  # 最大并发请求数
        llm_model_max_token_size=32768,
        llm_model_kwargs={
            "host": "http://localhost:11434",  # Ollama 服务地址
            "options": {"num_ctx": 32768}  # 上下文窗口大小
        },
        embedding_func=EmbeddingFunc(
            embedding_dim=768,
            max_token_size=8192,
            func=lambda texts: ollama_embedding(
                texts,
                embed_model="nomic-embed-text",  # 使用 nomic-embed-text 作为嵌入模型
                host="http://localhost:11434"
            ),
        ),
    )
    # 插入文档并进行查询
    documents = [
        "人工智能(AI)是计算机科学的一个分支,致力于开发能模拟人类智能的系统。",
        "机器学习是 AI 的核心技术之一,它使计算机能够从数中学习和改进。",
        "深度学习是机器学习的一个子领域,使用多层神经网络处理复杂问题。"
    ]
    # 插入文档
    rag.insert(documents)
    # 使用不同的检索模式进行查询
    modes = ["naive", "local", "global", "hybrid"]
    query = "请解释 AI 、机器学习和深度学习之间的关系"
    for mode in modes:
        print(f"\n 使用{mode}模式的查询结果:")
        result = rag.query(query, param=QueryParam(mode=mode))
        print(result)
    全文内容
    https://stable-learn.com/zh/lightrag-introduction/
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部