I’m building an app that stores long, unstructured notes like:
“February 6th, 2026 – This is a note about Bob Maynard. He likes the color green…”
These notes can be fairly long and I need to:
Store them durably
Search them by keywords later
Also connect them to other entities (people, accounts, etc.) via a graph model
My backend stack is:
PostgreSQL
Apache AGE (for graph relationships)
Right now I’m trying to decide where the note text itself should live.
The two options I’m considering:
Store the note body directly on Apache AGE nodes
Each
(:Note)node would contain the full textRelationships like
(:Person)-[:HAS_NOTE]->(:Note)But I’m unsure how well AGE handles large text and text search
Store the note body in a PostgreSQL table (
TEXTcolumn)Use AGE nodes to store only the note ID and relationships
Fetch/search note text via PostgreSQL (possibly full-text search)
Join graph traversal results back to the table
My questions:
Is Apache AGE appropriate for storing and searching long free-text notes?
Or is it better practice to keep the text in PostgreSQL and use AGE only for relationships?
Are there known performance or design pitfalls with either approach?
I don’t currently need fuzzy search or autocomplete (so Elasticsearch feels like overkill), but I do need good keyword search and graph traversal.
What’s the recommended architecture here?