Banco de dados gráfico Neo4j para GraphRAG, instalação, Cypher, vetores e operações.
Grafos, Cypher, vetores e endurecimento de operações.
O Neo4j é a ferramenta a que você recorre quando as relações são os dados. Se o seu domínio se parece com um quadro branco cheio de círculos e setas, forçá-lo em tabelas é doloroso.
O Neo4j modela essa imagem como um grafo de propriedades e consulta-o com Cypher.

Este guia cobre para que o Neo4j é usado, comportamento ACID, Neo4j vs Amazon Neptune vs TigerGraph (e concorrentes), GraphRAG com índices vetoriais, caminhos de instalação local e em produção, portas e neo4j.conf, e padrões de Cypher e Python prontos para copiar e colar.
Para um contexto mais amplo sobre escolhas de infraestrutura de dados, veja o pilar Infraestrutura de Dados para Sistemas de IA.
Para que o Neo4j é usado em cargas de trabalho de grafo em produção
O Neo4j é para dados conectados onde você precisa fazer perguntas conectadas, repetidamente, sob restrições de produção. Essa é a resposta direta a para que o Neo4j é usado na maioria das equipes.
Modelo de dados de grafo de propriedades com nós, relacionamentos e propriedades
O Neo4j usa o modelo de grafo de propriedades: nós representam entidades, relacionamentos conectam nós e ambos podem ter propriedades. Rótulos e tipos de relacionamentos dão estrutura sem travá-lo em um esquema frágil.
Você pode começar com um modelo simples, entregar valor e evoluir o grafo conforme novas perguntas surgirem.
Linguagem de consulta de grafo Cypher para correspondência de padrões sem sopa de joins
O Cypher é declarativo e construído em torno da correspondência de padrões. Você descreve formas de subgrafos e deixa o planejador executá-los.
Se o SQL é sobre conjuntos, o Cypher é sobre subgrafos. Isso importa para travessias de múltiplos saltos, consultas de caminho, recomendações, procedência e perguntas sobre “quem tocou no quê e através de qual sistema”.
O Neo4j é compatível com ACID e por que você deveria se importar
O Neo4j é compatível com ACID? Sim. Criar ou atualizar relacionamentos afeta uma estrutura coerente; o banco de dados mantém isso consistente sob falhas e concorrência.
Projetem aplicativos de grafo em torno de garantias transacionais fortes, a menos que sejam forçados a fazer o contrário. Isso torna a depuração e o raciocínio sobre o comportamento muito mais fáceis do que assumir uma consistência eventual vaga.
Neo4j vs Amazon Neptune vs TigerGraph: uma comparação de engenheiro sênior
Uma pergunta “Neo4j vs X” geralmente é “Em qual ecossistema vamos viver por anos?”
Visão curta e opinada — sobre tempo de engenharia, não sobre slides de benchmark.
| Produto | Modelo principal e estilo de consulta | Onde ganha | Onde causa dor |
|---|---|---|---|
| Neo4j | Grafo de propriedades e Cypher | Ergonomia forte para dados conectados, ferramentas maduras, grafo mais recuperação vetorial | Modelagem de grafo é uma habilidade em que você deve investir |
| Amazon Neptune | Grafo gerenciado na AWS (Gremlin, openCypher, SPARQL para RDF) | Contratos e operações focados na AWS | A mistura de linguagens de consulta pode parecer impulsionada pela plataforma |
| TigerGraph | GSQL e padrões relacionados ao OpenCypher | Cargas de trabalho estilo análise e abordagens de consulta compilada | Modelo mental diferente; não é Cypher em todos os lugares |
| JanusGraph | Grafo distribuído com backends de armazenamento externo | Código aberto com backends plugáveis | Você opera a pilha de backend |
| ArangoDB | Multi-modelo (documentos, KV, grafo) | Um banco de dados para formas mistas | A profundidade do grafo varia em comparação com motores first-graph |
| Memgraph | Grafo de propriedades, compatível com Cypher | Fluxos de trabalho de streaming e dados frescos | O comportamento do motor difere; compatibilidade não é identidade |
O que decidir antes de escolher um banco de dados de grafo
Escolha a linguagem de consulta e o modelo de operações primeiro.
Se sua equipe quer Cypher e um fluxo de trabalho primeiro em grafo, o Neo4j é uma escolha padrão forte. Se você já tem experiência com Gremlin, Neptune ou JanusGraph podem se encaixar. Se você quer um único armazenamento multi-modelo, o ArangoDB pode reduzir as partes móveis.
Seja honesto sobre operações. “Vamos executar um backend de armazenamento distribuído” é fácil de dizer até que você seja chamado às 03:00 devido a compactações ou pressão na JVM.
Neo4j para RAG e GraphRAG: pesquisa vetorial mais contexto de grafo
Muitas pilhas de RAG começam como pesquisa vetorial mais prompt. Isso funciona até que você precisa de procedência, resolução de entidades, contexto de múltiplos saltos ou desambiguação — então você corre o risco de reconstruir um grafo de conhecimento no código da aplicação.
Como o GraphRAG melhora a geração aumentada por recuperação? Ele usa o grafo para puxar contexto estruturado — entidades, relacionamentos, vizinhanças — que a similaridade sozinha frequentemente perde, o que ajuda no enraizamento e na confiabilidade.
Índice vetorial do Neo4j para pesquisa de similaridade de embeddings
O Neo4j pode fazer pesquisa vetorial para RAG? Sim. O Neo4j suporta índices vetoriais para similaridade sobre embeddings (comumente pesquisa de vizinho mais próximo aproximado estilo HNSW).
Vetores encontram “coisas que parecem similares”. Eles não codificam por si só “como se relacionam” em seu domínio. O Neo4j permite que você combine similaridade com travessias.
Usando a subcláusula SEARCH para correspondência de padrões restrita por vetores
A subcláusula SEARCH do Neo4j permite restringir um padrão de MATCH Cypher usando acertos de vizinho mais próximo aproximado de um índice vetorial. Essa é a ponte ergonômica para recuperação híbrida.
Padrão prático: recuperação vetorial para candidatos, depois expansão de grafo para contexto, filtros e explicação.
GraphRAG em Python com neo4j-graphrag
O pacote neo4j-graphrag do Neo4j para Python conecta um driver, recuperador e interface de LLM em um fluxo GraphRAG. Você ainda pode usar armazéns vetoriais externos se quiser dividir responsabilidades.
Como instalar o Neo4j localmente e em produção
Como você instala o Neo4j localmente? Combine a opção com seu perfil de risco.
Instalar o Neo4j com Docker para desenvolvimento local
O Docker é o caminho mais rápido para um servidor repetível.
# Execução mínima. Os dados NÃO são persistidos entre reinicializações.
docker run \
--restart always \
--publish=7474:7474 --publish=7687:7687 \
neo4j:5
Para trabalho real, defina uma senha inicial e monte um volume de dados.
docker run \
--restart always \
--publish=7474:7474 --publish=7687:7687 \
--env NEO4J_AUTH=neo4j/sua_senha \
--volume=$HOME/neo4j/data:/data \
neo4j:5
Docker Compose para uma configuração amigável à equipe
services:
neo4j:
image: neo4j:5
ports:
- "7474:7474"
- "7687:7687"
environment:
- NEO4J_AUTH=neo4j/sua_senha
volumes:
- $HOME/neo4j/logs:/logs
- $HOME/neo4j/config:/config
- $HOME/neo4j/data:/data
- $HOME/neo4j/plugins:/plugins
restart: always
Neo4j Desktop
O Neo4j Desktop é forte para prototipagem e ensino — projetos, GUI, instâncias locais. Para CI e testes de integração, o Docker geralmente vence.
Servidores Linux, Windows ou macOS
Para hosts de longa duração, siga os caminhos de instalação oficial do SO. Eventualmente, você se importará com gerenciamento de serviços, logs, memória, backups e atualizações.
Neo4j AuraDB (gerenciado)
Se você preferir entregar produtos a executar bancos de dados, o AuraDB é a opção de nuvem gerenciada do Neo4j.
Kubernetes com Helm
Se a plataforma é Kubernetes, use a implantação baseada em Helm e exponha Bolt e HTTP através de serviços. Só implante bancos de dados no K8s se sua organização puder executar estado de forma confiável lá.
Essenciais de configuração do Neo4j: portas, conectores e neo4j.conf
As configurações vivem em neo4j.conf (chave=valor, comentários #). Validação estrita ajuda a capturar erros de digitação antes de servir tráfego.
Portas e conectores padrão do Neo4j
Quais são as portas padrão do Neo4j? Bolt 7687, HTTP 7474, HTTPS 7473 por padrão. Em produção, exponha apenas o necessário; frequentemente Bolt em uma rede privada e UI HTTP restrita.
Exemplo de endurecimento (adapte IPs e TLS ao seu ambiente):
server.bolt.listen_address=10.0.1.10:7687
server.http.listen_address=127.0.0.1:7474
server.https.enabled=true
server.https.listen_address=10.0.1.10:7473
Configurações de transação que limitam danos ilimitados
Alavancas úteis em revisões incluem db.transaction.timeout para consultas descontroladas e db.transaction.concurrent.maximum para evitar multidões de trovão (thundering herds).
db.transaction.timeout=10s
db.transaction.concurrent.maximum=1000
Exemplos práticos de Cypher e índices vetoriais para RAG
Criar um índice vetorial e armazenar embeddings
CREATE VECTOR INDEX doc_embeddings
FOR (d:Document) ON (d.embedding)
OPTIONS {indexConfig: {
`vector.dimensions`: 1536,
`vector.similarity_function`: "cosine"
}};
Recuperação vetorial seguida de expansão de grafo
- Pesquisa vetorial para nós candidatos.
- Travessia para vizinhos, procedência e restrições.
- Formato de contexto para o LLM com limites claros.
Exemplo usando SEARCH dentro de MATCH (a sintaxe pode variar ligeiramente pela versão do Neo4j — consulte o manual para a versão do seu servidor):
MATCH (d:Document)
SEARCH d IN (
VECTOR INDEX doc_embeddings
FOR $queryEmbedding
LIMIT 10
) SCORE AS score
MATCH (d)-[:MENTIONS]->(e:Entity)
RETURN d.id AS doc_id, score, collect(distinct e.name) AS entities
ORDER BY score DESC
LIMIT 5;
GraphRAG mínimo em Python
from neo4j import GraphDatabase
from neo4j_graphrag.retrievers import VectorRetriever
from neo4j_graphrag.embeddings import OpenAIEmbeddings
from neo4j_graphrag.llm import OpenAILLM
from neo4j_graphrag.generation import GraphRAG
driver = GraphDatabase.driver("neo4j://localhost:7687", auth=("neo4j", "password"))
embedder = OpenAIEmbeddings(model="text-embedding-3-large")
retriever = VectorRetriever(driver, "doc_embeddings", embedder)
llm = OpenAILLM(model_name="gpt-4o", model_params={"temperature": 0})
rag = GraphRAG(retriever=retriever, llm=llm)
response = rag.search(query_text="Como faço pesquisa de similaridade no Neo4j?", retriever_config={"top_k": 5})
print(response.answer)
Casos de uso do Neo4j no mundo real: fraude, recomendações e grafos de conhecimento
Detecção de fraude e grafos de risco
A fraude raramente é uma única linha. São padrões entre contas, dispositivos, IPs, comerciantes, identidades e tempo. Grafos expressam vizinhanças e caminhos de múltiplos saltos sem labirintos de joins de dez vias.
Recomendações com comportamento e relacionamentos explícitos
Recomendações em produção combinam candidatos pontuados com inventário, restrições, hierarquias e explicabilidade. Grafos ajudam você a retornar caminhos sobre os quais as pessoas podem raciocinar.
Grafos de conhecimento para RAG e agentes
RAG precisa de enraizamento; agentes precisam de memória, procedência e restrições. Um grafo de conhecimento armazena entidades, relacionamentos, fontes e embeddings em um único modelo — ajuste natural para GraphRAG.
Quando você deve escolher o Neo4j em vez do Amazon Neptune ou TigerGraph?
Quando você deve escolher o Neo4j em vez do Amazon Neptune ou TigerGraph? Escolha o Neo4j para um grafo primeiro em Cypher e vetorial + travessia em um único produto. Escolha o Neptune quando AWS e Gremlin ou RDF estiverem alinhados com sua organização. Escolha o TigerGraph quando GSQL e cargas de trabalho estilo análise forem a aposta principal.