A worked example, end to end¶
This page follows one chunk all the way through the pipeline, using real values from
a foods build, so every concept on the other pages has something concrete to point at.
Our chunk:
tb_0421(textbook) — “One cup of milk provides about 300 mg of calcium, and the lactose it contains aids calcium absorption. Fortified milk is also a source of vitamin D.”
1. Annotation — mentions → FoodOn ids¶
GLiNER finds the mention spans; the dense linker resolves each to a FoodOn id by
embedding it (BioLORD) and taking its nearest ontology term (cosine ≥ nel_min_sim):
mention |
→ FoodOn id |
label |
|---|---|---|
|
|
cow milk |
|
|
calcium |
|
… |
lactose |
The chunk is also embedded once with BGE-base (768-d) for retrieval and Layer B Pass 1. See Annotation.
2. Layer A — which shelves it lands on¶
The linked id cow milk is walked up the real FoodOn is-a chain. Each class on the
way gains lifted support from this chunk, and the chunk attaches to the surviving
shelves on that path:
flowchart TD
A[cow milk] --> B[mammalian milk product<br/>FOODON:03315150]
B --> C[milk or milk based food product<br/>FOODON:00001257]
C --> D[dairy food product]
D --> E[vertebrate food product]
E --> F[animal food product]
F --> G[Foods]
So tb_0421 attaches to mammalian milk product (and its ancestors) — it is one of
that shelf’s 649 chunks. That shelf’s support tells the story: direct 1, lifted 648 —
almost nobody writes the literal phrase “mammalian milk product”, but the corpus is full
of its descendants (cow milk, goat milk, …). Contrast a genuine topic like
fruit produce (633 direct, 0 lifted), which the corpus names outright. See
Layer A and support_direct vs support_lifted in the
glossary.
3. Layer B — which theme it joins¶
Within the mammalian milk product shelf, Layer B’s two passes cluster the chunks. Our
chunk — calcium, lactose, absorption — lands in the relatedness theme below (it
shares the entities cow milk, calcium, lactose with its theme-mates). Real themes
on this shelf, by origin:
|
theme label |
chunks |
top keywords |
|---|---|---|---|
|
milk calcium lactose |
167 |
milk, calcium, lactose, vitamin, fat |
|
milk protein foods |
103 |
milk, protein, foods, eggs |
|
calcium vitamin milk |
123 |
calcium, vitamin, milk, protein |
|
breast milk breast infant |
98 |
breast milk, breast, infant, formula |
tb_0421 joins “milk calcium lactose”. (This build produced no merged themes — a
real, instructive outcome: it means the embedding and entity passes didn’t overlap enough
to cross the merge threshold, which is a tuning signal, not
a bug.) See Layer B.
4. Layer C — the card that cites it¶
build_layer_c writes a cited card for the shelf/theme. Every sentence must be grounded
in member chunks — including ours:
Calcium in dairy milk — evidence quality: high Milk is a major dietary calcium source, ~300 mg per cup
[tb_0421], and its lactose content supports calcium absorption[tb_0421, ab_088]. Fortified milk additionally supplies vitamin D[tb_0421]. cited_chunk_ids:[tb_0421, ab_088, gd_0203]
See Layer C.
5. Retrieval — answering a query¶
Now a user asks “Is dairy a good source of calcium?”:
Hybrid search (Elasticsearch): BM25 + kNN over the query, fused by RRF, filtered to
shelf_ids ∋ mammalian milk product.tb_0421ranks high.Theme expansion (Neo4j → ES): follow
tb_0421’stheme_idsto the milk calcium lactose theme and pull its sibling chunks — adding complementary evidence (absorption studies, fortification) that worded things differently.Present: the chunks, plus the shelf’s Layer C card, with full provenance
chunk → shelf → theme → source doc.
That provenance trail is the whole point: the answer can cite exactly where every claim came from. See Architecture for the two-store machinery underneath.
Note
Steps 1–3 use the values shown above verbatim from a real foods build; the chunk text
and the card are representative (Layer C wasn’t built in this snapshot), but the shelf,
its support numbers, the is-a chain, and the themes are exactly as the graph contains them.