Back to Feed
Reasoning / Benchmarks & Evals

Structuring Entities for Better Document Retrieval

Original: EnSI-RAG: Entity-Structure-Indexed Retrieval-Augmented Generation for Long-Document Question Answering

Listen to the summary

Uses a voice available on your device

Audio options
On this page 4 sections
Related concepts 1 concepts

Key Takeaways

  • EnSI-RAG achieved an average accuracy of 78.24 across the Loong and Oolong benchmarks.
  • This performance represents a 6.62 point improvement over the published baseline scores.
  • The system uses structured records as retrieval keys, which makes it more robust to extraction errors than systems that rely on extracted data for reasoning.
  • Optimal retrieval granularity is domain-dependent, requiring selection of coarse or fine labels based on the document type.

Summary & Methodology Analysis

The EnSI-RAG system addresses the limitations of standard retrieval-augmented generation (RAG) by organizing long documents into entity-centered passages. Instead of relying on naive chunking, it extracts structured records containing entities, types, semantic categories, and values. These records act as keys in a query-independent index that maps structured metadata directly to passage identifiers. This design allows the retrieval engine to execute structured plans that align with the query, effectively surfacing the relevant context required for complex, multi-hop reasoning tasks.

Illustrative Implementation

A short sketch of the paper's core idea, not the authors' own code.

# Illustrative sketch (not from the paper)
import torch
from typing import *

def build_passages(docs): return {f"p{i}":d for i,d in enumerate(docs)}

def extract_records(p): return [("EntityX","TypeY","property","ValueZ")]

def build_index(p_dict):
    idx={}
    for pid,txt in p_dict.items():
        for rec in extract_records(txt):
            idx.setdefault(rec,[]).append(pid)
    return idx

def parse_query(q): return [("EntityX","TypeY","property",None)]

def retrieve(idx, pats):
    res=set()
    for pat in pats:
        for key,pids in idx.items():
            if all(p is None or p==k for p,k in zip(pat,key)):
                res.update(pids)
    return list(res)

def synthesize(q, texts):
    inp=q+"".join(texts)
    _=torch.tensor([len(inp)])  # placeholder LLM call
    return f"Answer based on {len(texts)} passages"

docs=["Long document ..."]
passages=build_passages(docs)
idx=build_index(passages)
q="What is the property of EntityX?"
ans=synthesize(q, [passages[p] for p in retrieve(idx, parse_query(q))])
print(ans)

Cross-Examination & FAQs

A deeper dive clarifying mechanics, constraints, and baseline evaluations.

Q1. What is the core purpose of EnSI-RAG?

It is a retrieval-augmented generation framework designed to improve the accuracy of question answering over long documents by indexing information based on entity structures.

Q2. How well does the model perform compared to existing methods?

It achieves an average accuracy of 78.24 on the tested benchmarks, which is 6.62 points higher than established baseline scores.

Q3. Does this system require specific types of documents?

The system is evaluated on long-document question-answering benchmarks, specifically the Loong and Oolong datasets.

Q4. How does the system handle potential errors in information extraction?

Unlike fully structured systems where extraction errors enter the reasoning state, EnSI-RAG uses extracted records only as passage-addressing keys. Even partial records remain useful if they successfully lead the system to the correct source passages.

Q5. What role does label granularity play in system performance?

Optimal granularity is domain-dependent. For instance, the authors use coarse labels for English Financial and Paper domains, while retaining fine labels for Legal domains.

Q6. Can inappropriate label choices negatively impact the system?

Yes, selecting an inappropriate granularity for labels can reduce the discriminative power of the retrieval process.

Q7. Are there specific performance benchmarks used?

The paper evaluates the system against the Loong and Oolong benchmarks.

Q8. How are answers generated by the system?

Once the retrieval process identifies the correct supporting passages using the entity-structure index, those passages are provided to an LLM to synthesize the final answer.

Q9. Does the system perform reasoning directly on the extracted records?

No. The system uses records as passage-addressing keys and generates answers from the retrieved source passages, rather than using extracted data as a reasoning substrate.

Flag an issue

What is wrong with this summary?

What is wrong?