HN público: FastGraphRAG – técnica RAG mejorada que aprovecha el PageRank tradicional
(github.com/circlemind-ai)Framework Fast GraphRAG simplificado y configurable mediante prompts
- Conocimiento interpretable y depurable: los grafos ofrecen una vista del conocimiento que las personas pueden explorar, consultar, visualizar y actualizar
- Rápido, económico y eficiente: diseñado para ejecutarse a gran escala con bajos requisitos de recursos y costo
- Datos dinámicos: genera y mejora grafos automáticamente según las necesidades del dominio y la ontología
- Actualizaciones incrementales: admite actualizaciones en tiempo real a medida que los datos evolucionan
- Exploración inteligente: utiliza exploración de grafos basada en PageRank para mejorar la precisión y la confiabilidad
- Compatibilidad con asincronía y tipos: ofrece compatibilidad completa con asincronía y tipos para flujos de trabajo robustos y predecibles
Instalación
-
Instalar desde PyPi (recomendado)
pip install fast-graphrag -
Instalar desde el código fuente
# Primero clona este repositorio cd fast_graphrag poetry install
Inicio rápido
-
Configura la clave de la API de OpenAI en el entorno
export OPENAI_API_KEY="sk-..." -
Descarga A Christmas Carol de Charles Dickens
curl https://raw.githubusercontent.com/circlemind-ai/fast-graphrag/… > ./book.txt -
Ejemplo de código en 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) -
Al reinicializar fast-graphrag en el mismo directorio de trabajo, conserva automáticamente todo el conocimiento
Ejemplos
- Consulta la carpeta
examplespara ver tutoriales sobre casos de uso comunes de la bibliotecacustom_llm.py: ejemplo sencillo para configurar fast-graphrag con varios modelos de lenguaje y embedders compatibles con la API de OpenAI
Contribuciones
- Se agradecen contribuciones grandes y pequeñas. Las contribuciones hacen de la comunidad de código abierto un lugar increíble para aprender, inspirarse y crear
- Puedes revisar la guía de contribución para saber cómo empezar
- Si no sabes por dónde comenzar, puedes unirte a Discord y hacer preguntas
Filosofía
- Nuestra misión es aumentar la cantidad de aplicaciones GenAI exitosas en el mundo
- Para lograrlo, construimos herramientas de memoria y datos para que las apps con LLM puedan aprovechar pipelines de búsqueda altamente especializados sin la complejidad de configurar y mantener flujos de trabajo con agentes
Código abierto o servicio administrado
- Este repositorio está bajo la licencia MIT. Consulta LICENSE.txt para más detalles
- La forma más rápida y confiable de comenzar con Fast GraphRAG es usar el servicio administrado
- Las primeras 100 solicitudes de cada mes son gratis; después, se cobra según el uso
1 comentarios
Opiniones de Hacker News
Usar BM25 junto con LLM puede dar resultados muy relevantes
PageRank y Triangle Centrality son métricas de centralidad interesantes que pueden aplicarse a grafos
La recuperación de información tradicional parece adecuada para RAG
Quieren usar un sistema GraphRag en una startup de IA para analizar documentos a gran escala
Dudas sobre que PageRank requiera una API key de OpenAI
Pregunta sobre cómo almacenar y consultar un grafo sin usar una base de datos de grafos
Pregunta sobre cuánta cantidad de texto se necesita para construir un grafo de conocimiento de texto específico de un dominio
Pregunta sobre cómo el dominio y las consultas de ejemplo ayudan a construir un grafo de conocimiento
Confusión sobre la política de precios
Pregunta sobre si la respuesta a "¿Quién es Scrooge?" es mejor que en otros enfoques