Neo4j como motor GraphRAG: índice vectorial + Cypher en una consulta (medido)
Parte 6 de 1113 de octubre de 2026 · 2 min · David Silvente López
Neo4j permite hacer en una sola consulta lo que muchos montan con dos sistemas: buscar por similitud y recorrer relaciones. Lo he medido con mis 93 preguntas.
El patrón
Según el curso GraphAcademy de Neo4j: búsqueda vectorial de fragmentos, consulta Cypher que añade contexto del grafo y paso al LLM. Yo lo monté con 2.553 fragmentos de 642 artículos (embeddings MiniLM de 384 dimensiones), un índice vectorial coseno y las relaciones tipadas de mi grafo (733 aristas, 20 equivalencias, 32 relacionados, 50 conceptos). Una consulta toma las tres semillas más parecidas y suma vecinos ponderados por el tipo de relación.
Resultado (93 preguntas, 6 artículos de contexto)
| Variante | Cobertura | Todo cubierto |
|---|---|---|
| Vectorial en memoria (numpy) | 71,1 % | 59,1 % |
| Índice vectorial de Neo4j | 70,1 % | 58,1 % |
| Vector + grafo en Python | 67,9 % | 59,1 % |
| Vector + grafo en una consulta Cypher | 67,7 % | 57,0 % |
- El índice de Neo4j coincide con la búsqueda exacta en el 97 % de los artículos del top-6.
- La consulta Cypher coincide con mi versión en Python en el 91 %. En 15 preguntas devolvió menos de seis artículos por falta de vecinos.
- Latencia en Docker, CPU, sin contar el embedding de la pregunta: 16,6 ms de mediana el índice (p95 60,7 ms) y 16,7 ms el GraphRAG completo (p95 46,4 ms).
Qué significa
Las diferencias entre filas caen dentro del ruido de la prueba (1-2 preguntas de 93). Neo4j puede ser el único sistema, con la misma calidad que Qdrant más Python, pero no mejor. Lo que sí ganas es trazabilidad: cada artículo recuperado tiene un camino que puedes enseñar.
Una advertencia práctica: la documentación muestra la cláusula SEARCH y el procedimiento db.index.vector.queryNodes; comprueba la versión de tu Neo4j antes de copiar. Yo usé el procedimiento en Neo4j 5.
Limitaciones: un solo embedding (MiniLM), solo semillas vectoriales (sin la parte léxica del híbrido) y un solo conjunto de pruebas. La carga del grafo, sentencia a sentencia, tardó 219 s: para producción habría que importarlo por lotes.
Preguntas frecuentes
¿Se puede hacer GraphRAG solo con Neo4j, sin otra base vectorial?
Sí: con el índice vectorial de Neo4j y una consulta Cypher que añade vecinos del grafo. En la prueba dio la misma calidad que Qdrant más Python, pero no mejor.
¿Qué ventaja tiene Neo4j para GraphRAG?
La trazabilidad: cada artículo recuperado tiene un camino que puedes enseñar.
¿Cuál es la latencia del índice vectorial de Neo4j?
En Docker y CPU, sin contar el embedding de la pregunta: 16,6 ms de mediana el índice (p95 60,7 ms) y 16,7 ms el GraphRAG completo (p95 46,4 ms).
¿Qué precisión tiene el índice vectorial de Neo4j frente a la búsqueda exacta?
Coincide con la búsqueda exacta en el 97 % de los artículos del top-6; en «todo cubierto» dio 58,1 % frente a 59,1 % del vectorial en memoria, dentro del ruido.
¿Tienes un RAG o un proyecto de IA con normativa o documentación?
Te ayudo a medirlo antes de gastar: preguntas de prueba, recuperación, abstención y coste.
Agenda tu diagnósticoSígueme en LinkedIn, donde comento cada artículo · Compartir: LinkedIn · X