Graphiti: un framework para construir y consultar grafos de conocimiento en tiempo real
¿Qué es Graphiti?
Graphiti es un marco para construir y consultar grafos de conocimiento que tiene capacidad de percepción temporal, lo que lo hace muy adecuado para entornos dinámicos. A diferencia de los métodos tradicionales de Generación Aumentada por Recuperación (RAG), Graphiti puede integrar en tiempo real interacciones de usuarios, datos estructurados y no estructurados, e información externa, generando un grafo consultable. Su ventaja reside en que admite actualizaciones de datos en tiempo real, recuperación eficiente y consultas históricas precisas, sin necesidad de recalcular todo el grafo, lo que lo hace ideal para desarrollar aplicaciones interactivas y con conciencia del contexto.

Funciones principales de Graphiti
Actualizaciones incrementales en tiempo real: capaz de integrar inmediatamente nuevos fragmentos de datos sin necesidad de recálculos por lotes.
Modelo de datos bitemporal: rastrea explícitamente el tiempo de ocurrencia del evento y el tiempo de ingestión, admitiendo consultas precisas en un momento dado.
Recuperación híbrida eficiente: combina incrustaciones semánticas, palabras clave (BM25) y recorrido de grafos para lograr consultas de baja latencia, sin depender de modelos de lenguaje grandes (LLM) para resúmenes.
Definición de entidades personalizada: admite la creación de ontologías y entidades personalizadas flexibles mediante sencillos modelos Pydantic.
Escalabilidad: gestiona eficazmente grandes conjuntos de datos mediante procesamiento paralelo, adecuado para entornos empresariales.
Integración con múltiples LLM: admite proveedores de LLM como Openai, Anthropic y Groq, ofreciendo opciones flexibles de inferencia e incrustación de LLM.
MCP servidor: proporciona un servicio API basado en FastAPI que admite la interacción con el grafo de conocimiento a través del protocolo MCP, incluyendo funciones de gestión de eventos, gestión de entidades y procesamiento de relaciones.
Por qué elegir Graphiti
Puede actualizar datos en tiempo real, adaptándose a entornos dinámicamente cambiantes.
Admite consultas precisas en un momento dado, lo que facilita el seguimiento de información histórica.
La velocidad de recuperación es rápida y no necesita depender de modelos de lenguaje complejos.
Permite personalizar la estructura de datos para satisfacer necesidades específicas.
Puede procesar eficientemente grandes cantidades de datos, adecuado para aplicaciones de nivel empresarial.
Instalación y uso de Graphiti
Instalación de Graphiti
En primer lugar, asegúrate de que tu sistema cumple los requisitos de instalación e instala las dependencias necesarias:
Python: asegúrate de que tu sistema tenga instalado Python 3.10 o una versión superior.
Neo4j: instala la base de datos Neo4j, versión 5.26 o superior. Puedes utilizar Neo4j Desktop para simplificar el proceso de instalación y gestión.
Clave de API de OpenAI: si planeas utilizar OpenAI para la inferencia y las incrustaciones de LLM, necesitarás una clave de API de OpenAI válida.
Puedes utilizar pip o poetry para instalar la biblioteca principal de Graphiti:
pip install graphiti-core # 或者 poetry add graphiti-core
Inicialización de Graphiti
Inicializa una instancia de Graphiti en tu código y conéctala a la base de datos Neo4j:
from graphiti_core import Graphiti
graphiti = Graphiti("bolt://localhost:7687", "neo4j", "password")Construcción de índices y restricciones
Antes de añadir datos, inicializa la base de datos de grafos y construye los índices y restricciones de Graphiti:
await graphiti.build_indices_and_constraints()
Añadir datos
Utiliza el método add_episode para añadir datos al grafo de conocimiento. Cada fragmento de datos se denomina un "episode":
from graphiti_core.nodes import EpisodeType
from datetime import datetime, timezone
episodes = [
"Kamala Harris is the Attorney General of California. She was previously the district attorney for San Francisco.",
"As AG, Harris was in office from January 3, 2011 – January 3, 2017"
]
for i, episode in enumerate(episodes):
await graphiti.add_episode(
name=f"Freakonomics Radio {i}",
episode_body=episode,
source=EpisodeType.text,
source_description="podcast",
reference_time=datetime.now(timezone.utc)
)Consultar datos
Utiliza el método search para consultar el grafo de conocimiento, combinando la similitud semántica y la búsqueda por palabras clave:
results = await graphiti.search('Who was the California Attorney General?')Consultas personalizadas
Puedes personalizar las consultas según tus necesidades, por ejemplo, especificando un nodo central para priorizar los resultados más cercanos a ese nodo:
await graphiti.search('Who was the California Attorney General?', center_node_uuid)Cerrar la conexión
Después de completar la gestión del estado del chat, cierra la conexión de Graphiti:
graphiti.close()
Uso del servidor MCP
Graphiti proporciona un servidor MCP con el que se puede interactuar a través de FastAPI. Puedes desplegar este servidor y utilizar el protocolo MCP para interactuar con el grafo de conocimiento:
1. Clona o descarga el repositorio de Graphiti.
2. Ejecuta el servidor MCP:
uvicorn graphiti.mcp_server.main:app --reload
3. Utiliza el protocolo MCP en tu asistente de IA para comunicarte con el servidor.
Uso de Azure OpenAI
Si deseas utilizar Azure OpenAI, debes configurar el cliente y el incrustador correspondientes:
from openai import AsyncAzureOpenAI from graphiti_core import Graphiti from graphiti_core.llm_client import OpenAIClient from graphiti_core.embedder.openai import OpenAIEmbedder, OpenAIEmbedderConfig api_key = "<your-api-key>" api_version = "<your-api-version>" azure_endpoint = "<your-azure-endpoint>" azure_openai_client = AsyncAzureOpenAI(api_key=api_key, api_version=api_version, azure_endpoint=azure_endpoint) graphiti = Graphiti( "bolt://localhost:7687", "neo4j", "password", llm_client=OpenAIClient(client=azure_openai_client), embedder=OpenAIEmbedder(config=OpenAIEmbedderConfig(embedding_model="text-embedding-3-small"), client=azure_openai_client) )
Asegúrate de reemplazar los valores de los marcadores de posición con tus credenciales reales de Azure OpenAI y de especificar el nombre correcto del modelo de incrustación.
Ventajas de Graphiti
En comparación con otras tecnologías, Graphiti presenta ventajas evidentes en el procesamiento de datos dinámicos, las actualizaciones en tiempo real y la velocidad de consulta.
/li>Proporciona una implementación de servidor para facilitar la integración con otros sistemas.
Admite múltiples configuraciones de entorno e integración con otros servicios.
Enlaces relacionados
Artículo: https://arxiv.org/abs/2501.13956
Repositorio de GitHub: https://github.com/getzep/graphiti
Asistente de guiones▸
Apps AI
Noticias AI 