海外からのアクセス:www.kdjingpai.com
Ctrl + D このサイトをブックマークする

LightRAG 是一个由香港大学数据科学学院团队开发的开源Python框架,旨在简化和加速检索增强生成(RAG)应用的构建过程。 它通过将知识图谱与传统的向量检索技术相结合,为大语言模型(LLM)提供更精确、更具上下文关联性的信息,从而提升生成内容的质量。 该框架的核心特点是其轻量化和模块化设计,它将复杂的RAG流程分解为文档解析、索引构建、信息检索、内容重排和文本生成等多个独立的组件。这种设计不仅降低了开发者的使用门槛,还提供了高度的灵活性,允许用户根据具体需求轻松替换或自定义不同的模块,例如集成不同的向量数据库、图数据库或大语言模型。 LightRAG专为需要处理复杂信息和深度关系的场景设计,致力于解决传统RAG系统中文本信息碎片化、缺乏深层联系的问题。

 

機能一覧

  • モジュール設計: 将RAG流程分解为文档解析、索引、检索、重排和生成等清晰的模块,易于理解和定制。
  • 知识图谱集成: 能够从非结构化文本中自动提取实体和关系,构建知识图谱,从而实现对信息更深层次的理解和关联。
  • 双层检索机制: 结合了基于向量的相似度搜索和基于知识图谱的关联检索,能够同时处理针对具体细节(局部)和宏观概念(全局)的查询。
  • 灵活的存储选项: 支持多种存储后端,包括用于键值对存储的Json、PostgreSQL、Redis;用于向量存储的FAISS、Chroma、Milvus;以及用于图存储的Neo4j、PostgreSQL AGE等。
  • 模型兼容性强: 支持接入多种大语言模型(LLM)和嵌入模型(Embedding Model),包括OpenAI、Hugging Face和Ollama等平台提供的模型。
  • マルチファイル・フォーマット対応: 能够处理包括PDF、DOCX、PPTX、CSV和纯文本在内的多种文档格式。
  • 視覚化ツール: 提供Web界面,支持知识图谱的可视化探索,让用户能直观地看到数据之间的关联。
  • マルチモーダル機能: 通过与RAG-Anything集成,扩展了对图像、表格、公式等多模态内容的处理能力。

ヘルプの使用

LightRAG 是一个功能强大且易于使用的框架,旨在帮助开发者快速搭建基于自有知识库的智能问答系统。它最大的特色是结合了知识图谱,使得检索结果不仅相关,而且逻辑关系更强。下面将详细介绍其安装和使用流程。

取り付け

开始使用 LightRAG 非常简单,可以通过 Python 的包管理器 pip 直接安装。推荐安装包含API和Web界面的完整版本,这样可以体验到包括知识图谱可视化在内的全部功能。

  1. PyPI経由でのインストール:
    ターミナルを開き、以下のコマンドを実行する:

    pip install "lightrag-hku[api]"
    

    这条命令会安装 LightRAG 的核心库以及其服务器所需的相关依赖。

  2. 環境変数の設定:
    安装完成后,需要配置运行环境。LightRAG 提供了一个环境文件模板 env.example。你需要将它复制为 .env 文件,并根据你的情况修改配置,最关键的是设置大语言模型(LLM)和嵌入模型(Embedding Model)的API密钥。

    cp env.example .env
    

    接着用文本编辑器打开 .env 文件,填入你的 OPENAI_API_KEY 或其他模型的访问凭证。

  3. サービス開始:
    配置完成后,直接在终端运行以下命令即可启动 LightRAG 服务:

    lightrag-server
    

    服务启动后,你就可以通过浏览器访问其提供的Web界面,或通过API与其交互。

コア使用プロセス

LightRAG 的核心编程流程遵循一个清晰的 RAG 逻辑:数据投喂 -> 索引构建 -> 查询生成。下面通过一个简单的Python代码示例来演示如何使用 LightRAG Core 实现一个完整的问答流程。

  1. 初始化 LightRAG 实例
    首先,你需要导入必要的模块并创建一个 LightRAG 实例。在初始化时,必须指定工作目录(用于存放数据和缓存)、嵌入函数和LLM函数。

    import os
    import asyncio
    from lightrag import LightRAG, QueryParam
    from lightrag.llm.openai import gpt_4o_mini_complete, openai_embed
    from lightrag.kg.shared_storage import initialize_pipeline_status
    # 设置工作目录
    WORKING_DIR = "./rag_storage"
    if not os.path.exists(WORKING_DIR):
    os.mkdir(WORKING_DIR)
    # 设置你的OpenAI API密钥
    os.environ["OPENAI_API_KEY"] = "sk-..."
    async def initialize_rag():
    # 创建LightRAG实例,并注入模型函数
    rag = LightRAG(
    working_dir=WORKING_DIR,
    embedding_func=openai_embed,
    llm_model_func=gpt_4o_mini_complete,
    )
    # 重要:必须初始化存储和处理管道
    await rag.initialize_storages()
    await initialize_pipeline_status()
    return rag
    

    銘記するinitialize_storages() 歌で応える initialize_pipeline_status() 这两个初始化步骤是必需的,否则程序会报错。

  2. 投喂数据 (Insert)
    初始化完成后,你就可以向 LightRAG 中添加你的文本数据了。ainsert 方法接收一个字符串或字符串列表。

    async def feed_data(rag_instance):
    text_to_insert = "史蒂芬·乔布斯是一位美国商业巨头和发明家。他是苹果公司的联合创始人、董事长和首席执行官。乔布斯被广泛认为是微型计算机革命的先驱。"
    await rag_instance.ainsert(text_to_insert)
    print("数据投喂成功!")
    

    在这一步,LightRAG 会在后台自动对文本进行分块、提取实体和关系、生成向量嵌入,并构建知识图谱。

  3. 查询数据 (Query)
    数据投喂并建立索引后,就可以进行查询了。aquery 方法接收一个问题,并通过 QueryParam 对象来控制查询的行为。

    async def ask_question(rag_instance):
    query_text = "谁是苹果公司的联合创始人?"
    # 使用QueryParam配置查询模式
    # "hybrid" 模式结合了向量搜索和图检索,推荐使用
    query_params = QueryParam(mode="hybrid")
    response = await rag_instance.aquery(query_text, param=query_params)
    print(f"问题: {query_text}")
    print(f"答案: {response}")
    
  4. 组合并运行
    最后,我们将以上步骤整合到一个主函数中并使用 asyncio 来运行。

    async def main():
    rag = None
    try:
    rag = await initialize_rag()
    await feed_data(rag)
    await ask_question(rag)
    except Exception as e:
    print(f"发生错误: {e}")
    finally:
    if rag:
    # 程序结束时释放存储资源
    await rag.finalize_storages()
    if __name__ == "__main__":
    asyncio.run(main())
    

