Graphiti: un framework para construir y consultar grafos de conocimiento en tiempo real 164

小编 ·

Graphiti: un framework para construir y consultar grafos de conocimiento en tiempo real

Graphiti es un framework para construir y consultar grafos de conocimiento con conciencia temporal, ideal para entornos dinámicos. A diferencia del enfoque RAG tradicional, Graphiti integra en tiempo real interacciones del usuario, datos estructurados y no estructurados, e información externa en un grafo consultable. Admite actualizaciones en tiempo real, búsquedas eficientes y consultas históricas precisas sin recalcular todo el grafo, lo que lo hace ideal para aplicaciones interactivas y contextuales.

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.

Graphiti: un marco para construir y consultar grafos de conocimiento en tiempo real.webp

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