Home
Login

LightRAG é uma estrutura de geração aumentada por recuperação simples e rápida, que suporta vários modos de consulta e construção de grafos de conhecimento.

MITPython 17.7kHKUDS Last Updated: 2025-06-19

LightRAG - Estrutura Simples e Rápida para Geração Aumentada por Recuperação

Visão Geral do Projeto

LightRAG é uma estrutura "Simples e Rápida para Geração Aumentada por Recuperação" (Retrieval-Augmented Generation), desenvolvida pela Faculdade de Ciência de Dados da Universidade de Hong Kong (HKUDS). O projeto visa fornecer aos desenvolvedores um conjunto completo de soluções RAG (Retrieval-Augmented Generation), suportando indexação de documentos, construção de grafos de conhecimento e funcionalidades de perguntas e respostas inteligentes.

Características Principais

🔍 Vários Modos de Recuperação

LightRAG suporta cinco modos de recuperação diferentes, atendendo a diferentes necessidades de cenário:

  • modo naive: Busca básica, sem usar técnicas avançadas
  • modo local: Focado na recuperação de informações relevantes ao contexto
  • modo global: Utiliza conhecimento global para recuperação
  • modo híbrido: Combina métodos de recuperação local e global
  • modo mix: Integra grafo de conhecimento e recuperação vetorial, fornecendo as respostas mais abrangentes

🎯 Construção de Grafos de Conhecimento

  • Extrai automaticamente entidades e relações de documentos
  • Suporta a exibição visual de grafos de conhecimento
  • Fornece funções de criação, leitura, atualização e exclusão de entidades e relações
  • Suporta a fusão e desduplicação de entidades

🚀 Suporte Flexível a Modelos

  • Modelos OpenAI: Suporta modelos da série OpenAI, como o GPT-4
  • Modelos Hugging Face: Suporta modelos de código aberto implantados localmente
  • Modelos Ollama: Suporta modelos quantizados executados localmente
  • Integração LlamaIndex: Suporta mais provedores de modelos através do LlamaIndex

📊 Backends de Armazenamento Diversificados

  • Bancos de dados vetoriais: Suporta Faiss, PGVector, etc.
  • Bancos de dados de grafos: Suporta Neo4j, PostgreSQL+Apache AGE
  • Armazenamento padrão: Armazenamento de grafos NetworkX integrado

Instalação

Instalação via PyPI

pip install "lightrag-hku[api]"

Instalação a partir do código fonte

# Crie um ambiente virtual Python (se necessário)
# Instale no modo editável, incluindo suporte à API
pip install -e ".[api]"

Exemplo de Uso Básico

Inicialização e Consulta

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
from lightrag.utils import setup_logger

setup_logger("lightrag", level="INFO")

async def initialize_rag():
    rag = LightRAG(
        working_dir="your/path",
        embedding_func=openai_embed,
        llm_model_func=gpt_4o_mini_complete
    )
    await rag.initialize_storages()
    await initialize_pipeline_status()
    return rag

def main():

    rag = asyncio.run(initialize_rag())
    

    rag.insert("Your text")
    

    result = rag.query(
        "What are the top themes in this story?",
        param=QueryParam(mode="mix")
    )
    print(result)

if __name__ == "__main__":
    main()

Funcionalidades Avançadas

Suporte ao Histórico de Conversas

# Crie o histórico de conversas
conversation_history = [
    {"role": "user", "content": "What is the main character's attitude towards Christmas?"},
    {"role": "assistant", "content": "At the beginning of the story, Ebenezer Scrooge has a very negative attitude towards Christmas..."},
    {"role": "user", "content": "How does his attitude change?"}
]

# Crie parâmetros de consulta com o histórico de conversas
query_param = QueryParam(
    mode="mix",  # ou qualquer outro modo: "local", "global", "hybrid"
    conversation_history=conversation_history,  # Adicione o histórico de conversas
    history_turns=3  # Número de turnos recentes da conversa a serem considerados
)

# Faça uma consulta que leve em consideração o histórico de conversas
response = rag.query(
    "What causes this change in his character?",
    param=query_param
)

Gerenciamento de Grafos de Conhecimento