查询模式详解

LightRAG 提供了多种查询模式,以适应不同的应用场景:

  • naive: 基础的向量搜索模式,适用于简单的问答。
  • local: 侧重于与查询直接相关的实体信息,适合需要精确、具体答案的场景。
  • global: 侧重于实体之间的关系和全局知识,适合需要宏观、关联性答案的场景。
  • hybrid: 结合了 local 歌で応える global 的优点,是功能最全面、效果通常也最好的模式。
  • mix: 集成了知识图谱和向量检索,是大多数情况下的推荐模式。

通过在 QueryParam セットアップ mode 参数,你可以灵活地切换这些模式,以达到最佳的查询效果。

アプリケーションシナリオ

  1. 智能客服与问答系统
    企业可以将产品手册、帮助文档、历史客服记录等内部资料注入LightRAG,构建一个能够准确、快速回答客户问题的智能客服机器人。 由于结合了知识图谱,系统不仅能找到答案,还能理解问题背后的关联信息,提供更全面的解答,例如在回答一个产品功能问题时,可以一并提供相关的使用技巧或常见问题链接。
  2. 企业内部知识库管理
    对于拥有海量内部文档(如技术文档、项目报告、规章制度)的企业,LightRAG可以将其转化为一个结构化的、可智能查询的知识库。 员工可以用自然语言提问,快速定位到需要的信息,甚至发现不同文档之间隐藏的联系,极大地提升了信息检索效率和知识利用率。
  3. 科研与文献分析
    研究人员可以利用LightRAG处理大量的学术论文和研究报告。 系统能够自动抽取出关键的实体(如技术、学者、实验)、概念及其关系,并构建成知识图谱。这使得研究人员可以轻松地进行跨文档的知识探索,例如查询“某个技术在不同研究中的应用”或“两位学者之间的合作关系”,从而加速科研进程。
  4. 金融与法律文档分析
    在金融和法律等专业领域,文档通常内容复杂、体量巨大。LightRAG能够帮助分析师或律师快速从年报、招股书、法律条款等文件中提取关键信息,并梳理其中的逻辑关系。 例如,可以快速找出合同中的所有责任方及其对应的权责条款,或者分析多家公司财报中关于同一项业务的描述,从而辅助决策。

品質保証

  1. LightRAG 与 LangChain 或 LlamaIndex 这类通用框架有什么不同?
    LightRAG 的核心区别在于它专注于将知识图谱深度整合到 RAG 流程中,旨在解决传统 RAG 信息碎片化的问题。 而 LangChain 和 LlamaIndex 是功能更广泛、更通用的LLM应用开发框架,它们提供了大量的工具和集成选项,但学习曲线也相对陡峭。LightRAG 则更轻量级,目标是为开发者提供一个简单、快速且高效的、以内置知识图谱为特色的RAG解决方案。
  2. 使用 LightRAG 对大语言模型(LLM)有什么特殊要求吗?
    是的,由于 LightRAG 需要利用 LLM 从文档中提取实体和关系来构建知识图谱,这对模型的指令遵循能力和上下文理解能力有较高要求。 官方建议使用参数量至少达到320亿的模型,并且上下文窗口长度至少为32KB,推荐64KB,以确保能处理较长的文档并准确完成实体抽取任务。
  3. LightRAG 支持哪些类型的数据库?
    LightRAG 的存储层是模块化的,支持多种数据库实现。对于键值存储(KV Storage),它支持本地JSON文件、PostgreSQL、Redis和MongoDB。对于向量存储(Vector Storage),支持NanoVectorDB(默认)、FAISS、Chroma、Milvus等。对于图存储(Graph Storage),它支持NetworkX(默认)、Neo4j以及带有AGE插件的PostgreSQL。这种设计让用户可以根据自己的技术栈和性能需求灵活选择。
  4. 我可以在 LightRAG 中使用自己的模型吗?比如部署在 Hugging Face 或 Ollama 上的模型?
    可以。LightRAG 设计了灵活的模型注入机制,允许用户集成自定义的LLM和嵌入模型。 仓库的示例代码中已经提供了如何接入 Hugging Face 和 Ollama 模型的范例。你只需要编写一个符合其接口规范的调用函数,并在初始化 LightRAG 实例时将其传入即可,这使得它能够与各类开源或私有化部署的模型无缝对接。
0ブックマークに登録
0表彰される

AIツールが見つからない?こちらをお試しください!

キーワードを入力する アクセシビリティこのサイトのAIツールセクションは、このサイトにあるすべてのAIツールを素早く簡単に見つける方法です。

トップに戻る

ja日本語