Lançamento no HN: FastGraphRAG – técnica de RAG aprimorada usando o PageRank tradicional
(github.com/circlemind-ai)Framework Fast GraphRAG simplificado e orientável por prompts
- Conhecimento interpretável e depurável: grafos fornecem uma visão do conhecimento que pode ser explorada por humanos, além de poder ser consultada, visualizada e atualizada
- Rápido, barato e eficiente: projetado para rodar em larga escala com baixa exigência de recursos e custos
- Dados dinâmicos: cria e aprimora grafos automaticamente de acordo com os requisitos do domínio e da ontologia
- Atualizações incrementais: oferece suporte a atualizações em tempo real à medida que os dados evoluem
- Exploração inteligente: usa navegação em grafos baseada em PageRank para aumentar a precisão e a confiabilidade
- Suporte assíncrono e tipado: suporte completo a execução assíncrona e tipagem para fluxos de trabalho robustos e previsíveis
Instalação
-
Instalar via PyPI (recomendado)
pip install fast-graphrag -
Instalar a partir do código-fonte
# Primeiro clone este repositório cd fast_graphrag poetry install
Início rápido
-
Defina a chave da API da OpenAI no ambiente
export OPENAI_API_KEY="sk-..." -
Baixe A Christmas Carol, de Charles Dickens
curl https://raw.githubusercontent.com/circlemind-ai/fast-graphrag/… > ./book.txt -
Exemplo de código Python
from fast_graphrag import GraphRAG DOMAIN = "Analyze this story and identify the characters. Focus on how they interact with each other, the locations they explore, and their relationships." EXAMPLE_QUERIES = [ "What is the significance of Christmas Eve in A Christmas Carol?", "How does the setting of Victorian London contribute to the story's themes?", "Describe the chain of events that leads to Scrooge's transformation.", "How does Dickens use the different spirits (Past, Present, and Future) to guide Scrooge?", "Why does Dickens choose to divide the story into \"staves\" rather than chapters?" ] ENTITY_TYPES = ["Character", "Animal", "Place", "Object", "Activity", "Event"] grag = GraphRAG( working_dir="./book_example", domain=DOMAIN, example_queries="\n".join(EXAMPLE_QUERIES), entity_types=ENTITY_TYPES ) with open("./book.txt") as f: grag.insert(f.read()) print(grag.query("Who is Scrooge?").response) -
Ao reinicializar o fast-graphrag no mesmo diretório de trabalho, todo o conhecimento é preservado automaticamente
Exemplos
- Consulte a pasta
examplespara ver tutoriais sobre casos de uso comuns da bibliotecacustom_llm.py: exemplo simples de como configurar o fast-graphrag com diferentes modelos de linguagem e embedders compatíveis com a API da OpenAI
Contribuição
- Contribuições grandes e pequenas são bem-vindas. Elas tornam a comunidade open source um lugar incrível para aprender, se inspirar e criar
- Você pode consultar o guia de contribuição para saber como começar
- Se não souber por onde começar, pode entrar no Discord e fazer perguntas
Filosofia
- Nossa missão é aumentar o número de aplicações GenAI bem-sucedidas no mundo
- Para isso, construímos ferramentas de memória e dados para que apps com LLM possam aproveitar pipelines de busca altamente especializados sem a complexidade de configurar e manter fluxos de trabalho baseados em agentes
Open source ou serviço gerenciado
- Este repositório está sob a licença MIT. Para mais detalhes, consulte
LICENSE.txt - A forma mais rápida e confiável de começar a usar o Fast GraphRAG é por meio do serviço gerenciado
- As primeiras 100 requisições de cada mês são gratuitas; depois disso, a cobrança é feita com base no uso
1 comentários
Comentários do Hacker News
Usar BM25 junto com LLM pode produzir resultados com altíssima relevância
PageRank e Triangle Centrality são métricas de centralidade interessantes que podem ser aplicadas a grafos
Acredito que recuperação tradicional de informação seja adequada para RAG
Querem usar um sistema GraphRag para análise de documentos em grande escala em uma startup de IA
Questionamento sobre PageRank exigir uma chave de API da OpenAI
Pergunta sobre como armazenar e consultar um grafo sem usar um banco de dados de grafos
Pergunta sobre quanto texto é necessário para construir um grafo de conhecimento de textos específicos de um domínio
Pergunta sobre como domínio e consultas de exemplo ajudam a construir um grafo de conhecimento
Confusão sobre a política de preços
Pergunta se a resposta para "Quem é Scrooge?" é melhor do que a de outras abordagens