# Crie uma nova entidade
entity = rag.create_entity("Google", {
    "description": "Google is a multinational technology company specializing in internet-related services and products.",
    "entity_type": "company"
})

# Crie outra entidade
product = rag.create_entity("Gmail", {
    "description": "Gmail is an email service developed by Google.",
    "entity_type": "product"
})

# Crie uma relação entre as entidades
relation = rag.create_relation("Google", "Gmail", {
    "description": "Google develops and operates Gmail.",
    "keywords": "develops operates service",
    "weight": 2.0
})

LightRAG Server

Funcionalidades da Interface Web

O LightRAG Server fornece uma interface web completa, incluindo:

  • Gerenciamento de indexação de documentos
  • Visualização de grafos de conhecimento
  • Interface de consulta RAG simples
  • Suporte para layout de força, consulta de nós, filtragem de subgrafos, etc.

Interface API

  • Fornece interface API RESTful
  • Compatível com o formato API Ollama
  • Suporta integração com chatbots de IA (como o Open WebUI)

Parâmetros de Configuração

Parâmetros Principais

  • working_dir: Caminho do diretório de trabalho
  • embedding_func: Função de incorporação (embedding)
  • llm_model_func: Função do modelo de linguagem grande (LLM)
  • vector_storage: Tipo de armazenamento vetorial
  • graph_storage: Tipo de armazenamento de grafos

Parâmetros de Otimização de Desempenho

  • embedding_batch_size: Tamanho do lote de incorporação (padrão 32)
  • embedding_func_max_async: Número máximo de processos de incorporação assíncronos simultâneos (padrão 16)
  • llm_model_max_async: Número máximo de processos LLM simultâneos (padrão 4)
  • enable_llm_cache: Se o cache LLM está habilitado (padrão True)

Exportação e Backup de Dados

Suporta a exportação de dados em vários formatos:

#Export data in CSV format
rag.export_data("graph_data.csv", file_format="csv")

# Export data in Excel sheet
rag.export_data("graph_data.xlsx", file_format="excel")

# Export data in markdown format
rag.export_data("graph_data.md", file_format="md")

# Export data in Text
rag.export_data("graph_data.txt", file_format="txt")

Rastreamento do Uso de Tokens

Ferramenta de monitoramento de consumo de tokens integrada:

from lightrag.utils import TokenTracker

# Create TokenTracker instance
token_tracker = TokenTracker()

# Method 1: Using context manager (Recommended)
# Suitable for scenarios requiring automatic token usage tracking
with token_tracker:
    result1 = await llm_model_func("your question 1")
    result2 = await llm_model_func("your question 2")

# Method 2: Manually adding token usage records
# Suitable for scenarios requiring more granular control over token statistics
token_tracker.reset()

rag.insert()

rag.query("your question 1", param=QueryParam(mode="naive"))
rag.query("your question 2", param=QueryParam(mode="mix"))

# Display total token usage (including insert and query operations)
print("Token usage:", token_tracker.get_usage())

Cenários de Aplicação

Gestão de Conhecimento Empresarial

  • Recuperação e perguntas e respostas de documentos internos
  • Construção e manutenção de bases de conhecimento
  • Assistente inteligente de documentação técnica

Pesquisa Acadêmica

  • Recuperação e análise de literatura
  • Pesquisa de construção de grafos de conhecimento
  • Avaliação de desempenho do sistema RAG

Criação de Conteúdo

  • Assistência à escrita e recuperação de materiais
  • Integração de conteúdo de vários documentos
  • Recomendação de conteúdo inteligente

Vantagens do Projeto

  1. Fácil de integrar: Fornece API Python simples e API REST
  2. Altamente personalizável: Suporta vários modelos e backends de armazenamento
  3. Otimização de desempenho: Suporta processamento em lote e processamento assíncrono
  4. Visualização: Funcionalidade de visualização de grafo de conhecimento integrada
  5. Nível empresarial: Suporta bancos de dados de nível empresarial, como PostgreSQL

Resumo

LightRAG é uma estrutura RAG abrangente e fácil de usar, especialmente adequada para cenários que exigem a construção de sistemas de perguntas e respostas inteligentes e plataformas de gerenciamento de conhecimento. Seu design de arquitetura flexível e ricos recursos o tornam uma excelente solução de código aberto no campo RAG.