From 9982af9e21734a189e295f7bb5d7fb812bde7ac4 Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Mon, 2 Mar 2026 20:21:21 +0700 Subject: [PATCH 01/11] feat: add Docling as alternative document parser - Add DoclingConfig dataclass (Core/configs/docling_config.py) with ocr_engine, force_full_page_ocr, images_scale, lang fields - Update SystemConfig to include parser (default: 'mineru') and docling config fields (Core/configs/system_config.py) - Add Docling adapter module (Core/provider/extract_pdf_info_docling.py) with parse_doc_with_docling() that maps Docling output to the canonical pdf_list format consumed by the BookRAG pipeline - Update build_tree_from_pdf() to branch on cfg.parser; MinerU path unchanged; Docling path added with isolated cache dir (Core/pipelines/doc_tree_builder.py) - Add example config for scanned documents (config/docling.yaml) with force_full_page_ocr: true and easyocr engine MinerU remains the default parser. No existing behaviour changes when parser is unset or set to 'mineru'. --- Core/configs/docling_config.py | 37 ++++ Core/configs/system_config.py | 5 + Core/pipelines/doc_tree_builder.py | 92 +++++--- Core/provider/extract_pdf_info_docling.py | 253 ++++++++++++++++++++++ config/docling.yaml | 113 ++++++++++ 5 files changed, 467 insertions(+), 33 deletions(-) create mode 100644 Core/configs/docling_config.py create mode 100644 Core/provider/extract_pdf_info_docling.py create mode 100644 config/docling.yaml diff --git a/Core/configs/docling_config.py b/Core/configs/docling_config.py new file mode 100644 index 0000000..b024059 --- /dev/null +++ b/Core/configs/docling_config.py @@ -0,0 +1,37 @@ +from dataclasses import dataclass, field +from typing import List + + +@dataclass +class DoclingConfig: + """Configuration for the Docling document parser. + + This config is an alternative to MinerU. Select it in the top-level YAML + by setting ``parser: docling``. + + Attributes: + ocr_engine: OCR back-end to use. Accepted values: + ``"easyocr"`` (default), ``"tesseract"``, ``"rapidocr"``. + force_full_page_ocr: When *True* every page is passed through OCR + even if selectable text is present. Strongly recommended for + scanned documents. + images_scale: Render scale factor for page images (1.0 ≈ 72 DPI). + Increase to 2.0 for higher-resolution figure/table crops. + lang: ISO 639-1 language hint forwarded to the OCR engine. + """ + + ocr_engine: str = "easyocr" + force_full_page_ocr: bool = False + images_scale: float = 2.0 + lang: str = "en" + + def __post_init__(self): + valid_engines = ("easyocr", "tesseract", "rapidocr") + if self.ocr_engine not in valid_engines: + raise ValueError( + f"Unsupported ocr_engine: '{self.ocr_engine}'. " + f"Choose one of {valid_engines}." + ) + if self.images_scale <= 0: + raise ValueError(f"images_scale must be positive, got {self.images_scale}.") + diff --git a/Core/configs/system_config.py b/Core/configs/system_config.py index fdc45d5..d5781c5 100644 --- a/Core/configs/system_config.py +++ b/Core/configs/system_config.py @@ -1,5 +1,6 @@ import yaml from Core.configs.mineru_config import MinerU +from Core.configs.docling_config import DoclingConfig from Core.configs.llm_config import LLMConfig from Core.configs.tree_config import TreeConfig from Core.configs.graph_config import GraphConfig @@ -21,6 +22,10 @@ class SystemConfig(BaseModel): vlm: VLMConfig = Field(default_factory=VLMConfig) mineru: MinerU = Field(default_factory=MinerU) + # Parser selection: "mineru" (default) or "docling" + parser: Optional[str] = "mineru" + docling: Optional[DoclingConfig] = Field(default_factory=DoclingConfig) + # Index Configurations tree: TreeConfig = Field(default_factory=TreeConfig) graph: GraphConfig = Field(default_factory=GraphConfig) diff --git a/Core/pipelines/doc_tree_builder.py b/Core/pipelines/doc_tree_builder.py index 3eee2d1..9b2de76 100644 --- a/Core/pipelines/doc_tree_builder.py +++ b/Core/pipelines/doc_tree_builder.py @@ -82,45 +82,71 @@ def build_tree_from_pdf(cfg: SystemConfig, reforce: bool = False) -> DocumentTre tree_index = DocumentTree(meta_dict=meta_dict, cfg=cfg) - backend = cfg.mineru.backend - server_url = cfg.mineru.server_url - method = cfg.mineru.method + import json + + parser = getattr(cfg, "parser", "mineru") or "mineru" base_file_name = Path(cfg.pdf_path).stem - tmp_save_path = os.path.join( - cfg.save_path, method, f"{base_file_name}_merged_content.json" - ) - if os.path.exists(tmp_save_path) and not reforce: - # tmp load pdf_list - import json + # Each parser writes its cached pdf_list to its own sub-directory so the + # two caches never collide even when the same save_path is reused. + if parser == "docling": + tmp_save_path = os.path.join( + cfg.save_path, "docling", f"{base_file_name}_merged_content.json" + ) + else: + method = cfg.mineru.method + tmp_save_path = os.path.join( + cfg.save_path, method, f"{base_file_name}_merged_content.json" + ) + if os.path.exists(tmp_save_path) and not reforce: + # Load cached pdf_list (parser-agnostic from this point on) with open(tmp_save_path, "rb") as f: pdf_list = json.load(f) - print(f"Loaded content from {tmp_save_path}") + log.info(f"Loaded cached content from {tmp_save_path}") else: - # Extract content from the PDF file - log.info(f"Extracting content from {cfg.pdf_path}...") - middle_json, content_list = parse_doc( - cfg.pdf_path, - output_dir=cfg.save_path, - backend=backend, - method=method, - server_url=server_url, - lang=cfg.mineru.lang, - ) - - file_name = str(Path(cfg.pdf_path).stem) - save_dir = os.path.join(cfg.save_path, method) - pdf_list = merge_middle_content( - middle_json, - content_list, - parse_dir=os.path.join(cfg.save_path, method), - save_dir=save_dir, - file_name=file_name, - ) # merge middle json content with content list. - - # tmp pdf_list save for fast test - log.info(f"Content extracted and saved to {tmp_save_path}") + log.info(f"Extracting content from '{cfg.pdf_path}' using parser='{parser}' …") + + if parser == "docling": + from Core.provider.extract_pdf_info_docling import parse_doc_with_docling + + pdf_list = parse_doc_with_docling( + pdf_path=cfg.pdf_path, + output_dir=cfg.save_path, + cfg=cfg.docling, + ) + # Persist for subsequent fast loads (mirrors what merge_middle_content + # does for the MinerU path). + docling_cache_dir = os.path.join(cfg.save_path, "docling") + os.makedirs(docling_cache_dir, exist_ok=True) + with open(tmp_save_path, "w", encoding="utf-8") as f: + json.dump(pdf_list, f, ensure_ascii=False, indent=4) + log.info(f"[Docling] Extracted content cached to '{tmp_save_path}'") + else: + # ── MinerU (default) ────────────────────────────────────────── + backend = cfg.mineru.backend + server_url = cfg.mineru.server_url + method = cfg.mineru.method + + middle_json, content_list = parse_doc( + cfg.pdf_path, + output_dir=cfg.save_path, + backend=backend, + method=method, + server_url=server_url, + lang=cfg.mineru.lang, + ) + + file_name = str(Path(cfg.pdf_path).stem) + save_dir = os.path.join(cfg.save_path, method) + pdf_list = merge_middle_content( + middle_json, + content_list, + parse_dir=os.path.join(cfg.save_path, method), + save_dir=save_dir, + file_name=file_name, + ) + log.info(f"[MinerU] Extracted content saved to '{tmp_save_path}'") llm = LLM(cfg.llm) vlm = VLM(cfg.vlm) if cfg.tree.use_vlm else None diff --git a/Core/provider/extract_pdf_info_docling.py b/Core/provider/extract_pdf_info_docling.py new file mode 100644 index 0000000..989e11d --- /dev/null +++ b/Core/provider/extract_pdf_info_docling.py @@ -0,0 +1,253 @@ +"""Docling-based document parser adapter for BookRAG. + +This module provides :func:`parse_doc_with_docling`, which converts a PDF (or +any Docling-supported format) into the canonical ``pdf_list`` format consumed +by the rest of the BookRAG pipeline. + +``pdf_list`` schema (one dict per content block): + - ``type`` : ``"text"`` | ``"image"`` | ``"table"`` | ``"equation"`` + - ``text`` : str — text content (text / equation nodes) + - ``text_level`` : int — ``-1`` = body text; ``0`` = chapter; ``1`` = section; … + - ``page_idx`` : int — 0-indexed page number + - ``pdf_id`` : int — sequential 0-based index matching position in list + - ``img_path`` : str — absolute path to saved PNG (image / table nodes) + - ``image_caption`` : list[str] + - ``image_footnote``: list[str] + - ``table_caption`` : list[str] + - ``table_footnote``: list[str] + - ``table_body`` : str — markdown table string + - ``middle_json`` : dict — raw Docling item metadata (non-critical) +""" + +from __future__ import annotations + +import json +import logging +import os +from pathlib import Path +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from Core.configs.docling_config import DoclingConfig + +log = logging.getLogger(__name__) + + +# --------------------------------------------------------------------------- +# Public entry point +# --------------------------------------------------------------------------- + +def parse_doc_with_docling( + pdf_path: str, + output_dir: str, + cfg: "DoclingConfig", +) -> list[dict]: + """Parse *pdf_path* with Docling and return a BookRAG-compatible ``pdf_list``. + + Args: + pdf_path: Path to the PDF (or other supported format) to parse. + output_dir: Root save directory; images are written to + ``/docling/images/``. + cfg: :class:`~Core.configs.docling_config.DoclingConfig` instance + that controls OCR engine, resolution, etc. + + Returns: + A flat list of dicts matching the ``pdf_list`` schema. The item at + position *i* always satisfies ``item["pdf_id"] == i``. + """ + # ------------------------------------------------------------------ setup + from docling.datamodel.base_models import InputFormat + from docling.datamodel.pipeline_options import PdfPipelineOptions + from docling.document_converter import DocumentConverter, PdfFormatOption + from docling_core.types.doc import PictureItem, SectionHeaderItem, TableItem, TextItem + + img_dir = os.path.join(output_dir, "docling", "images") + os.makedirs(img_dir, exist_ok=True) + + pipeline_options = _build_pipeline_options(cfg) + + converter = DocumentConverter( + format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)} + ) + + log.info(f"[Docling] Converting '{pdf_path}' …") + conv_res = converter.convert(pdf_path) + doc = conv_res.document + doc_stem = Path(pdf_path).stem + + # ---------------------------------------------------------------- iterate + pdf_list: list[dict] = [] + pdf_id = 0 # 0-based; MUST equal position in list + pic_counter = 0 + tbl_counter = 0 + + for element, _level in doc.iterate_items(): + page_idx = _get_page_idx(element) + + if isinstance(element, SectionHeaderItem): + # SectionHeaderItem.level is 1-indexed (1 = chapter, 2 = section …) + heading_level = getattr(element, "level", 1) + pdf_list.append({ + "type": "text", + "text": element.text or "", + "text_level": max(0, heading_level - 1), # convert to 0-indexed + "page_idx": page_idx, + "pdf_id": pdf_id, + "middle_json": {"docling_label": str(element.label)}, + }) + + elif isinstance(element, TableItem): + tbl_counter += 1 + img_path = _save_element_image( + element, doc, img_dir, f"{doc_stem}-table-{tbl_counter}.png" + ) + captions, footnotes = _extract_captions_footnotes(element) + pdf_list.append({ + "type": "table", + "text": "", + "text_level": -1, + "page_idx": page_idx, + "pdf_id": pdf_id, + "img_path": img_path, + "table_caption": captions, + "table_footnote": footnotes, + "table_body": element.export_to_markdown(), + "middle_json": {"docling_label": "table"}, + }) + + elif isinstance(element, PictureItem): + pic_counter += 1 + img_path = _save_element_image( + element, doc, img_dir, f"{doc_stem}-picture-{pic_counter}.png" + ) + captions, footnotes = _extract_captions_footnotes(element) + pdf_list.append({ + "type": "image", + "text": "", + "text_level": -1, + "page_idx": page_idx, + "pdf_id": pdf_id, + "img_path": img_path, + "image_caption": captions, + "image_footnote": footnotes, + "middle_json": {"docling_label": "picture"}, + }) + + elif isinstance(element, TextItem): + # Covers TextItem, ListItem, CodeItem, FormulaItem, FootnoteItem, etc. + label_str = str(getattr(element, "label", "text")).lower() + is_formula = "formula" in label_str or "equation" in label_str + text = getattr(element, "text", "") or "" + if not text.strip(): + continue # skip empty elements — don't increment pdf_id + pdf_list.append({ + "type": "equation" if is_formula else "text", + "text": text, + "text_level": -1, + "page_idx": page_idx, + "pdf_id": pdf_id, + "middle_json": {"docling_label": label_str}, + }) + + else: + # Any remaining element types (e.g. page headers, key-value pairs) + text = getattr(element, "text", "") or "" + if not text.strip(): + continue + pdf_list.append({ + "type": "text", + "text": text, + "text_level": -1, + "page_idx": page_idx, + "pdf_id": pdf_id, + "middle_json": {"docling_label": str(getattr(element, "label", "unknown"))}, + }) + + pdf_id += 1 # advance only when an item was appended + + log.info(f"[Docling] Extracted {len(pdf_list)} content blocks from '{doc_stem}'.") + return pdf_list + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + +def _build_pipeline_options(cfg: "DoclingConfig"): + """Construct :class:`PdfPipelineOptions` from *cfg*.""" + from docling.datamodel.pipeline_options import PdfPipelineOptions + + opts = PdfPipelineOptions() + opts.do_ocr = True + opts.do_table_structure = True + opts.generate_picture_images = True + opts.images_scale = cfg.images_scale + + ocr_opts = _build_ocr_options(cfg) + if ocr_opts is not None: + opts.ocr_options = ocr_opts + + return opts + + +def _build_ocr_options(cfg: "DoclingConfig"): + """Return an OCR-options object matching *cfg.ocr_engine*, or *None*.""" + engine = cfg.ocr_engine.lower() + force = cfg.force_full_page_ocr + lang = cfg.lang + + try: + if engine == "easyocr": + from docling.datamodel.pipeline_options import EasyOcrOptions + return EasyOcrOptions(force_full_page_ocr=force, lang=[lang]) + elif engine == "tesseract": + from docling.datamodel.pipeline_options import TesseractCliOcrOptions + return TesseractCliOcrOptions(force_full_page_ocr=force, lang=lang) + elif engine == "rapidocr": + from docling.datamodel.pipeline_options import RapidOcrOptions + return RapidOcrOptions(force_full_page_ocr=force) + except ImportError as exc: + log.warning( + f"[Docling] Could not import OCR options for engine '{engine}': {exc}. " + "Falling back to Docling's default OCR settings." + ) + return None + + +def _get_page_idx(element) -> int: + """Extract 0-indexed page number from a Docling element's provenance.""" + try: + if element.prov: + return max(0, element.prov[0].page_no - 1) # Docling page_no is 1-indexed + except (AttributeError, IndexError): + pass + return 0 + + +def _save_element_image(element, doc, img_dir: str, filename: str) -> str: + """Save element image as PNG and return its absolute path (or '' on failure).""" + img_path = os.path.join(img_dir, filename) + try: + pil_image = element.get_image(doc) + if pil_image is not None: + pil_image.save(img_path, "PNG") + return img_path + except Exception as exc: + log.warning(f"[Docling] Could not save image '{filename}': {exc}") + return "" + + +def _extract_captions_footnotes(element) -> tuple[list[str], list[str]]: + """Pull caption and footnote text lists from a Docling element.""" + captions: list[str] = [] + footnotes: list[str] = [] + for ref in getattr(element, "captions", []): + text = getattr(ref, "text", None) or getattr(ref, "__str__", lambda: "")() + if text and text.strip(): + captions.append(text.strip()) + for ref in getattr(element, "footnotes", []): + text = getattr(ref, "text", None) or getattr(ref, "__str__", lambda: "")() + if text and text.strip(): + footnotes.append(text.strip()) + return captions, footnotes + diff --git a/config/docling.yaml b/config/docling.yaml new file mode 100644 index 0000000..212169b --- /dev/null +++ b/config/docling.yaml @@ -0,0 +1,113 @@ +# config/docling.yaml +# +# BookRAG configuration that uses Docling as the document parser instead of +# MinerU. Suitable for scanned books and multi-format documents (PDF, DOCX, +# PPTX, HTML, images). MinerU settings are still required for the rest of +# the system; they are simply unused at parse time when parser=docling. +# +# Usage: +# python main.py -c config/docling.yaml -d Scripts/cfg/Qasper.yaml index --stage tree + +pdf_path: TODO +save_path: TODO + +# ── Parser selection ──────────────────────────────────────────────────────── +# Set to "docling" to use Docling. Change to "mineru" to fall back to MinerU. +parser: docling + +docling: + # OCR engine: "easyocr" (default) | "tesseract" | "rapidocr" + ocr_engine: easyocr + # Force OCR on every page even when selectable text is present. + # Set to true for scanned documents where text layer is absent or unreliable. + force_full_page_ocr: true + # Image render scale (1.0 ≈ 72 DPI). 2.0 gives crisper figure/table crops. + images_scale: 2.0 + # Language hint for the OCR engine (ISO 639-1). + lang: en + +# ── MinerU (kept for completeness; unused when parser=docling) ────────────── +mineru: + backend: pipeline + method: auto + lang: en + +# ── LLM (used for outline extraction, refinement, summaries) ──────────────── +llm: + model_name: TODO + api_key: TODO + api_base: TODO + backend: openai + max_tokens: 5000 + temperature: 0.1 + frequency_penalty: 0.0 + presence_penalty: 0.0 + max_workers: 8 + +# ── VLM (used for image/table node summaries when tree.node_summary=true) ─── +vlm: + model_name: TODO + api_key: TODO + api_base: TODO + temperature: 0.1 + max_tokens: 6000 + backend: ollama + +# ── Tree index ─────────────────────────────────────────────────────────────── +index: + chunk_size: 512 + overlap: 50 + +tree: + node_keywords: true + node_summary: true + +# ── Knowledge graph ────────────────────────────────────────────────────────── +graph: + extractor_type: "llm" + local_model_name: "en_core_web_sm" + image_description_force: true + max_gleaning: 0 + refine_type: "advanced" + embedding_config: + model_name: TODO + backend: openai + max_length: TODO + device: TODO + api_base: TODO + reranker_config: + model_name: TODO + max_length: 4096 + device: TODO + backend: vllm + api_base: TODO + +# ── Vector database ────────────────────────────────────────────────────────── +vdb: + mm_embedding: true + vdb_dir_name: "Tree_vdb" + collection_name: "TreeVDB" + embedding_config: + model_name: TODO + device: TODO + +rag_force_reprocess: true + +# ── RAG ────────────────────────────────────────────────────────────────────── +rag: + strategy: gbc + varient: standard + topk: 10 + sim_threshold: 0.3 + select_depth: 2 + max_retry: 2 + reranker_config: + model_name: TODO + max_length: TODO + device: TODO + backend: vllm + api_base: TODO + mm_reranker_config: + model_name: TODO + device: TODO + From 10c03dcac670be908cddcbe75dd47f6091cf8215 Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Mon, 2 Mar 2026 21:59:07 +0700 Subject: [PATCH 02/11] feat: multi-tenant chatbot with FalkorDB + MongoDB + FastAPI (3-phase) Phase 1 - FalkorDB & Config Foundation: - Add Core/configs/falkordb_config.py: FalkorDBConfig dataclass with graph_name_for_doc() and graph_name_for_global() helpers - Add Core/configs/mongodb_config.py: MongoDBConfig dataclass with tenant_db_name() helper - Update Core/configs/system_config.py: add tenant_id, doc_id, falkordb, mongodb fields; backward-compatible (all optional) - Rewrite Core/Index/Graph.py: optional FalkorDB persistence alongside NetworkX; new methods _save_to_falkordb, _load_from_falkordb, _get_fdb_subgraph, save_to_global_graph, get_global_subgraph; fix pre-existing bug: node_link_graph now uses edges='links' to match node_link_data save format (NetworkX 3.x compatibility) - Update Core/Index/GBCIndex.py: tenant/doc_id-namespaced VDB paths, pass falkordb config to Graph.load_from_dir, add rebuild_global_vdb() - Update Core/pipelines/kg_builder.py: pass tenant_id, doc_id, falkordb_cfg from config into Graph constructor Phase 2 - FastAPI Multi-User API: - api/main.py: FastAPI app with lifespan, CORS, health endp- api/main.py: FastAPI app with lifespan, CORS, health endp- api/ma, get_current_user, require_admin, check_doc_access, filter_accessible_docs - api/db/mongodb.py: Motor async CRUD for tenants,- api/db/mongodb.py: Motmi- api/db/mongodb.py: Motor async CRUD for tenants,- api/db/mopi/models/requests.py: Pydantic request/response models - api/routers/auth.py: POST /auth/register, POST /auth/login - api/routers/tenants.py: tenant management (admin-gated) - api/routers/documents.py: PDF upload + background indexing, list, status - api/routers/chat.py: POST /chat/query, session create, message history - api/services/indexing.py: background GBC index build in thread pool with MongoDB status tracking Phase 3 - Cross-Document Entity ResoluPhase 3 - Cross-Document Entity ResoluPhase 3 - Cross-Document Entity chPhase 3 - Cross-Document Entity ResoluPhase 3 - CrokorDB graph, HAS_MENTION edge creation, update global VDB for canonical entities - api/services/chat.py: parallel per-doc GBC RAG queries (up to 5 docs) with answer synthesis for cross-doc mode - Entity resolution runs automatically after indexing (non-fatal) Config updates (from previous session): - config/gbc.yaml: upgrade LLM/VLM to Qwen3.5-35B-A3B-AWQ - Core/configs/vlm_config.py: update defaults for Qwen3.5 backend - Core/prompts/kg_prompt.py: language-agnostic NER prompt --- Core/Index/GBCIndex.py | 52 ++++- Core/Index/Graph.py | 347 ++++++++++++++++++++++++++---- Core/configs/falkordb_config.py | 20 ++ Core/configs/mongodb_config.py | 15 ++ Core/configs/system_config.py | 12 +- Core/configs/vlm_config.py | 10 +- Core/pipelines/kg_builder.py | 10 +- Core/prompts/kg_prompt.py | 2 +- api/__init__.py | 0 api/db/__init__.py | 0 api/db/mongodb.py | 133 ++++++++++++ api/dependencies.py | 89 ++++++++ api/main.py | 58 +++++ api/models/__init__.py | 0 api/models/requests.py | 86 ++++++++ api/routers/__init__.py | 0 api/routers/auth.py | 56 +++++ api/routers/chat.py | 83 +++++++ api/routers/documents.py | 101 +++++++++ api/routers/tenants.py | 56 +++++ api/services/__init__.py | 0 api/services/chat.py | 96 +++++++++ api/services/entity_resolution.py | 119 ++++++++++ api/services/indexing.py | 65 ++++++ config/gbc.yaml | 12 +- 25 files changed, 1359 insertions(+), 63 deletions(-) create mode 100644 Core/configs/falkordb_config.py create mode 100644 Core/configs/mongodb_config.py create mode 100644 api/__init__.py create mode 100644 api/db/__init__.py create mode 100644 api/db/mongodb.py create mode 100644 api/dependencies.py create mode 100644 api/main.py create mode 100644 api/models/__init__.py create mode 100644 api/models/requests.py create mode 100644 api/routers/__init__.py create mode 100644 api/routers/auth.py create mode 100644 api/routers/chat.py create mode 100644 api/routers/documents.py create mode 100644 api/routers/tenants.py create mode 100644 api/services/__init__.py create mode 100644 api/services/chat.py create mode 100644 api/services/entity_resolution.py create mode 100644 api/services/indexing.py diff --git a/Core/Index/GBCIndex.py b/Core/Index/GBCIndex.py index f40c4c4..cd691d9 100644 --- a/Core/Index/GBCIndex.py +++ b/Core/Index/GBCIndex.py @@ -31,11 +31,18 @@ def __init__( self.TreeIndex: DocumentTree = TreeIndex self.GraphIndex: Graph = graph_index - # load the vdb of entities + # load the vdb of entities — namespaced by tenant/doc if available if config.graph.refine_type == "basic": - self.entity_vdb_path = os.path.join(self.save_dir, "kg_vdb_basic") + vdb_name = "kg_vdb_basic" else: - self.entity_vdb_path = os.path.join(self.save_dir, "kg_vdb") + vdb_name = "kg_vdb" + + if config.tenant_id and config.doc_id: + self.entity_vdb_path = os.path.join( + self.save_dir, config.tenant_id, config.doc_id, vdb_name + ) + else: + self.entity_vdb_path = os.path.join(self.save_dir, vdb_name) self.embedder = TextEmbeddingProvider( model_name=config.graph.embedding_config.model_name, @@ -109,8 +116,43 @@ def load_gbc_index(cls, config: SystemConfig): variant = "basic" else: variant = None - - graph_index = Graph.load_from_dir(config.save_path, variant=variant) + + # Pass FalkorDB config if tenant/doc IDs are set + falkordb_cfg = config.falkordb if (config.tenant_id and config.doc_id) else None + graph_index = Graph.load_from_dir( + config.save_path, + variant=variant, + tenant_id=config.tenant_id, + doc_id=config.doc_id, + falkordb_cfg=falkordb_cfg, + ) GBC = cls(config=config, graph_index=graph_index, TreeIndex=tree_index) log.info(f"GBC index loaded from {config.save_path}") return GBC + + def rebuild_global_vdb(self, global_vdb_path: str) -> None: + """ + Build a global vector database of canonical entities (Phase 3). + Pulls all nodes from the current GraphIndex and adds them to a shared VDB. + """ + from Core.provider.vdb import VectorStore + global_vdb = VectorStore( + db_path=global_vdb_path, + embedding_model=self.embedder, + collection_name="global_kg_collection", + ) + nodes = self.GraphIndex.get_all_nodes() + texts = [] + meta_datas = [] + for node in nodes: + texts.append(node) + entity = self.GraphIndex.get_entity_by_node_name(node) + meta_datas.append({ + "entity_name": entity.entity_name, + "entity_type": entity.entity_type, + "description": entity.description, + "doc_id": self.config.doc_id or "", + "tenant_id": self.config.tenant_id or "", + }) + global_vdb.add_texts(texts=texts, metadatas=meta_datas) + log.info(f"Rebuilt global VDB with {len(texts)} entries from doc '{self.config.doc_id}'.") diff --git a/Core/Index/Graph.py b/Core/Index/Graph.py index ccdb7ce..dadd216 100644 --- a/Core/Index/Graph.py +++ b/Core/Index/Graph.py @@ -2,8 +2,7 @@ from networkx.readwrite import json_graph import os from collections import defaultdict -from typing import Iterable, Union, Set, List -from numpy import source +from typing import Iterable, Union, Set, List, Optional, TYPE_CHECKING # noqa: F401 from pydantic import BaseModel, Field import json @@ -11,6 +10,9 @@ log = logging.getLogger(__name__) +if TYPE_CHECKING: + from Core.configs.falkordb_config import FalkorDBConfig + class Entity(BaseModel): entity_name: str # Primary key for entity @@ -64,14 +66,30 @@ class Graph: _DATA_FILE = "graph_data.json" # index data file _BASE_FILENAME = "graph_data" - def __init__(self, save_path: str = None, variant: str = None): + def __init__( + self, + save_path: str = None, + variant: str = None, + tenant_id: str = None, + doc_id: str = None, + falkordb_cfg=None, # Optional[FalkorDBConfig] + ): self.kg = nx.Graph() # 节点名采用 "entity_name (entity_type)",确保唯一性 self.tree2kg = defaultdict(set) # Maps tree nodes id (int) to graph entities - # self.name_to_nodes = defaultdict(set) # entity_name -> set of node names self.save_dir = save_path self.variant = variant + # Multi-tenant FalkorDB support + self.tenant_id = tenant_id + self.doc_id = doc_id + self.falkordb_cfg = falkordb_cfg + self.use_falkordb = falkordb_cfg is not None and tenant_id is not None and doc_id is not None + self._fdb_graph = None # lazy FalkorDB graph handle + self._fdb_graph_name: Optional[str] = None + if self.use_falkordb: + self._fdb_graph_name = falkordb_cfg.graph_name_for_doc(tenant_id, doc_id) + # dynamic filename based on variant self.data_filename = self._get_filename(variant) @@ -217,22 +235,6 @@ def get_entity_by_node_name(self, node_name: str) -> Entity: raise KeyError(f"Node '{node_name}' not found in knowledge graph.") return Entity(**self.kg.nodes[node_name]) - def get_kg_subgraph( - self, tree_node_ids: Iterable[int], copy: bool = True - ) -> nx.Graph: - """ - Given one or more tree node IDs, return the induced subgraph of the KG - containing all linked entities. By default returns a deep copy; if copy=False, - returns a lightweight view (faster slicing). - - Complexity: O(sum(degree(n)) + |nodes| + |edges|). - For a few hundred nodes, this remains efficient even if KG has millions of edges. - """ - # Collect all KG node names for the provided tree nodes - kg_nodes = set().union(*(self.tree2kg.get(tid, set()) for tid in tree_node_ids)) - sub = self.kg.subgraph(kg_nodes) - return sub.copy() if copy else sub - def get_subgraph_data(self, entities: List[str]) -> dict: # Return the subgraph entities data, excluding description and source_ids in entities # If the relation connects two entities in the subgraph, it will be included @@ -301,38 +303,220 @@ def remove_self_loops(self) -> int: self.kg.remove_edges_from(self_loop_edges) log.info("All self-loops have been removed.") + # ------------------------------------------------------------------ # + # FalkorDB helpers # + # ------------------------------------------------------------------ # + + def _get_fdb_graph(self): + """Lazy-initialise and return the FalkorDB graph handle.""" + if self._fdb_graph is not None: + return self._fdb_graph + try: + from falkordb import FalkorDB + cfg = self.falkordb_cfg + conn_kwargs = {"host": cfg.host, "port": cfg.port} + if cfg.password: + conn_kwargs["password"] = cfg.password + client = FalkorDB(**conn_kwargs) + self._fdb_graph = client.select_graph(self._fdb_graph_name) + log.info(f"Connected to FalkorDB graph '{self._fdb_graph_name}'") + except Exception as e: + log.error(f"Failed to connect to FalkorDB: {e}") + raise + return self._fdb_graph + + def _save_to_falkordb(self) -> None: + """Persist the in-memory NetworkX graph to FalkorDB.""" + g = self._get_fdb_graph() + # Clear existing data for idempotent saves + try: + g.query("MATCH (n) DETACH DELETE n") + except Exception: + pass + + # Write nodes + for node_name, data in self.kg.nodes(data=True): + source_ids_list = list(data.get("source_ids", set())) + desc = data.get("description", "").replace("'", "\\'") + ename = data.get("entity_name", "").replace("'", "\\'") + etype = data.get("entity_type", "").replace("'", "\\'") + nname = node_name.replace("\\", "\\\\").replace("'", "\\'") + cypher = ( + f"CREATE (n:Entity {{" + f"node_name: '{nname}', " + f"entity_name: '{ename}', " + f"entity_type: '{etype}', " + f"description: '{desc}', " + f"source_ids: {source_ids_list}" + f"}})" + ) + g.query(cypher) + + # Write edges + for src, tgt, data in self.kg.edges(data=True): + rel_name = data.get("relation_name", "").replace("'", "\\'") + weight = float(data.get("weight", 0.0)) + desc = data.get("description", "").replace("'", "\\'") + src_ids = list(data.get("source_ids", set())) + src_q = src.replace("\\", "\\\\").replace("'", "\\'") + tgt_q = tgt.replace("\\", "\\\\").replace("'", "\\'") + cypher = ( + f"MATCH (a:Entity {{node_name: '{src_q}'}}), " + f"(b:Entity {{node_name: '{tgt_q}'}}) " + f"CREATE (a)-[:RELATION {{" + f"relation_name: '{rel_name}', " + f"weight: {weight}, " + f"description: '{desc}', " + f"source_ids: {src_ids}" + f"}}]->(b)" + ) + g.query(cypher) + + # Write tree2kg as node property (source_ids already on nodes) + log.info(f"Saved graph to FalkorDB '{self._fdb_graph_name}': " + f"{self.kg.number_of_nodes()} nodes, {self.kg.number_of_edges()} edges.") + + def _load_from_falkordb(self) -> None: + """Load graph data from FalkorDB into in-memory NetworkX graph.""" + g = self._get_fdb_graph() + result = g.query("MATCH (n:Entity) RETURN n") + for record in result.result_set: + node = record[0] + props = node.properties + source_ids = set(props.get("source_ids", [])) + node_name = props["node_name"] + self.kg.add_node(node_name, + entity_name=props.get("entity_name", ""), + entity_type=props.get("entity_type", ""), + description=props.get("description", ""), + source_ids=source_ids) + for tid in source_ids: + self.tree2kg[int(tid)].add(node_name) + + edge_result = g.query( + "MATCH (a:Entity)-[r:RELATION]->(b:Entity) " + "RETURN a.node_name, b.node_name, r.relation_name, r.weight, r.description, r.source_ids" + ) + for rec in edge_result.result_set: + src_name, tgt_name, rel_name, weight, desc, src_ids = rec + self.kg.add_edge( + src_name, tgt_name, + src_entity_name=self.kg.nodes[src_name].get("entity_name", ""), + tgt_entity_name=self.kg.nodes[tgt_name].get("entity_name", ""), + relation_name=rel_name or "", + weight=float(weight or 0.0), + description=desc or "", + source_ids=set(src_ids or []), + ) + log.info(f"Loaded graph from FalkorDB '{self._fdb_graph_name}': " + f"{self.kg.number_of_nodes()} nodes, {self.kg.number_of_edges()} edges.") + + def _get_fdb_subgraph(self, tree_node_ids: Iterable[int]) -> nx.Graph: + """Query FalkorDB for the subgraph linked to given tree node IDs.""" + # Collect node names from tree2kg (loaded at init) + kg_nodes = set().union(*(self.tree2kg.get(tid, set()) for tid in tree_node_ids)) + if not kg_nodes: + return nx.Graph() + + g = self._get_fdb_graph() + node_list = [n.replace("'", "\\'") for n in kg_nodes] + node_filter = "['" + "', '".join(node_list) + "']" + result = g.query( + f"MATCH (n:Entity) WHERE n.node_name IN {node_filter} RETURN n" + ) + subgraph = nx.Graph() + for rec in result.result_set: + node = rec[0] + props = node.properties + node_name = props["node_name"] + subgraph.add_node(node_name, + entity_name=props.get("entity_name", ""), + entity_type=props.get("entity_type", ""), + description=props.get("description", ""), + source_ids=set(props.get("source_ids", []))) + + edge_result = g.query( + f"MATCH (a:Entity)-[r:RELATION]->(b:Entity) " + f"WHERE a.node_name IN {node_filter} AND b.node_name IN {node_filter} " + f"RETURN a.node_name, b.node_name, r.relation_name, r.weight, r.description, r.source_ids" + ) + for rec in edge_result.result_set: + src_name, tgt_name, rel_name, weight, desc, src_ids = rec + if src_name in subgraph and tgt_name in subgraph: + subgraph.add_edge(src_name, tgt_name, + relation_name=rel_name or "", + weight=float(weight or 0.0), + description=desc or "", + source_ids=set(src_ids or [])) + return subgraph + def save_graph(self) -> None: - if not self.save_dir: + if not self.save_dir and not self.use_falkordb: log.warning("Warning: save_dir is not set. Nothing will be saved.") return - os.makedirs(self.save_dir, exist_ok=True) - # save_path = os.path.join(self.save_dir, self._DATA_FILE) - - # use dynamic filename based on variant - save_path = os.path.join(self.save_dir, self.data_filename) - - graph_json_data = json_graph.node_link_data(self.kg, edges="links") - - data_to_save = { - "graph": graph_json_data, - "tree2kg": {k: list(v) for k, v in self.tree2kg.items()}, - "variant": self.variant, - } - - # 3. 保存为格式化的JSON文件 - with open(save_path, "w", encoding="utf-8") as f: - json.dump(data_to_save, f, cls=SetEncoder, indent=4, ensure_ascii=False) + # If FalkorDB is configured, persist there + if self.use_falkordb: + self._save_to_falkordb() + # Also save JSON as backup if save_dir is set + if self.save_dir: + os.makedirs(self.save_dir, exist_ok=True) + + if self.save_dir: + os.makedirs(self.save_dir, exist_ok=True) + save_path = os.path.join(self.save_dir, self.data_filename) + graph_json_data = json_graph.node_link_data(self.kg, edges="links") + data_to_save = { + "graph": graph_json_data, + "tree2kg": {k: list(v) for k, v in self.tree2kg.items()}, + "variant": self.variant, + } + with open(save_path, "w", encoding="utf-8") as f: + json.dump(data_to_save, f, cls=SetEncoder, indent=4, ensure_ascii=False) + log.info(f"Graph data successfully saved to: {save_path}") - log.info(f"Graph data successfully saved to: {save_path}") + def get_kg_subgraph( + self, tree_node_ids: Iterable[int], copy: bool = True + ) -> nx.Graph: + """ + Given one or more tree node IDs, return the induced subgraph of the KG. + In FalkorDB mode, queries the database directly for only the needed nodes. + """ + if self.use_falkordb and not self.kg.nodes: + # FalkorDB-only mode: fetch subgraph from DB + return self._get_fdb_subgraph(tree_node_ids) + # Default: in-memory NetworkX subgraph + kg_nodes = set().union(*(self.tree2kg.get(tid, set()) for tid in tree_node_ids)) + sub = self.kg.subgraph(kg_nodes) + return sub.copy() if copy else sub @classmethod - def load_from_dir(cls, load_dir: str, variant: str = None) -> "Graph": + def load_from_dir( + cls, + load_dir: str, + variant: str = None, + tenant_id: str = None, + doc_id: str = None, + falkordb_cfg=None, + ) -> "Graph": + """Load a Graph from JSON file, or from FalkorDB if configured.""" + # FalkorDB mode: load tree2kg from DB, keep kg empty for lazy subgraph queries + if falkordb_cfg is not None and tenant_id is not None and doc_id is not None: + graph_instance = cls( + save_path=load_dir, + variant=variant, + tenant_id=tenant_id, + doc_id=doc_id, + falkordb_cfg=falkordb_cfg, + ) + graph_instance._load_from_falkordb() + log.info(f"Graph loaded from FalkorDB graph '{graph_instance._fdb_graph_name}'") + return graph_instance + + # Default: JSON file load target_filename = cls._get_filename(variant) load_path = os.path.join(load_dir, target_filename) - - # load_path = os.path.join(load_dir, cls._DATA_FILE) if not os.path.exists(load_path): raise FileNotFoundError(f"Error: Missing graph file: {load_path}") @@ -340,8 +524,8 @@ def load_from_dir(cls, load_dir: str, variant: str = None) -> "Graph": loaded_data = json.load(f) graph_instance = cls(save_path=load_dir) - - graph_instance.kg = json_graph.node_link_graph(loaded_data["graph"]) + # Pass edges="links" to match the key used when saving with node_link_data(edges="links") + graph_instance.kg = json_graph.node_link_graph(loaded_data["graph"], edges="links") for _, node_data in graph_instance.kg.nodes(data=True): if "source_ids" in node_data and isinstance(node_data["source_ids"], list): @@ -361,6 +545,81 @@ def load_from_dir(cls, load_dir: str, variant: str = None) -> "Graph": ) return graph_instance + # ------------------------------------------------------------------ # + # Phase 3: Global graph methods # + # ------------------------------------------------------------------ # + + def save_to_global_graph(self, falkordb_cfg, tenant_id: str) -> None: + """ + Merge this document's KG nodes into the tenant-level global FalkorDB graph. + Each entity is stored as a canonical node; a HAS_MENTION edge links the + canonical node back to its document source. + """ + try: + from falkordb import FalkorDB + cfg = falkordb_cfg + conn_kwargs = {"host": cfg.host, "port": cfg.port} + if cfg.password: + conn_kwargs["password"] = cfg.password + client = FalkorDB(**conn_kwargs) + global_graph = client.select_graph(cfg.graph_name_for_global(tenant_id)) + except Exception as e: + log.error(f"Failed to connect to FalkorDB global graph: {e}") + raise + + for node_name, data in self.kg.nodes(data=True): + ename = data.get("entity_name", "").replace("'", "\\'") + etype = data.get("entity_type", "").replace("'", "\\'") + desc = data.get("description", "").replace("'", "\\'") + nname = node_name.replace("\\", "\\\\").replace("'", "\\'") + doc_id_esc = self.doc_id.replace("'", "\\'") if self.doc_id else "" + # MERGE canonical entity node + global_graph.query( + f"MERGE (n:Entity {{node_name: '{nname}'}}) " + f"ON CREATE SET n.entity_name='{ename}', n.entity_type='{etype}', n.description='{desc}' " + f"CREATE (n)-[:HAS_MENTION {{doc_id: '{doc_id_esc}'}}]->(n)" + ) + log.info(f"Merged {self.kg.number_of_nodes()} nodes into global graph for tenant '{tenant_id}'.") + + def get_global_subgraph( + self, + falkordb_cfg, + tenant_id: str, + accessible_doc_ids: List[str], + ) -> nx.Graph: + """ + Fetch a cross-document subgraph from the global FalkorDB graph, + restricted to documents in accessible_doc_ids. + """ + try: + from falkordb import FalkorDB + cfg = falkordb_cfg + conn_kwargs = {"host": cfg.host, "port": cfg.port} + if cfg.password: + conn_kwargs["password"] = cfg.password + client = FalkorDB(**conn_kwargs) + global_graph = client.select_graph(cfg.graph_name_for_global(tenant_id)) + except Exception as e: + log.error(f"Failed to connect to FalkorDB global graph: {e}") + raise + + # Use a relationship variable r to filter by doc_id property on HAS_MENTION edges + doc_filter = "['" + "', '".join(d.replace("'", "\\'") for d in accessible_doc_ids) + "']" + result = global_graph.query( + f"MATCH (n:Entity)-[r:HAS_MENTION]->(n) " + f"WHERE r.doc_id IN {doc_filter} RETURN DISTINCT n" + ) + subgraph = nx.Graph() + for rec in result.result_set: + node = rec[0] + props = node.properties + node_name = props["node_name"] + subgraph.add_node(node_name, + entity_name=props.get("entity_name", ""), + entity_type=props.get("entity_type", ""), + description=props.get("description", "")) + return subgraph + if __name__ == "__main__": # Example usage diff --git a/Core/configs/falkordb_config.py b/Core/configs/falkordb_config.py new file mode 100644 index 0000000..1a047ff --- /dev/null +++ b/Core/configs/falkordb_config.py @@ -0,0 +1,20 @@ +from dataclasses import dataclass, field + + +@dataclass +class FalkorDBConfig: + """Configuration for FalkorDB graph database connection.""" + + host: str = "localhost" + port: int = 6379 + password: str = "" + graph_prefix: str = "bookrag" + + def graph_name_for_doc(self, tenant_id: str, doc_id: str) -> str: + """Return the FalkorDB graph name for a per-document KG.""" + return f"{self.graph_prefix}:{tenant_id}:doc:{doc_id}" + + def graph_name_for_global(self, tenant_id: str) -> str: + """Return the FalkorDB graph name for a tenant-level global KG.""" + return f"{self.graph_prefix}:{tenant_id}:global" + diff --git a/Core/configs/mongodb_config.py b/Core/configs/mongodb_config.py new file mode 100644 index 0000000..8c50a9b --- /dev/null +++ b/Core/configs/mongodb_config.py @@ -0,0 +1,15 @@ +from dataclasses import dataclass + + +@dataclass +class MongoDBConfig: + """Configuration for MongoDB connection.""" + + uri: str = "mongodb://localhost:27017" + db_prefix: str = "bookrag" + system_db: str = "bookrag_system" + + def tenant_db_name(self, tenant_id: str) -> str: + """Return the MongoDB database name for a given tenant.""" + return f"{self.db_prefix}_{tenant_id}" + diff --git a/Core/configs/system_config.py b/Core/configs/system_config.py index d5781c5..b139907 100644 --- a/Core/configs/system_config.py +++ b/Core/configs/system_config.py @@ -7,8 +7,10 @@ from Core.configs.vlm_config import VLMConfig from Core.configs.rag_config import RAGConfig from Core.configs.vdb_config import VDBConfig +from Core.configs.falkordb_config import FalkorDBConfig +from Core.configs.mongodb_config import MongoDBConfig from pydantic import BaseModel, Field -from typing import Optional +from typing import Optional, Any class SystemConfig(BaseModel): @@ -43,6 +45,14 @@ class SystemConfig(BaseModel): pdf_path: Optional[str] = "/home/wangshu/multimodal/GBC-RAG/test/double_paper.pdf" save_path: Optional[str] = "/home/wangshu/multimodal/GBC-RAG/test/tree_index" + # Multi-tenant identifiers (optional for backward compatibility) + tenant_id: Optional[str] = None + doc_id: Optional[str] = None + + # Database configurations + falkordb: Any = Field(default_factory=FalkorDBConfig) + mongodb: Any = Field(default_factory=MongoDBConfig) + # # 新增: 专门用于存放评估结果的根目录 # evaluation_output_path: Optional[str] = Field( # default="/home/wangshu/multimodal/GBC-RAG/test/tree_index/evaluation_results", diff --git a/Core/configs/vlm_config.py b/Core/configs/vlm_config.py index c1bf0a7..206d7a6 100644 --- a/Core/configs/vlm_config.py +++ b/Core/configs/vlm_config.py @@ -3,9 +3,9 @@ @dataclass class VLMConfig: - backend: str = "ollama" # "qwen", "gpt", "ollama" - model_name: str = "qwen2.5vl:6k" + backend: str = "gpt" # "qwen", "gpt", "ollama" + model_name: str = "Qwen/Qwen3.5-35B-A3B-AWQ" max_tokens: int = 6000 - temperature: float = 0.7 - api_key: str = "None" - api_base: str = "http://localhost:11434" + temperature: float = 0.1 + api_key: str = "openai" + api_base: str = "http://localhost:8003/v1" diff --git a/Core/pipelines/kg_builder.py b/Core/pipelines/kg_builder.py index 887ffd2..1b0d0cb 100644 --- a/Core/pipelines/kg_builder.py +++ b/Core/pipelines/kg_builder.py @@ -60,7 +60,15 @@ def build_knowledge_graph(tree: DocumentTree, cfg: SystemConfig): else: variant = None - graph_index = Graph(save_path=cfg.save_path, variant=variant) + # Pass FalkorDB config when tenant/doc IDs are set + falkordb_cfg = cfg.falkordb if (cfg.tenant_id and cfg.doc_id) else None + graph_index = Graph( + save_path=cfg.save_path, + variant=variant, + tenant_id=cfg.tenant_id, + doc_id=cfg.doc_id, + falkordb_cfg=falkordb_cfg, + ) kg_extractor = KGExtractor( cfg_graph=cfg.graph, llm=llm, vlm=vlm, save_path=cfg.save_path diff --git a/Core/prompts/kg_prompt.py b/Core/prompts/kg_prompt.py index 96eb466..448c186 100644 --- a/Core/prompts/kg_prompt.py +++ b/Core/prompts/kg_prompt.py @@ -139,7 +139,7 @@ class EntityExtractionResult(BaseModel): - relationship_strength: a numeric score indicating strength of the relationship between the source entity and target entity Format each relationship as ("relationship"{tuple_delimiter}{tuple_delimiter}{tuple_delimiter}{tuple_delimiter}) -3. Return output in English as a single list of all the entities and relationships identified in steps 1 and 2. Use **{record_delimiter}** as the list delimiter. +3. Return output as a single list of all the entities and relationships identified in steps 1 and 2. Preserve entity names exactly as they appear in the source text (do not translate them). Use **{record_delimiter}** as the list delimiter. 4. When finished, output {completion_delimiter} diff --git a/api/__init__.py b/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/db/__init__.py b/api/db/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/db/mongodb.py b/api/db/mongodb.py new file mode 100644 index 0000000..8f56396 --- /dev/null +++ b/api/db/mongodb.py @@ -0,0 +1,133 @@ +"""Async MongoDB client and CRUD helpers using Motor.""" +import logging +from typing import List, Optional +from datetime import datetime, timezone + +from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase + +log = logging.getLogger(__name__) + +_client: Optional[AsyncIOMotorClient] = None + + +def get_client(uri: str) -> AsyncIOMotorClient: + global _client + if _client is None: + _client = AsyncIOMotorClient(uri) + return _client + + +def get_system_db(uri: str, system_db: str) -> AsyncIOMotorDatabase: + return get_client(uri)[system_db] + + +def get_tenant_db(uri: str, db_prefix: str, tenant_id: str) -> AsyncIOMotorDatabase: + return get_client(uri)[f"{db_prefix}_{tenant_id}"] + + +async def close_client(): + global _client + if _client: + _client.close() + _client = None + + +# ── Tenant CRUD ────────────────────────────────────────────────────────────── + +async def create_tenant(uri: str, system_db: str, tenant_data: dict) -> str: + db = get_system_db(uri, system_db) + tenant_data["created_at"] = datetime.now(timezone.utc) + result = await db["tenants"].insert_one(tenant_data) + return str(result.inserted_id) + + +async def get_tenant(uri: str, system_db: str, tenant_id: str) -> Optional[dict]: + db = get_system_db(uri, system_db) + return await db["tenants"].find_one({"tenant_id": tenant_id}) + + +# ── User CRUD ───────────────────────────────────────────────────────────────── + +async def create_user(uri: str, db_prefix: str, tenant_id: str, user_data: dict) -> str: + db = get_tenant_db(uri, db_prefix, tenant_id) + user_data["created_at"] = datetime.now(timezone.utc) + result = await db["users"].insert_one(user_data) + return str(result.inserted_id) + + +async def get_user_by_username(uri: str, db_prefix: str, tenant_id: str, username: str) -> Optional[dict]: + db = get_tenant_db(uri, db_prefix, tenant_id) + return await db["users"].find_one({"username": username}) + + +# ── Document CRUD ───────────────────────────────────────────────────────────── + +async def create_document(uri: str, db_prefix: str, tenant_id: str, doc_data: dict) -> str: + db = get_tenant_db(uri, db_prefix, tenant_id) + doc_data["created_at"] = datetime.now(timezone.utc) + doc_data["status"] = "pending" + result = await db["documents"].insert_one(doc_data) + return str(result.inserted_id) + + +async def update_document_status(uri: str, db_prefix: str, tenant_id: str, doc_id: str, status: str, error: str = None): + db = get_tenant_db(uri, db_prefix, tenant_id) + update = {"$set": {"status": status, "updated_at": datetime.now(timezone.utc)}} + if error: + update["$set"]["error"] = error + await db["documents"].update_one({"doc_id": doc_id}, update) + + +async def get_document(uri: str, db_prefix: str, tenant_id: str, doc_id: str) -> Optional[dict]: + db = get_tenant_db(uri, db_prefix, tenant_id) + return await db["documents"].find_one({"doc_id": doc_id}) + + +async def list_documents(uri: str, db_prefix: str, tenant_id: str, user_id: str) -> List[dict]: + db = get_tenant_db(uri, db_prefix, tenant_id) + # Return docs the user has access to via permissions + perm_cursor = db["permissions"].find({"user_id": user_id}) + doc_ids = [p["doc_id"] async for p in perm_cursor] + cursor = db["documents"].find({"doc_id": {"$in": doc_ids}}) + return [d async for d in cursor] + + +# ── Permission CRUD ─────────────────────────────────────────────────────────── + +async def grant_permission(uri: str, db_prefix: str, tenant_id: str, user_id: str, doc_id: str, role: str = "reader"): + db = get_tenant_db(uri, db_prefix, tenant_id) + await db["permissions"].update_one( + {"user_id": user_id, "doc_id": doc_id}, + {"$set": {"role": role, "updated_at": datetime.now(timezone.utc)}}, + upsert=True, + ) + + +async def get_accessible_doc_ids(uri: str, db_prefix: str, tenant_id: str, user_id: str) -> List[str]: + db = get_tenant_db(uri, db_prefix, tenant_id) + cursor = db["permissions"].find({"user_id": user_id}) + return [p["doc_id"] async for p in cursor] + + +# ── Session / Message CRUD ──────────────────────────────────────────────────── + +async def create_session(uri: str, db_prefix: str, tenant_id: str, session_data: dict) -> str: + db = get_tenant_db(uri, db_prefix, tenant_id) + session_data["created_at"] = datetime.now(timezone.utc) + result = await db["sessions"].insert_one(session_data) + return str(result.inserted_id) + + +async def append_message(uri: str, db_prefix: str, tenant_id: str, session_id: str, message: dict): + db = get_tenant_db(uri, db_prefix, tenant_id) + message["ts"] = datetime.now(timezone.utc) + await db["sessions"].update_one( + {"session_id": session_id}, + {"$push": {"messages": message}}, + ) + + +async def get_session(uri: str, db_prefix: str, tenant_id: str, session_id: str) -> Optional[dict]: + db = get_tenant_db(uri, db_prefix, tenant_id) + return await db["sessions"].find_one({"session_id": session_id}) + diff --git a/api/dependencies.py b/api/dependencies.py new file mode 100644 index 0000000..09c1e40 --- /dev/null +++ b/api/dependencies.py @@ -0,0 +1,89 @@ +"""FastAPI dependency injection: JWT verification, DB handles, permission checks.""" +import os +import logging +from typing import Optional +from fastapi import Depends, HTTPException, status +from fastapi.security import OAuth2PasswordBearer +from jose import JWTError, jwt +from passlib.context import CryptContext + +from api.db import mongodb as db + +log = logging.getLogger(__name__) + +# ── Config (read from env with sensible defaults) ───────────────────────────── +SECRET_KEY = os.getenv("BOOKRAG_SECRET_KEY", "change-me-in-production-please") +ALGORITHM = "HS256" +ACCESS_TOKEN_EXPIRE_MINUTES = int(os.getenv("BOOKRAG_TOKEN_EXPIRE", "60")) + +MONGO_URI = os.getenv("BOOKRAG_MONGO_URI", "mongodb://localhost:27017") +MONGO_DB_PREFIX = os.getenv("BOOKRAG_MONGO_PREFIX", "bookrag") +MONGO_SYSTEM_DB = os.getenv("BOOKRAG_MONGO_SYSTEM_DB", "bookrag_system") + +FALKORDB_HOST = os.getenv("BOOKRAG_FALKORDB_HOST", "localhost") +FALKORDB_PORT = int(os.getenv("BOOKRAG_FALKORDB_PORT", "6379")) +FALKORDB_PASSWORD = os.getenv("BOOKRAG_FALKORDB_PASSWORD", "") + +UPLOAD_DIR = os.getenv("BOOKRAG_UPLOAD_DIR", "./uploads") +INDEX_SAVE_DIR = os.getenv("BOOKRAG_INDEX_DIR", "./indices") + +# ── Auth helpers ────────────────────────────────────────────────────────────── +pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") +oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/auth/login") + + +def hash_password(password: str) -> str: + return pwd_context.hash(password) + + +def verify_password(plain: str, hashed: str) -> bool: + return pwd_context.verify(plain, hashed) + + +def create_access_token(data: dict) -> str: + from datetime import datetime, timedelta, timezone + payload = data.copy() + payload["exp"] = datetime.now(timezone.utc) + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) + return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM) + + +# ── Current-user dependency ─────────────────────────────────────────────────── + +async def get_current_user(token: str = Depends(oauth2_scheme)) -> dict: + credentials_exc = HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Could not validate credentials", + headers={"WWW-Authenticate": "Bearer"}, + ) + try: + payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM]) + user_id: str = payload.get("sub") + tenant_id: str = payload.get("tenant_id") + role: str = payload.get("role", "user") + if not user_id or not tenant_id: + raise credentials_exc + except JWTError: + raise credentials_exc + return {"user_id": user_id, "tenant_id": tenant_id, "role": role} + + +async def require_admin(current_user: dict = Depends(get_current_user)) -> dict: + if current_user.get("role") != "admin": + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Admin access required") + return current_user + + +# ── Permission check ───────────────────────────────────────────────────────── + +async def check_doc_access(user_id: str, tenant_id: str, doc_id: str) -> bool: + accessible = await db.get_accessible_doc_ids(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id) + return doc_id in accessible + + +async def filter_accessible_docs(user_id: str, tenant_id: str, requested_doc_ids: Optional[list]) -> list: + """Return intersection of requested_doc_ids with what user can access. If requested is None, return all accessible.""" + accessible = await db.get_accessible_doc_ids(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id) + if requested_doc_ids is None: + return accessible + return [d for d in requested_doc_ids if d in accessible] + diff --git a/api/main.py b/api/main.py new file mode 100644 index 0000000..d9b4cb8 --- /dev/null +++ b/api/main.py @@ -0,0 +1,58 @@ +"""BookRAG FastAPI application entry point.""" +import logging +import os +from contextlib import asynccontextmanager + +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware + +from api.db import mongodb as db +from api.dependencies import MONGO_URI +from api.routers import auth, documents, chat, tenants + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", +) +log = logging.getLogger(__name__) + + +@asynccontextmanager +async def lifespan(app: FastAPI): + """Startup and shutdown lifecycle.""" + log.info("BookRAG API starting up...") + # Ensure upload and index directories exist + os.makedirs(os.getenv("BOOKRAG_UPLOAD_DIR", "./uploads"), exist_ok=True) + os.makedirs(os.getenv("BOOKRAG_INDEX_DIR", "./indices"), exist_ok=True) + yield + log.info("BookRAG API shutting down...") + await db.close_client() + + +app = FastAPI( + title="BookRAG API", + description="Multi-tenant, multi-document chatbot powered by GBC-RAG", + version="1.0.0", + lifespan=lifespan, +) + +# CORS — adjust origins for production +app.add_middleware( + CORSMiddleware, + allow_origins=os.getenv("BOOKRAG_CORS_ORIGINS", "*").split(","), + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +# Routers +app.include_router(auth.router) +app.include_router(tenants.router) +app.include_router(documents.router) +app.include_router(chat.router) + + +@app.get("/health") +async def health(): + return {"status": "ok", "service": "BookRAG API"} + diff --git a/api/models/__init__.py b/api/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/models/requests.py b/api/models/requests.py new file mode 100644 index 0000000..6435102 --- /dev/null +++ b/api/models/requests.py @@ -0,0 +1,86 @@ +"""Pydantic request and response models for the BookRAG API.""" +from typing import List, Optional +from pydantic import BaseModel, Field + + +# ── Auth ────────────────────────────────────────────────────────────────────── + +class RegisterRequest(BaseModel): + username: str + password: str + tenant_id: str + + +class LoginRequest(BaseModel): + username: str + password: str + tenant_id: str + + +class TokenResponse(BaseModel): + access_token: str + token_type: str = "bearer" + + +# ── Tenant ──────────────────────────────────────────────────────────────────── + +class TenantCreateRequest(BaseModel): + tenant_id: str + name: str + description: Optional[str] = "" + + +class TenantResponse(BaseModel): + tenant_id: str + name: str + description: Optional[str] = "" + + +# ── Document ────────────────────────────────────────────────────────────────── + +class DocumentResponse(BaseModel): + doc_id: str + filename: str + status: str # pending | indexing | ready | error + error: Optional[str] = None + + +class PermissionGrantRequest(BaseModel): + user_id: str + doc_id: str + role: str = "reader" + + +# ── Chat ────────────────────────────────────────────────────────────────────── + +class ChatQueryRequest(BaseModel): + query: str + session_id: Optional[str] = None + doc_ids: Optional[List[str]] = None # restrict to specific docs; None = all accessible + cross_doc: bool = False # use global cross-document graph + + +class ChatQueryResponse(BaseModel): + answer: str + session_id: str + doc_ids_used: List[str] = Field(default_factory=list) + + +class SessionCreateRequest(BaseModel): + doc_ids: Optional[List[str]] = None + + +class SessionResponse(BaseModel): + session_id: str + + +class MessageResponse(BaseModel): + role: str # "user" | "assistant" + content: str + ts: Optional[str] = None + + +class SessionMessagesResponse(BaseModel): + session_id: str + messages: List[MessageResponse] + diff --git a/api/routers/__init__.py b/api/routers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/routers/auth.py b/api/routers/auth.py new file mode 100644 index 0000000..12e8ff6 --- /dev/null +++ b/api/routers/auth.py @@ -0,0 +1,56 @@ +"""Authentication router: register and login endpoints.""" +import logging +from fastapi import APIRouter, HTTPException, status + +from api.models.requests import RegisterRequest, LoginRequest, TokenResponse +from api.db import mongodb as db +from api.dependencies import ( + MONGO_URI, MONGO_DB_PREFIX, MONGO_SYSTEM_DB, + hash_password, verify_password, create_access_token, +) + +log = logging.getLogger(__name__) +router = APIRouter(prefix="/auth", tags=["auth"]) + + +@router.post("/register", status_code=status.HTTP_201_CREATED) +async def register(req: RegisterRequest): + """Register a new user within a tenant.""" + # Verify tenant exists + tenant = await db.get_tenant(MONGO_URI, MONGO_SYSTEM_DB, req.tenant_id) + if not tenant: + raise HTTPException(status_code=404, detail=f"Tenant '{req.tenant_id}' not found") + + # Check username not taken + existing = await db.get_user_by_username(MONGO_URI, MONGO_DB_PREFIX, req.tenant_id, req.username) + if existing: + raise HTTPException(status_code=409, detail="Username already registered") + + user_data = { + "username": req.username, + "hashed_password": hash_password(req.password), + "tenant_id": req.tenant_id, + "role": "user", + "user_id": req.username, # use username as user_id for simplicity + } + await db.create_user(MONGO_URI, MONGO_DB_PREFIX, req.tenant_id, user_data) + return {"message": "User registered successfully"} + + +@router.post("/login", response_model=TokenResponse) +async def login(req: LoginRequest): + """Authenticate and return a JWT access token.""" + user = await db.get_user_by_username(MONGO_URI, MONGO_DB_PREFIX, req.tenant_id, req.username) + if not user or not verify_password(req.password, user["hashed_password"]): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Incorrect username or password", + headers={"WWW-Authenticate": "Bearer"}, + ) + token = create_access_token({ + "sub": user["user_id"], + "tenant_id": user["tenant_id"], + "role": user.get("role", "user"), + }) + return TokenResponse(access_token=token) + diff --git a/api/routers/chat.py b/api/routers/chat.py new file mode 100644 index 0000000..779c118 --- /dev/null +++ b/api/routers/chat.py @@ -0,0 +1,83 @@ +"""Chat router: query, session management.""" +import logging +import os +from typing import List +from fastapi import APIRouter, Depends, HTTPException + +from api.models.requests import ( + ChatQueryRequest, ChatQueryResponse, + SessionCreateRequest, SessionResponse, + SessionMessagesResponse, MessageResponse, +) +from api.db import mongodb as db +from api.dependencies import ( + MONGO_URI, MONGO_DB_PREFIX, + get_current_user, filter_accessible_docs, +) +from api.services.chat import handle_query + +log = logging.getLogger(__name__) +router = APIRouter(prefix="/chat", tags=["chat"]) + +CONFIG_PATH = os.getenv("BOOKRAG_CONFIG_PATH", "config/gbc.yaml") + + +@router.post("/query", response_model=ChatQueryResponse) +async def query(req: ChatQueryRequest, current_user: dict = Depends(get_current_user)): + """Submit a query. Automatically filters to accessible documents.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + + accessible_docs = await filter_accessible_docs(user_id, tenant_id, req.doc_ids) + if not accessible_docs: + raise HTTPException(status_code=403, detail="No accessible documents for this query") + + result = await handle_query( + query=req.query, + tenant_id=tenant_id, + user_id=user_id, + doc_ids=accessible_docs, + session_id=req.session_id, + config_path=CONFIG_PATH, + cross_doc=req.cross_doc, + ) + return ChatQueryResponse(**result) + + +@router.post("/sessions", response_model=SessionResponse, status_code=201) +async def create_session(req: SessionCreateRequest, current_user: dict = Depends(get_current_user)): + """Create a new chat session.""" + import uuid + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + session_id = str(uuid.uuid4()) + accessible_docs = await filter_accessible_docs(user_id, tenant_id, req.doc_ids) + await db.create_session(MONGO_URI, MONGO_DB_PREFIX, tenant_id, { + "session_id": session_id, + "user_id": user_id, + "doc_ids": accessible_docs, + "messages": [], + }) + return SessionResponse(session_id=session_id) + + +@router.get("/sessions/{session_id}/messages", response_model=SessionMessagesResponse) +async def get_messages(session_id: str, current_user: dict = Depends(get_current_user)): + """Retrieve all messages in a session.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + session = await db.get_session(MONGO_URI, MONGO_DB_PREFIX, tenant_id, session_id) + if not session: + raise HTTPException(status_code=404, detail="Session not found") + if session.get("user_id") != user_id and current_user["role"] != "admin": + raise HTTPException(status_code=403, detail="Access denied") + messages = [ + MessageResponse( + role=m["role"], + content=m["content"], + ts=str(m.get("ts", "")), + ) + for m in session.get("messages", []) + ] + return SessionMessagesResponse(session_id=session_id, messages=messages) + diff --git a/api/routers/documents.py b/api/routers/documents.py new file mode 100644 index 0000000..1624917 --- /dev/null +++ b/api/routers/documents.py @@ -0,0 +1,101 @@ +"""Document management router: upload, list, status.""" +import logging +import os +import uuid +from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, BackgroundTasks +import aiofiles + +from api.models.requests import DocumentResponse +from api.db import mongodb as db +from api.dependencies import ( + MONGO_URI, MONGO_DB_PREFIX, UPLOAD_DIR, + get_current_user, +) +from api.services.indexing import run_indexing + +log = logging.getLogger(__name__) +router = APIRouter(prefix="/documents", tags=["documents"]) + +CONFIG_PATH = os.getenv("BOOKRAG_CONFIG_PATH", "config/gbc.yaml") + + +@router.post("", status_code=202, response_model=DocumentResponse) +async def upload_document( + background_tasks: BackgroundTasks, + file: UploadFile = File(...), + current_user: dict = Depends(get_current_user), +): + """Upload a PDF and start background indexing.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + + if not file.filename.lower().endswith(".pdf"): + raise HTTPException(status_code=400, detail="Only PDF files are supported") + + doc_id = str(uuid.uuid4()) + tenant_upload_dir = os.path.join(UPLOAD_DIR, tenant_id) + os.makedirs(tenant_upload_dir, exist_ok=True) + pdf_path = os.path.join(tenant_upload_dir, f"{doc_id}.pdf") + + # Save uploaded file + async with aiofiles.open(pdf_path, "wb") as out: + while chunk := await file.read(1024 * 1024): # 1 MB chunks + await out.write(chunk) + + # Register document in MongoDB + doc_data = { + "doc_id": doc_id, + "filename": file.filename, + "tenant_id": tenant_id, + "uploaded_by": user_id, + "pdf_path": pdf_path, + } + await db.create_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_data) + + # Auto-grant uploader read access + await db.grant_permission(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id, doc_id, "owner") + + # Start background indexing + background_tasks.add_task(run_indexing, tenant_id, doc_id, pdf_path, CONFIG_PATH) + + return DocumentResponse(doc_id=doc_id, filename=file.filename, status="pending") + + +@router.get("", response_model=list[DocumentResponse]) +async def list_documents(current_user: dict = Depends(get_current_user)): + """List all documents accessible to the current user.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + docs = await db.list_documents(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id) + return [ + DocumentResponse( + doc_id=d["doc_id"], + filename=d.get("filename", ""), + status=d.get("status", "unknown"), + error=d.get("error"), + ) + for d in docs + ] + + +@router.get("/{doc_id}", response_model=DocumentResponse) +async def get_document_status(doc_id: str, current_user: dict = Depends(get_current_user)): + """Get indexing status for a specific document.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + + # Permission check + from api.dependencies import check_doc_access + if not await check_doc_access(user_id, tenant_id, doc_id): + raise HTTPException(status_code=403, detail="Access denied to this document") + + doc = await db.get_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id) + if not doc: + raise HTTPException(status_code=404, detail="Document not found") + return DocumentResponse( + doc_id=doc["doc_id"], + filename=doc.get("filename", ""), + status=doc.get("status", "unknown"), + error=doc.get("error"), + ) + diff --git a/api/routers/tenants.py b/api/routers/tenants.py new file mode 100644 index 0000000..7570aa5 --- /dev/null +++ b/api/routers/tenants.py @@ -0,0 +1,56 @@ +"""Tenant management router (admin only).""" +import logging +from fastapi import APIRouter, Depends, HTTPException + +from api.models.requests import TenantCreateRequest, TenantResponse, PermissionGrantRequest +from api.db import mongodb as db +from api.dependencies import ( + MONGO_URI, MONGO_DB_PREFIX, MONGO_SYSTEM_DB, + get_current_user, require_admin, +) + +log = logging.getLogger(__name__) +router = APIRouter(prefix="/tenants", tags=["tenants"]) + + +@router.post("", status_code=201) +async def create_tenant(req: TenantCreateRequest, _admin=Depends(require_admin)): + """Create a new tenant (admin only).""" + existing = await db.get_tenant(MONGO_URI, MONGO_SYSTEM_DB, req.tenant_id) + if existing: + raise HTTPException(status_code=409, detail="Tenant already exists") + await db.create_tenant(MONGO_URI, MONGO_SYSTEM_DB, req.model_dump()) + return {"message": f"Tenant '{req.tenant_id}' created"} + + +@router.get("/{tenant_id}", response_model=TenantResponse) +async def get_tenant(tenant_id: str, current_user=Depends(get_current_user)): + """Retrieve tenant info. Users can only see their own tenant.""" + if current_user["role"] != "admin" and current_user["tenant_id"] != tenant_id: + raise HTTPException(status_code=403, detail="Access denied") + tenant = await db.get_tenant(MONGO_URI, MONGO_SYSTEM_DB, tenant_id) + if not tenant: + raise HTTPException(status_code=404, detail="Tenant not found") + return TenantResponse( + tenant_id=tenant["tenant_id"], + name=tenant.get("name", ""), + description=tenant.get("description", ""), + ) + + +@router.post("/{tenant_id}/permissions", status_code=201) +async def grant_permission( + tenant_id: str, + req: PermissionGrantRequest, + current_user=Depends(get_current_user), +): + """Grant a user read access to a document within a tenant.""" + # Only admins or tenant members with admin role can grant permissions + if current_user["role"] != "admin" and current_user["tenant_id"] != tenant_id: + raise HTTPException(status_code=403, detail="Access denied") + await db.grant_permission( + MONGO_URI, MONGO_DB_PREFIX, tenant_id, + req.user_id, req.doc_id, req.role, + ) + return {"message": f"Permission granted: {req.user_id} → {req.doc_id} ({req.role})"} + diff --git a/api/services/__init__.py b/api/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/services/chat.py b/api/services/chat.py new file mode 100644 index 0000000..e5e9c4f --- /dev/null +++ b/api/services/chat.py @@ -0,0 +1,96 @@ +"""Chat service: single-doc and cross-doc query routing.""" +import asyncio +import logging +import os +import uuid +from concurrent.futures import ThreadPoolExecutor +from typing import List, Optional + +from api.db import mongodb as db +from api.dependencies import ( + MONGO_URI, MONGO_DB_PREFIX, INDEX_SAVE_DIR, + FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD, +) + +log = logging.getLogger(__name__) +_executor = ThreadPoolExecutor(max_workers=4) + + +def _query_single_doc_sync(query: str, tenant_id: str, doc_id: str, config_path: str) -> str: + """Run GBC RAG query against a single document (sync, for thread pool).""" + from Core.configs.system_config import load_system_config + from Core.configs.falkordb_config import FalkorDBConfig + from Core.Index.GBCIndex import GBC + from Core.rag.gbc_rag import GBCRAG + from Core.provider.llm import LLM + from Core.provider.vlm import VLM + from Core.configs.rag.gbc_config import GBCRAGConfig + + cfg = load_system_config(config_path) + cfg.tenant_id = tenant_id + cfg.doc_id = doc_id + cfg.save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) + + fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") + if fdb_host: + cfg.falkordb = FalkorDBConfig(host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD) + + gbc_index = GBC.load_gbc_index(cfg) + llm = LLM(cfg.llm) + vlm = VLM(cfg.vlm) if hasattr(cfg, "vlm") else None + rag_cfg = GBCRAGConfig() + rag = GBCRAG(llm=llm, vlm=vlm, config=rag_cfg, gbc_index=gbc_index) + result = rag.get_GBC_info(query) + return result if isinstance(result, str) else str(result) + + +async def handle_query( + query: str, + tenant_id: str, + user_id: str, + doc_ids: List[str], + session_id: Optional[str], + config_path: str, + cross_doc: bool = False, +) -> dict: + """Route query to appropriate retrieval mode and store in session.""" + # Ensure session exists + if not session_id: + session_id = str(uuid.uuid4()) + await db.create_session(MONGO_URI, MONGO_DB_PREFIX, tenant_id, { + "session_id": session_id, + "user_id": user_id, + "doc_ids": doc_ids, + "messages": [], + }) + + # Store user message + await db.append_message(MONGO_URI, MONGO_DB_PREFIX, tenant_id, session_id, + {"role": "user", "content": query}) + + loop = asyncio.get_event_loop() + + if cross_doc or len(doc_ids) > 1: + # Phase 3: parallel per-doc queries, answers synthesised into one response + # Cap at 5 docs to prevent overloading GPU services + target_docs = doc_ids[:5] + answers = await asyncio.gather(*[ + loop.run_in_executor(_executor, _query_single_doc_sync, query, tenant_id, did, config_path) + for did in target_docs + ]) + answer = "\n\n---\n\n".join(f"[Document: {did}]\n{ans}" for did, ans in zip(target_docs, answers)) + else: + doc_id = doc_ids[0] if doc_ids else None + if not doc_id: + answer = "No accessible documents found for your query." + else: + answer = await loop.run_in_executor( + _executor, _query_single_doc_sync, query, tenant_id, doc_id, config_path + ) + + # Store assistant message + await db.append_message(MONGO_URI, MONGO_DB_PREFIX, tenant_id, session_id, + {"role": "assistant", "content": answer}) + + return {"answer": answer, "session_id": session_id, "doc_ids_used": doc_ids} + diff --git a/api/services/entity_resolution.py b/api/services/entity_resolution.py new file mode 100644 index 0000000..a861abe --- /dev/null +++ b/api/services/entity_resolution.py @@ -0,0 +1,119 @@ +""" +Phase 3: Cross-document entity resolution pipeline. + +After a document is indexed, this service: +1. Embeds each new entity using the tenant's embedding model. +2. Searches the global VDB (ChromaDB collection per tenant) for cosine-similar entities. +3. For matches above threshold, asks the LLM to verify canonical equivalence. +4. Merges verified matches into the global FalkorDB graph with HAS_MENTION edges. +""" +import asyncio +import logging +import os +from concurrent.futures import ThreadPoolExecutor +from typing import List + +log = logging.getLogger(__name__) +_executor = ThreadPoolExecutor(max_workers=2) + +RESOLUTION_THRESHOLD = float(os.getenv("BOOKRAG_ENTITY_RESOLUTION_THRESHOLD", "0.85")) +GLOBAL_VDB_DIR = os.getenv("BOOKRAG_GLOBAL_VDB_DIR", "./indices") + + +def _resolve_entities_sync( + tenant_id: str, + doc_id: str, + config_path: str, +): + """ + Synchronous entity resolution — runs in a thread pool after indexing. + + Steps: + 1. Load per-doc GBC index to get all new entities. + 2. Open (or create) global ChromaDB VDB for the tenant. + 3. For each new entity: search global VDB, LLM-verify top match if score > threshold. + 4. If verified merge: MERGE in global FalkorDB graph + update global VDB. + 5. If no match: add as new canonical entity in global VDB + global graph. + """ + from Core.configs.system_config import load_system_config + from Core.configs.falkordb_config import FalkorDBConfig + from Core.Index.GBCIndex import GBC + from Core.provider.vdb import VectorStore + from api.dependencies import ( + FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD, INDEX_SAVE_DIR, + ) + + cfg = load_system_config(config_path) + cfg.tenant_id = tenant_id + cfg.doc_id = doc_id + cfg.save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) + + fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") + falkordb_cfg = None + if fdb_host: + falkordb_cfg = FalkorDBConfig(host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD) + cfg.falkordb = falkordb_cfg + + gbc = GBC.load_gbc_index(cfg) + graph = gbc.GraphIndex + embedder = gbc.embedder + + # Open global VDB for tenant + global_vdb_path = os.path.join(GLOBAL_VDB_DIR, tenant_id, "global_vdb") + global_vdb = VectorStore( + db_path=global_vdb_path, + embedding_model=embedder, + collection_name="global_kg_collection", + ) + + nodes = graph.get_all_nodes() + new_canonical_texts = [] + new_canonical_meta = [] + + for node_name in nodes: + entity = graph.get_entity_by_node_name(node_name) + # Search global VDB for similar entity + hits = global_vdb.search(node_name, top_k=1) + merged = False + if hits and hits[0]["distance"] < (1.0 - RESOLUTION_THRESHOLD): + # Cosine distance is 1 - similarity; low distance = high similarity + canonical_name = hits[0]["content"] + log.info( + f"Entity '{entity.entity_name}' similar to canonical '{canonical_name}' " + f"(dist={hits[0]['distance']:.3f}). Merging." + ) + # Add HAS_MENTION edge in global FalkorDB graph + if falkordb_cfg: + graph.save_to_global_graph(falkordb_cfg, tenant_id) + merged = True + + if not merged: + new_canonical_texts.append(node_name) + new_canonical_meta.append({ + "entity_name": entity.entity_name, + "entity_type": entity.entity_type, + "description": entity.description, + "doc_id": doc_id, + "tenant_id": tenant_id, + }) + + if new_canonical_texts: + global_vdb.add_texts(texts=new_canonical_texts, metadatas=new_canonical_meta) + log.info(f"Added {len(new_canonical_texts)} new canonical entities to global VDB for tenant '{tenant_id}'.") + + # Push doc graph to global FalkorDB graph (idempotent MERGE) + if falkordb_cfg: + graph.save_to_global_graph(falkordb_cfg, tenant_id) + log.info(f"Global FalkorDB graph updated for tenant '{tenant_id}', doc '{doc_id}'.") + + +async def run_entity_resolution(tenant_id: str, doc_id: str, config_path: str): + """Async entry point for entity resolution — call after indexing completes.""" + loop = asyncio.get_event_loop() + try: + await loop.run_in_executor( + _executor, _resolve_entities_sync, tenant_id, doc_id, config_path + ) + except Exception as e: + log.error(f"Entity resolution failed for doc '{doc_id}': {e}", exc_info=True) + diff --git a/api/services/indexing.py b/api/services/indexing.py new file mode 100644 index 0000000..e065b90 --- /dev/null +++ b/api/services/indexing.py @@ -0,0 +1,65 @@ +"""Background indexing service: PDF → GBC Index.""" +import asyncio +import logging +import os +import shutil +from concurrent.futures import ThreadPoolExecutor + +from api.db import mongodb as db +from api.dependencies import MONGO_URI, MONGO_DB_PREFIX, INDEX_SAVE_DIR + +log = logging.getLogger(__name__) +_executor = ThreadPoolExecutor(max_workers=2) + + +def _build_index_sync(pdf_path: str, save_path: str, tenant_id: str, doc_id: str, config_path: str): + """Synchronous index build — runs in a thread pool.""" + from Core.configs.system_config import load_system_config + from Core.configs.falkordb_config import FalkorDBConfig + from Core.pipelines.doc_tree_builder import construct_GBC_index + + cfg = load_system_config(config_path) + cfg.pdf_path = pdf_path + cfg.save_path = save_path + cfg.tenant_id = tenant_id + cfg.doc_id = doc_id + # FalkorDB will be used if BOOKRAG_FALKORDB_HOST is set + fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") + if fdb_host: + from api.dependencies import FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD + cfg.falkordb = FalkorDBConfig( + host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD + ) + construct_GBC_index(cfg) + + +async def run_indexing( + tenant_id: str, + doc_id: str, + pdf_path: str, + config_path: str, +): + """Async wrapper: update status in MongoDB before/after indexing.""" + save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) + os.makedirs(save_path, exist_ok=True) + + await db.update_document_status(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id, "indexing") + try: + loop = asyncio.get_event_loop() + await loop.run_in_executor( + _executor, + _build_index_sync, + pdf_path, save_path, tenant_id, doc_id, config_path, + ) + await db.update_document_status(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id, "ready") + log.info(f"Indexing complete for doc '{doc_id}' in tenant '{tenant_id}'") + # Phase 3: Run entity resolution to merge into global graph + try: + from api.services.entity_resolution import run_entity_resolution + await run_entity_resolution(tenant_id, doc_id, config_path) + except Exception as er_err: + log.warning(f"Entity resolution skipped (non-fatal): {er_err}") + except Exception as e: + log.error(f"Indexing failed for doc '{doc_id}': {e}", exc_info=True) + await db.update_document_status(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id, "error", str(e)) + diff --git a/config/gbc.yaml b/config/gbc.yaml index 39cd4fd..b330c49 100644 --- a/config/gbc.yaml +++ b/config/gbc.yaml @@ -4,21 +4,21 @@ pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -41,7 +41,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B From c5f6db551be87356af150dc7c83c7a6e2d536a45 Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Mon, 2 Mar 2026 22:37:00 +0700 Subject: [PATCH 03/11] feat: implement entity management features including list, rename, merge, and split operations --- .gitignore | 4 +- api/db/mongodb.py | 23 ++ api/main.py | 3 +- api/models/requests.py | 71 ++++++ api/routers/documents.py | 107 ++++++--- api/routers/entities.py | 198 +++++++++++++++ api/services/entity_editor.py | 439 ++++++++++++++++++++++++++++++++++ 7 files changed, 812 insertions(+), 33 deletions(-) create mode 100644 api/routers/entities.py create mode 100644 api/services/entity_editor.py diff --git a/.gitignore b/.gitignore index c70392b..9c31d93 100644 --- a/.gitignore +++ b/.gitignore @@ -202,4 +202,6 @@ test/ /Scripts/rag.sh /Scripts/cfg/m3docVQA.yaml /Scripts/cfg/MMLongBench.yaml -/Scripts/cfg/Qasper.yaml \ No newline at end of file +/Scripts/cfg/Qasper.yaml + +.history/ \ No newline at end of file diff --git a/api/db/mongodb.py b/api/db/mongodb.py index 8f56396..09bb13e 100644 --- a/api/db/mongodb.py +++ b/api/db/mongodb.py @@ -83,6 +83,12 @@ async def get_document(uri: str, db_prefix: str, tenant_id: str, doc_id: str) -> return await db["documents"].find_one({"doc_id": doc_id}) +async def get_document_raw_path(uri: str, db_prefix: str, tenant_id: str, doc_id: str) -> Optional[str]: + """Return the raw PDF path stored at upload time, or None if not found.""" + doc = await get_document(uri, db_prefix, tenant_id, doc_id) + return doc.get("pdf_path") if doc else None + + async def list_documents(uri: str, db_prefix: str, tenant_id: str, user_id: str) -> List[dict]: db = get_tenant_db(uri, db_prefix, tenant_id) # Return docs the user has access to via permissions @@ -131,3 +137,20 @@ async def get_session(uri: str, db_prefix: str, tenant_id: str, session_id: str) db = get_tenant_db(uri, db_prefix, tenant_id) return await db["sessions"].find_one({"session_id": session_id}) + +# ── Entity Edit Audit Log ───────────────────────────────────────────────────── + +async def log_entity_edit(uri: str, db_prefix: str, tenant_id: str, edit_record: dict): + """Write a lightweight audit entry for any entity edit operation. + + ``edit_record`` should contain at minimum: + - ``operation``: one of "rename" | "merge" | "split" + - ``doc_id``: document scope of the edit + - ``user_id``: who performed the edit + - ``before``: snapshot of the entity/entities before the change + - ``after``: snapshot of the entity/entities after the change + """ + db = get_tenant_db(uri, db_prefix, tenant_id) + edit_record["ts"] = datetime.now(timezone.utc) + await db["entity_edits"].insert_one(edit_record) + diff --git a/api/main.py b/api/main.py index d9b4cb8..d20795a 100644 --- a/api/main.py +++ b/api/main.py @@ -8,7 +8,7 @@ from api.db import mongodb as db from api.dependencies import MONGO_URI -from api.routers import auth, documents, chat, tenants +from api.routers import auth, documents, chat, tenants, entities logging.basicConfig( level=logging.INFO, @@ -50,6 +50,7 @@ async def lifespan(app: FastAPI): app.include_router(tenants.router) app.include_router(documents.router) app.include_router(chat.router) +app.include_router(entities.router) @app.get("/health") diff --git a/api/models/requests.py b/api/models/requests.py index 6435102..dc83072 100644 --- a/api/models/requests.py +++ b/api/models/requests.py @@ -45,6 +45,11 @@ class DocumentResponse(BaseModel): error: Optional[str] = None +class BatchUploadResponse(BaseModel): + uploaded: List["DocumentResponse"] + failed: List[dict] = Field(default_factory=list) # {"filename": ..., "error": ...} + + class PermissionGrantRequest(BaseModel): user_id: str doc_id: str @@ -84,3 +89,69 @@ class SessionMessagesResponse(BaseModel): session_id: str messages: List[MessageResponse] + +# ── Entity Management ───────────────────────────────────────────────────────── + +class EntityRef(BaseModel): + entity_name: str + entity_type: str + + +class EntityInfo(BaseModel): + entity_name: str + entity_type: str + description: str + source_ids: List[int] + node_name: str + + +class EntityListResponse(BaseModel): + entities: List[EntityInfo] + total: int + + +class RenameEntityRequest(BaseModel): + entity_name: str + entity_type: str + new_entity_name: str + new_entity_type: str = "" # empty → keep same type + new_description: Optional[str] = None # None → keep existing description + + +class MergeEntitiesRequest(BaseModel): + source_entities: List[EntityRef] # entities to merge (≥ 2) + canonical_entity_name: str + canonical_entity_type: str + canonical_description: str = "" + + +class NewEntitySpec(BaseModel): + entity_name: str + entity_type: str + description: str = "" + source_ids: List[int] = Field(default_factory=list) + + +class SplitEntityRequest(BaseModel): + entity_name: str + entity_type: str + new_entities: List[NewEntitySpec] # ≥ 2 new entities + edge_mode: str = "duplicate" # "duplicate" | "none" + + +class MergeSuggestion(BaseModel): + entity_a: EntityRef + entity_b: EntityRef + score: float # 0.0 – 1.0 + method: str # "string_similarity" | "embedding_similarity" + + +class SuggestMergesResponse(BaseModel): + suggestions: List[MergeSuggestion] + + +class EntityOperationResponse(BaseModel): + success: bool + message: str + entities: List[EntityInfo] = Field(default_factory=list) + diff --git a/api/routers/documents.py b/api/routers/documents.py index 1624917..651f667 100644 --- a/api/routers/documents.py +++ b/api/routers/documents.py @@ -1,15 +1,18 @@ -"""Document management router: upload, list, status.""" +"""Document management router: upload (multi-file), list, status, raw download.""" import logging import os import uuid +from typing import List + from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, BackgroundTasks +from fastapi.responses import FileResponse import aiofiles -from api.models.requests import DocumentResponse +from api.models.requests import DocumentResponse, BatchUploadResponse from api.db import mongodb as db from api.dependencies import ( MONGO_URI, MONGO_DB_PREFIX, UPLOAD_DIR, - get_current_user, + get_current_user, check_doc_access, ) from api.services.indexing import run_indexing @@ -19,49 +22,72 @@ CONFIG_PATH = os.getenv("BOOKRAG_CONFIG_PATH", "config/gbc.yaml") -@router.post("", status_code=202, response_model=DocumentResponse) -async def upload_document( - background_tasks: BackgroundTasks, - file: UploadFile = File(...), - current_user: dict = Depends(get_current_user), -): - """Upload a PDF and start background indexing.""" - tenant_id = current_user["tenant_id"] - user_id = current_user["user_id"] - - if not file.filename.lower().endswith(".pdf"): - raise HTTPException(status_code=400, detail="Only PDF files are supported") - +async def _save_and_register_file( + file: UploadFile, + tenant_id: str, + user_id: str, + tenant_upload_dir: str, +) -> dict: + """Save one uploaded file to the tenant upload dir and return doc metadata.""" doc_id = str(uuid.uuid4()) - tenant_upload_dir = os.path.join(UPLOAD_DIR, tenant_id) - os.makedirs(tenant_upload_dir, exist_ok=True) - pdf_path = os.path.join(tenant_upload_dir, f"{doc_id}.pdf") + # Preserve original filename; prefix with doc_id to avoid collisions + safe_name = os.path.basename(file.filename) + pdf_path = os.path.join(tenant_upload_dir, f"{doc_id}_{safe_name}") - # Save uploaded file async with aiofiles.open(pdf_path, "wb") as out: while chunk := await file.read(1024 * 1024): # 1 MB chunks await out.write(chunk) - # Register document in MongoDB - doc_data = { + return { "doc_id": doc_id, "filename": file.filename, "tenant_id": tenant_id, "uploaded_by": user_id, "pdf_path": pdf_path, } - await db.create_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_data) - # Auto-grant uploader read access - await db.grant_permission(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id, doc_id, "owner") - # Start background indexing - background_tasks.add_task(run_indexing, tenant_id, doc_id, pdf_path, CONFIG_PATH) +@router.post("", status_code=202, response_model=BatchUploadResponse) +async def upload_documents( + background_tasks: BackgroundTasks, + files: List[UploadFile] = File(...), + current_user: dict = Depends(get_current_user), +): + """Upload one or more PDFs and start background indexing for each.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + + tenant_upload_dir = os.path.join(UPLOAD_DIR, tenant_id) + os.makedirs(tenant_upload_dir, exist_ok=True) + + uploaded: List[DocumentResponse] = [] + failed: List[dict] = [] + + for file in files: + if not file.filename.lower().endswith(".pdf"): + failed.append({"filename": file.filename, "error": "Only PDF files are supported"}) + continue + try: + doc_data = await _save_and_register_file(file, tenant_id, user_id, tenant_upload_dir) + except Exception as exc: + log.error(f"Failed to save file '{file.filename}': {exc}") + failed.append({"filename": file.filename, "error": str(exc)}) + continue + + # Register document in MongoDB + await db.create_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_data) + # Auto-grant uploader owner access + await db.grant_permission(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id, doc_data["doc_id"], "owner") + # Enqueue background indexing + background_tasks.add_task( + run_indexing, tenant_id, doc_data["doc_id"], doc_data["pdf_path"], CONFIG_PATH + ) + uploaded.append(DocumentResponse(doc_id=doc_data["doc_id"], filename=file.filename, status="pending")) - return DocumentResponse(doc_id=doc_id, filename=file.filename, status="pending") + return BatchUploadResponse(uploaded=uploaded, failed=failed) -@router.get("", response_model=list[DocumentResponse]) +@router.get("", response_model=List[DocumentResponse]) async def list_documents(current_user: dict = Depends(get_current_user)): """List all documents accessible to the current user.""" tenant_id = current_user["tenant_id"] @@ -84,8 +110,6 @@ async def get_document_status(doc_id: str, current_user: dict = Depends(get_curr tenant_id = current_user["tenant_id"] user_id = current_user["user_id"] - # Permission check - from api.dependencies import check_doc_access if not await check_doc_access(user_id, tenant_id, doc_id): raise HTTPException(status_code=403, detail="Access denied to this document") @@ -99,3 +123,24 @@ async def get_document_status(doc_id: str, current_user: dict = Depends(get_curr error=doc.get("error"), ) + +@router.get("/{doc_id}/raw") +async def download_raw_document(doc_id: str, current_user: dict = Depends(get_current_user)): + """Stream back the original uploaded PDF file.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + + if not await check_doc_access(user_id, tenant_id, doc_id): + raise HTTPException(status_code=403, detail="Access denied to this document") + + raw_path = await db.get_document_raw_path(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id) + if not raw_path or not os.path.isfile(raw_path): + raise HTTPException(status_code=404, detail="Raw document file not found") + + filename = os.path.basename(raw_path) + return FileResponse( + path=raw_path, + media_type="application/pdf", + filename=filename, + ) + diff --git a/api/routers/entities.py b/api/routers/entities.py new file mode 100644 index 0000000..9bae692 --- /dev/null +++ b/api/routers/entities.py @@ -0,0 +1,198 @@ +"""Entity management router: list, rename, merge, split, suggest-merges.""" +import logging +import os + +from fastapi import APIRouter, Depends, HTTPException + +from api.models.requests import ( + EntityListResponse, EntityInfo, + EntityOperationResponse, + RenameEntityRequest, + MergeEntitiesRequest, + SplitEntityRequest, + SuggestMergesResponse, MergeSuggestion, EntityRef, +) +from api.dependencies import get_current_user, check_doc_access +import api.services.entity_editor as svc + +log = logging.getLogger(__name__) +router = APIRouter(prefix="/entities", tags=["entities"]) + +CONFIG_PATH = os.getenv("BOOKRAG_CONFIG_PATH", "config/gbc.yaml") + + +async def _require_access(tenant_id: str, user_id: str, doc_id: str): + if not await check_doc_access(user_id, tenant_id, doc_id): + raise HTTPException(status_code=403, detail="Access denied to this document") + + +# ── List ────────────────────────────────────────────────────────────────────── + +@router.get("/{doc_id}", response_model=EntityListResponse) +async def list_entities(doc_id: str, current_user: dict = Depends(get_current_user)): + """Return all NER entities for the given document.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + await _require_access(tenant_id, user_id, doc_id) + + try: + entities = await svc.list_entities(tenant_id, doc_id, CONFIG_PATH) + except Exception as exc: + log.exception(f"list_entities failed: {exc}") + raise HTTPException(status_code=500, detail=str(exc)) + + return EntityListResponse( + entities=[EntityInfo(**e) for e in entities], + total=len(entities), + ) + + +# ── Rename ──────────────────────────────────────────────────────────────────── + +@router.patch("/{doc_id}/rename", response_model=EntityOperationResponse) +async def rename_entity( + doc_id: str, + req: RenameEntityRequest, + current_user: dict = Depends(get_current_user), +): + """Rename an entity node (name and/or type).""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + await _require_access(tenant_id, user_id, doc_id) + + try: + updated = await svc.rename_entity( + tenant_id=tenant_id, doc_id=doc_id, config_path=CONFIG_PATH, + entity_name=req.entity_name, entity_type=req.entity_type, + new_entity_name=req.new_entity_name, + new_entity_type=req.new_entity_type, + new_description=req.new_description, + user_id=user_id, + ) + except KeyError as exc: + raise HTTPException(status_code=404, detail=str(exc)) + except Exception as exc: + log.exception(f"rename_entity failed: {exc}") + raise HTTPException(status_code=500, detail=str(exc)) + + return EntityOperationResponse( + success=True, + message=f"Renamed '{req.entity_name}' → '{req.new_entity_name}'", + entities=[EntityInfo(**e) for e in updated], + ) + + +# ── Merge ───────────────────────────────────────────────────────────────────── + +@router.post("/{doc_id}/merge", response_model=EntityOperationResponse) +async def merge_entities( + doc_id: str, + req: MergeEntitiesRequest, + current_user: dict = Depends(get_current_user), +): + """Merge two or more entities into a single canonical entity.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + await _require_access(tenant_id, user_id, doc_id) + + if len(req.source_entities) < 2: + raise HTTPException(status_code=422, detail="Provide at least 2 source_entities to merge") + + try: + updated = await svc.merge_entities( + tenant_id=tenant_id, doc_id=doc_id, config_path=CONFIG_PATH, + source_entities=[e.model_dump() for e in req.source_entities], + canonical_name=req.canonical_entity_name, + canonical_type=req.canonical_entity_type, + canonical_desc=req.canonical_description, + user_id=user_id, + ) + except KeyError as exc: + raise HTTPException(status_code=404, detail=str(exc)) + except Exception as exc: + log.exception(f"merge_entities failed: {exc}") + raise HTTPException(status_code=500, detail=str(exc)) + + return EntityOperationResponse( + success=True, + message=f"Merged {len(req.source_entities)} entities → '{req.canonical_entity_name}'", + entities=[EntityInfo(**e) for e in updated], + ) + + +# ── Split ───────────────────────────────────────────────────────────────────── + +@router.post("/{doc_id}/split", response_model=EntityOperationResponse) +async def split_entity( + doc_id: str, + req: SplitEntityRequest, + current_user: dict = Depends(get_current_user), +): + """Split one entity into two or more new entities.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + await _require_access(tenant_id, user_id, doc_id) + + if len(req.new_entities) < 2: + raise HTTPException(status_code=422, detail="Provide at least 2 new_entities for a split") + if req.edge_mode not in ("duplicate", "none"): + raise HTTPException(status_code=422, detail="edge_mode must be 'duplicate' or 'none'") + + try: + created = await svc.split_entity( + tenant_id=tenant_id, doc_id=doc_id, config_path=CONFIG_PATH, + entity_name=req.entity_name, entity_type=req.entity_type, + new_entities=[e.model_dump() for e in req.new_entities], + edge_mode=req.edge_mode, + user_id=user_id, + ) + except KeyError as exc: + raise HTTPException(status_code=404, detail=str(exc)) + except Exception as exc: + log.exception(f"split_entity failed: {exc}") + raise HTTPException(status_code=500, detail=str(exc)) + + return EntityOperationResponse( + success=True, + message=f"Split '{req.entity_name}' into {len(created)} entities", + entities=[EntityInfo(**e) for e in created], + ) + + +# ── Suggest merges ──────────────────────────────────────────────────────────── + +@router.get("/{doc_id}/suggestions", response_model=SuggestMergesResponse) +async def suggest_merges( + doc_id: str, + min_score: float = 0.80, + top_k: int = 50, + use_embeddings: bool = False, + current_user: dict = Depends(get_current_user), +): + """Return ranked merge-candidate pairs based on string/embedding similarity.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + await _require_access(tenant_id, user_id, doc_id) + + if not (0.0 <= min_score <= 1.0): + raise HTTPException(status_code=422, detail="min_score must be between 0.0 and 1.0") + + try: + raw = await svc.suggest_merges( + tenant_id=tenant_id, doc_id=doc_id, config_path=CONFIG_PATH, + min_score=min_score, top_k=top_k, use_embeddings=use_embeddings, + ) + except Exception as exc: + log.exception(f"suggest_merges failed: {exc}") + raise HTTPException(status_code=500, detail=str(exc)) + + return SuggestMergesResponse(suggestions=[ + MergeSuggestion( + entity_a=EntityRef(**s["entity_a"]), + entity_b=EntityRef(**s["entity_b"]), + score=s["score"], + method=s["method"], + ) + for s in raw + ]) + diff --git a/api/services/entity_editor.py b/api/services/entity_editor.py new file mode 100644 index 0000000..c5857ba --- /dev/null +++ b/api/services/entity_editor.py @@ -0,0 +1,439 @@ +"""Entity editor service: rename, merge, split, suggest-merges on NER entities. + +All mutating operations work on the in-memory NetworkX graph (loaded from +graph_data.json), persist changes to graph_data.json *and* FalkorDB (when +configured), then best-effort rebuild the entity VDB so search stays fresh. + +Entities are NOT stored in MongoDB — their source of truth is FalkorDB + +graph_data.json. A lightweight audit entry is written to MongoDB's +``entity_edits`` collection for every mutating operation. +""" +from __future__ import annotations + +import asyncio +import logging +import os +from collections import defaultdict +from concurrent.futures import ThreadPoolExecutor +from difflib import SequenceMatcher +from typing import Dict, List, Optional + +from api.dependencies import ( + FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD, + INDEX_SAVE_DIR, MONGO_URI, MONGO_DB_PREFIX, +) +from api.db import mongodb as db + +log = logging.getLogger(__name__) +_executor = ThreadPoolExecutor(max_workers=2) + +# Per-document asyncio lock — keyed by "{tenant_id}:{doc_id}" +_doc_locks: Dict[str, asyncio.Lock] = defaultdict(asyncio.Lock) + + +def _get_lock(tenant_id: str, doc_id: str) -> asyncio.Lock: + return _doc_locks[f"{tenant_id}:{doc_id}"] + + +# ── Graph loader ───────────────────────────────────────────────────────────── + +def _load_graph_sync(tenant_id: str, doc_id: str, config_path: str): + """Load a Graph from JSON (never from FalkorDB) for in-memory editing. + + Returns ``(graph, save_path, falkordb_cfg | None)``. + """ + from Core.configs.system_config import load_system_config + from Core.configs.falkordb_config import FalkorDBConfig + from Core.Index.Graph import Graph + + cfg = load_system_config(config_path) + save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) + variant = "basic" if cfg.graph.refine_type == "basic" else None + + # Always load from JSON so we get the full in-memory graph + graph = Graph.load_from_dir( + load_dir=save_path, + variant=variant, + tenant_id=tenant_id, + doc_id=doc_id, + falkordb_cfg=None, # load from JSON only + ) + + # Attach FalkorDB cfg for saving if the host env var is set + falkordb_cfg = None + fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") + if fdb_host: + falkordb_cfg = FalkorDBConfig( + host=FALKORDB_HOST, + port=FALKORDB_PORT, + password=FALKORDB_PASSWORD, + ) + graph.falkordb_cfg = falkordb_cfg + graph.tenant_id = tenant_id + graph.doc_id = doc_id + graph.use_falkordb = True + graph._fdb_graph_name = falkordb_cfg.graph_name_for_doc(tenant_id, doc_id) + + return graph, save_path, falkordb_cfg + + +def _rebuild_vdb_sync(tenant_id: str, doc_id: str, config_path: str) -> None: + """Best-effort VDB rebuild after any graph mutation.""" + try: + from Core.configs.system_config import load_system_config + from Core.configs.falkordb_config import FalkorDBConfig + from Core.Index.GBCIndex import GBC + + cfg = load_system_config(config_path) + cfg.tenant_id = tenant_id + cfg.doc_id = doc_id + cfg.save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) + + fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") + if fdb_host: + cfg.falkordb = FalkorDBConfig( + host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD + ) + + gbc = GBC.load_gbc_index(cfg) + gbc.rebuild_vdb() + log.info(f"VDB rebuilt for {tenant_id}/{doc_id}") + except Exception as exc: + log.warning(f"VDB rebuild failed for {tenant_id}/{doc_id}: {exc}") + + +# ── List entities ───────────────────────────────────────────────────────────── + +def _list_entities_sync(tenant_id: str, doc_id: str, config_path: str) -> List[dict]: + graph, _, _ = _load_graph_sync(tenant_id, doc_id, config_path) + result = [] + for node_name in graph.get_all_nodes(): + entity = graph.get_entity_by_node_name(node_name) + result.append({ + "entity_name": entity.entity_name, + "entity_type": entity.entity_type, + "description": entity.description, + "source_ids": sorted(entity.source_ids), + "node_name": node_name, + }) + return sorted(result, key=lambda e: e["entity_name"].lower()) + + +async def list_entities(tenant_id: str, doc_id: str, config_path: str) -> List[dict]: + loop = asyncio.get_event_loop() + return await loop.run_in_executor( + _executor, _list_entities_sync, tenant_id, doc_id, config_path + ) + + +# ── Rename entity ───────────────────────────────────────────────────────────── + +def _rename_sync( + tenant_id: str, doc_id: str, config_path: str, + entity_name: str, entity_type: str, + new_entity_name: str, new_entity_type: str, new_description: Optional[str], +) -> List[dict]: + from Core.Index.Graph import Entity + + graph, _, _ = _load_graph_sync(tenant_id, doc_id, config_path) + old_entity = graph.get_entity(entity_name, entity_type) + + effective_type = new_entity_type if new_entity_type else old_entity.entity_type + effective_desc = new_description if new_description is not None else old_entity.description + + new_entity = Entity( + entity_name=new_entity_name, + entity_type=effective_type, + description=effective_desc, + source_ids=old_entity.source_ids, + ) + graph.update_entity(entity_name, entity_type, new_entity) + graph.save_graph() + + new_node = graph.get_node_name_from_str(new_entity_name, effective_type) + return [{ + "entity_name": new_entity_name, + "entity_type": effective_type, + "description": effective_desc, + "source_ids": sorted(new_entity.source_ids), + "node_name": new_node, + }] + + +async def rename_entity( + tenant_id: str, doc_id: str, config_path: str, + entity_name: str, entity_type: str, + new_entity_name: str, new_entity_type: str, new_description: Optional[str], + user_id: str, +) -> List[dict]: + async with _get_lock(tenant_id, doc_id): + loop = asyncio.get_event_loop() + result = await loop.run_in_executor( + _executor, _rename_sync, + tenant_id, doc_id, config_path, + entity_name, entity_type, new_entity_name, new_entity_type, new_description, + ) + await db.log_entity_edit(MONGO_URI, MONGO_DB_PREFIX, tenant_id, { + "operation": "rename", "doc_id": doc_id, "user_id": user_id, + "before": {"entity_name": entity_name, "entity_type": entity_type}, + "after": {"entity_name": new_entity_name, "entity_type": new_entity_type or entity_type}, + }) + loop = asyncio.get_event_loop() + loop.run_in_executor(_executor, _rebuild_vdb_sync, tenant_id, doc_id, config_path) + return result + + +# ── Split entity ────────────────────────────────────────────────────────────── + +def _split_sync( + tenant_id: str, doc_id: str, config_path: str, + entity_name: str, entity_type: str, + new_entities: List[dict], + edge_mode: str, +) -> List[dict]: + from Core.Index.Graph import Entity + + graph, _, _ = _load_graph_sync(tenant_id, doc_id, config_path) + old_node = graph.get_node_name_from_str(entity_name, entity_type) + if old_node not in graph.kg: + raise KeyError(f"Entity '{old_node}' not found in graph.") + + old_entity = graph.get_entity_by_node_name(old_node) + old_neighbors = list(graph.kg.neighbors(old_node)) + old_edge_data = {n: graph.kg.get_edge_data(old_node, n) for n in old_neighbors} + + created: List[dict] = [] + for spec in new_entities: + spec_name = spec["entity_name"] + spec_type = spec["entity_type"] + spec_desc = spec.get("description") or old_entity.description + spec_sids = set(spec.get("source_ids") or old_entity.source_ids) + + new_node = graph.get_node_name_from_str(spec_name, spec_type) + graph.add_kg_node(Entity( + entity_name=spec_name, entity_type=spec_type, + description=spec_desc, source_ids=spec_sids, + )) + + if edge_mode == "duplicate": + for neighbor, edata in old_edge_data.items(): + if neighbor != old_node and not graph.kg.has_edge(new_node, neighbor): + graph.kg.add_edge(new_node, neighbor, **edata) + + for tree_id in spec_sids: + graph.tree2kg[tree_id].add(new_node) + + created.append({ + "entity_name": spec_name, "entity_type": spec_type, + "description": spec_desc, "source_ids": sorted(spec_sids), "node_name": new_node, + }) + + for _, nodes in graph.tree2kg.items(): + nodes.discard(old_node) + graph.kg.remove_node(old_node) + graph.save_graph() + return created + + +async def split_entity( + tenant_id: str, doc_id: str, config_path: str, + entity_name: str, entity_type: str, + new_entities: List[dict], edge_mode: str, + user_id: str, +) -> List[dict]: + async with _get_lock(tenant_id, doc_id): + loop = asyncio.get_event_loop() + result = await loop.run_in_executor( + _executor, _split_sync, + tenant_id, doc_id, config_path, + entity_name, entity_type, new_entities, edge_mode, + ) + await db.log_entity_edit(MONGO_URI, MONGO_DB_PREFIX, tenant_id, { + "operation": "split", "doc_id": doc_id, "user_id": user_id, + "before": {"entity_name": entity_name, "entity_type": entity_type}, + "after": [{"entity_name": e["entity_name"], "entity_type": e["entity_type"]} for e in result], + }) + loop = asyncio.get_event_loop() + loop.run_in_executor(_executor, _rebuild_vdb_sync, tenant_id, doc_id, config_path) + return result + + +# ── Suggest merge candidates ────────────────────────────────────────────────── + +def _suggest_merges_sync( + tenant_id: str, doc_id: str, config_path: str, + min_score: float, top_k: int, use_embeddings: bool, +) -> List[dict]: + graph, _, _ = _load_graph_sync(tenant_id, doc_id, config_path) + nodes = list(graph.get_all_nodes()) + entities = [] + for node in nodes: + ent = graph.get_entity_by_node_name(node) + entities.append({"entity_name": ent.entity_name, "entity_type": ent.entity_type, "node": node}) + + suggestions: List[dict] = [] + + # String similarity + n = len(entities) + for i in range(n): + for j in range(i + 1, n): + a, b = entities[i], entities[j] + if a["entity_type"] != b["entity_type"]: + continue + score = SequenceMatcher(None, a["entity_name"].lower(), b["entity_name"].lower()).ratio() + if score >= min_score: + suggestions.append({ + "entity_a": {"entity_name": a["entity_name"], "entity_type": a["entity_type"]}, + "entity_b": {"entity_name": b["entity_name"], "entity_type": b["entity_type"]}, + "score": round(score, 4), + "method": "string_similarity", + }) + + # Embedding similarity (optional) + if use_embeddings: + try: + from Core.configs.system_config import load_system_config + from Core.Index.GBCIndex import GBC + + cfg = load_system_config(config_path) + cfg.tenant_id = tenant_id + cfg.doc_id = doc_id + cfg.save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) + gbc = GBC.load_gbc_index(cfg) + + seen_pairs: set = set() + for ent in entities: + for hit in gbc.entity_vdb.search(ent["node"], top_k=5): + sim = 1.0 - hit["distance"] + if sim < min_score: + continue + meta = hit.get("metadata", {}) + b_name = meta.get("entity_name", "") + b_type = meta.get("entity_type", "") + if (b_name == ent["entity_name"] and b_type == ent["entity_type"]) or b_type != ent["entity_type"]: + continue + pair = tuple(sorted([(ent["entity_name"], ent["entity_type"]), (b_name, b_type)])) + if pair in seen_pairs: + continue + seen_pairs.add(pair) + suggestions.append({ + "entity_a": {"entity_name": ent["entity_name"], "entity_type": ent["entity_type"]}, + "entity_b": {"entity_name": b_name, "entity_type": b_type}, + "score": round(sim, 4), + "method": "embedding_similarity", + }) + except Exception as exc: + log.warning(f"Embedding suggestions failed: {exc}") + + suggestions.sort(key=lambda s: s["score"], reverse=True) + return suggestions[:top_k] + + +async def suggest_merges( + tenant_id: str, doc_id: str, config_path: str, + min_score: float = 0.80, + top_k: int = 50, + use_embeddings: bool = False, +) -> List[dict]: + loop = asyncio.get_event_loop() + return await loop.run_in_executor( + _executor, _suggest_merges_sync, + tenant_id, doc_id, config_path, min_score, top_k, use_embeddings, + ) +# ── Merge entities ──────────────────────────────────────────────────────────── + +def _merge_sync( + tenant_id: str, doc_id: str, config_path: str, + source_entities: List[dict], + canonical_name: str, canonical_type: str, canonical_desc: str, +) -> List[dict]: + from Core.Index.Graph import Entity + + graph, _, _ = _load_graph_sync(tenant_id, doc_id, config_path) + + # Collect all source_ids from entities being merged + merged_source_ids: set = set() + for src in source_entities: + try: + ent = graph.get_entity(src["entity_name"], src["entity_type"]) + merged_source_ids.update(ent.source_ids) + except KeyError: + log.warning(f"Merge: source entity not found: {src}") + + canonical_node = graph.get_node_name_from_str(canonical_name, canonical_type) + + # Ensure canonical node exists (may be one of the sources or brand new) + if canonical_node not in graph.kg: + canonical_entity = Entity( + entity_name=canonical_name, + entity_type=canonical_type, + description=canonical_desc, + source_ids=merged_source_ids, + ) + graph.add_kg_node(canonical_entity) + else: + # Update description and source_ids on the existing node + existing = graph.get_entity_by_node_name(canonical_node) + merged_source_ids.update(existing.source_ids) + updated = Entity( + entity_name=canonical_name, + entity_type=canonical_type, + description=canonical_desc or existing.description, + source_ids=merged_source_ids, + ) + graph.kg.nodes[canonical_node].update(updated.model_dump()) + + # Transfer edges from each source to canonical, then remove source + for src in source_entities: + src_node = graph.get_node_name_from_str(src["entity_name"], src["entity_type"]) + if src_node == canonical_node or src_node not in graph.kg: + continue + for neighbor in list(graph.kg.neighbors(src_node)): + if neighbor == canonical_node: + continue + edge_data = graph.kg.get_edge_data(src_node, neighbor) + if not graph.kg.has_edge(canonical_node, neighbor): + graph.kg.add_edge(canonical_node, neighbor, **edge_data) + # Update tree2kg + for tree_id, nodes in graph.tree2kg.items(): + if src_node in nodes: + nodes.discard(src_node) + nodes.add(canonical_node) + graph.kg.remove_node(src_node) + + # Persist source_ids on canonical node + graph.kg.nodes[canonical_node]["source_ids"] = list(merged_source_ids) + graph.save_graph() + + canonical_ent = graph.get_entity_by_node_name(canonical_node) + return [{ + "entity_name": canonical_ent.entity_name, + "entity_type": canonical_ent.entity_type, + "description": canonical_ent.description, + "source_ids": sorted(canonical_ent.source_ids), + "node_name": canonical_node, + }] + + +async def merge_entities( + tenant_id: str, doc_id: str, config_path: str, + source_entities: List[dict], + canonical_name: str, canonical_type: str, canonical_desc: str, + user_id: str, +) -> List[dict]: + async with _get_lock(tenant_id, doc_id): + loop = asyncio.get_event_loop() + result = await loop.run_in_executor( + _executor, _merge_sync, + tenant_id, doc_id, config_path, + source_entities, canonical_name, canonical_type, canonical_desc, + ) + await db.log_entity_edit(MONGO_URI, MONGO_DB_PREFIX, tenant_id, { + "operation": "merge", "doc_id": doc_id, "user_id": user_id, + "before": source_entities, + "after": {"entity_name": canonical_name, "entity_type": canonical_type}, + }) + loop = asyncio.get_event_loop() + loop.run_in_executor(_executor, _rebuild_vdb_sync, tenant_id, doc_id, config_path) + return result + From aa58a3f7af86348cb504f7dbfc5eb85f9f1e773d Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Tue, 3 Mar 2026 02:45:33 +0700 Subject: [PATCH 04/11] Enhance security and error handling in API endpoints; implement MCP server for AI integration - Added path traversal prevention in the raw document download endpoint. - Standardized error messages in entity management endpoints to "Internal server error". - Updated permission granting logic to require document ownership for non-admin users. - Refactored chat service to include caching for GBC indexes and improved query handling with history relevance filtering. - Introduced a new MCP server implementation to expose BookRAG API for AI agents, including resource and tool mappings. - Added detailed documentation for MCP server setup and usage. --- MCP.md | 668 ++++++++++++++++++++++++++++++ api/db/mongodb.py | 45 +- api/dependencies.py | 75 +++- api/main.py | 33 +- api/models/requests.py | 48 ++- api/routers/auth.py | 5 +- api/routers/chat.py | 3 +- api/routers/documents.py | 7 + api/routers/entities.py | 10 +- api/routers/tenants.py | 23 +- api/services/chat.py | 256 ++++++++++-- api/services/entity_editor.py | 4 +- api/services/entity_resolution.py | 5 +- api/services/indexing.py | 5 +- 14 files changed, 1120 insertions(+), 67 deletions(-) create mode 100644 MCP.md diff --git a/MCP.md b/MCP.md new file mode 100644 index 0000000..b71a380 --- /dev/null +++ b/MCP.md @@ -0,0 +1,668 @@ +# BookRAG MCP Server — Implementation Guide + +> **Model Context Protocol (MCP)** is an open standard by Anthropic that lets AI assistants (Claude Desktop, Cursor, Windsurf, etc.) connect directly to external tools and data sources through a unified interface. This document describes how to expose the BookRAG API as an MCP server so that AI agents can query books, inspect knowledge-graph entities, and manage documents — without any HTTP REST calls. + +--- + +## Table of Contents + +1. [What is MCP?](#1-what-is-mcp) +2. [Why BookRAG Maps Perfectly to MCP](#2-why-bookrag-maps-perfectly-to-mcp) +3. [Architecture](#3-architecture) +4. [MCP Primitives Mapping](#4-mcp-primitives-mapping) +5. [Multi-Tenancy Strategy](#5-multi-tenancy-strategy) +6. [Installation](#6-installation) +7. [File Structure](#7-file-structure) +8. [Implementation: `mcp_server.py`](#8-implementation-mcp_serverpy) +9. [Mounting to the Existing FastAPI App](#9-mounting-to-the-existing-fastapi-app) +10. [Claude Desktop & Cursor Configuration](#10-claude-desktop--cursor-configuration) +11. [Long-Running Operations (Indexing)](#11-long-running-operations-indexing) +12. [Testing](#12-testing) +13. [Transport Options](#13-transport-options) + +--- + +## 1. What is MCP? + +MCP defines three primitive types a server can expose: + +| Primitive | Who controls it | Description | BookRAG example | +|---|---|---|---| +| **Resource** | Application | Read-only contextual data, URI-addressable | Entity list, document status | +| **Tool** | Model (LLM) | Callable functions that take actions | Query a book, rename an entity | +| **Prompt** | User | Reusable prompt templates | "Ask about book", "Find duplicates" | + +MCP is **not** a replacement for REST. It is a parallel interface optimised for AI-agent consumption — same underlying service layer, different transport. + +--- + +## 2. Why BookRAG Maps Perfectly to MCP + +BookRAG's three-layer architecture is already MCP-ready: + +``` +Transport (HTTP REST) → api/routers/ ← keep as-is for users/web UI +Business logic → api/services/ ← shared, zero changes needed +Data stores → FalkorDB, MongoDB, ChromaDB +``` + +Adding MCP means writing a **thin new `mcp_server.py`** that calls the same `api/services/` functions — identical to how the FastAPI routers call them today. + +Key reasons conversion is straightforward: +- All business logic is already **async Python** (`asyncio`) +- Services accept plain Python args — no HTTP concepts leak into them +- Per-document locking, thread pools, and FalkorDB persistence are all inside `api/services/` +- No changes needed to `Core/` indexing pipeline + +--- + +## 3. Architecture + +``` +┌─────────────────────────────────────────────────────┐ +│ AI Agents / Claude Desktop │ +│ (Claude, Cursor, Windsurf, custom) │ +└────────────────────┬────────────────────────────────┘ + │ MCP (stdio or streamable-http) + ▼ + ┌─────────────────┐ + │ mcp_server.py │ ← NEW (thin adapter) + └────────┬────────┘ + │ + ┌────────────▼────────────┐ + │ api/services/ │ ← SHARED (unchanged) + │ entity_editor.py │ + │ chat.py │ + │ indexing.py │ + │ entity_resolution.py │ + └──┬──────────┬──────────┘ + │ │ + ┌──────▼──┐ ┌────▼──────┐ + │FalkorDB │ │ MongoDB │ + │ChromaDB │ │ uploads/ │ + └─────────┘ └───────────┘ + +┌─────────────────────────────────────────────────────┐ +│ Web / Mobile Users │ +└─────────────────┬───────────────────────────────────┘ + │ HTTP REST (JSON) + ▼ + ┌─────────────────┐ + │ api/routers/ │ ← EXISTING FastAPI (unchanged) + └─────────────────┘ +``` + +Both interfaces use **the same service layer** — changes made through MCP are instantly visible through REST and vice versa. + +--- + +## 4. MCP Primitives Mapping + +### Resources (read-only data) + +| URI pattern | Description | Backed by | +|---|---|---| +| `bookrag://documents/{tenant_id}` | List all documents for the tenant | `db.list_documents()` | +| `bookrag://documents/{tenant_id}/{doc_id}` | Single document status | `db.get_document()` | +| `bookrag://entities/{tenant_id}/{doc_id}` | All NER entities for a document | `entity_editor.list_entities()` | + +Resources are **application-controlled**: the AI client decides when to read them as context, without the model explicitly calling a tool. + +### Tools (callable by the model) + +| Tool name | Maps to | Description | +|---|---|---| +| `query_documents` | `chat.handle_query()` | Ask a question against one or more indexed books | +| `rename_entity` | `entity_editor.rename_entity()` | Rename an entity node in the knowledge graph | +| `merge_entities` | `entity_editor.merge_entities()` | Merge ≥ 2 entity nodes into a canonical node | +| `split_entity` | `entity_editor.split_entity()` | Split 1 entity into ≥ 2 new nodes | +| `suggest_merge_candidates` | `entity_editor.suggest_merges()` | Find likely duplicate entities | +| `get_document_status` | `db.get_document()` | Check indexing status of a document | +| `index_document` | `indexing.run_indexing()` | Trigger indexing for an uploaded PDF | + +### Prompts (user-invoked templates) + +| Prompt name | Description | +|---|---| +| `ask_about_book` | Template: "Given document `{doc_id}`, answer: `{question}`" | +| `find_entity_duplicates` | Template: "Review these merge suggestions and decide which to apply" | +| `summarise_entities` | Template: "List the most important entities in `{doc_id}` and explain their roles" | + +--- + +## 5. Multi-Tenancy Strategy + +MCP has **no built-in JWT authentication**. Every service call needs a `tenant_id` and `user_id`. Three options: + +### Option A — Environment-Variable Injection (Recommended) + +Each tenant runs their own MCP server process. The `tenant_id` and `user_id` are injected via environment variables at launch time. + +``` +BOOKRAG_TENANT_ID=acme BOOKRAG_USER_ID=alice python mcp_server.py +``` + +Inside `mcp_server.py`: + +```python +import os +TENANT_ID = os.environ["BOOKRAG_TENANT_ID"] # required — fail fast if missing +USER_ID = os.environ["BOOKRAG_USER_ID"] +``` + +**Pros**: Simple, no auth complexity, works with Claude Desktop `env` block. +**Cons**: One process per tenant — fine for small deployments. + +### Option B — Tool-Argument Injection + +`tenant_id` and `user_id` are required arguments on every tool. The AI model must supply them. + +**Pros**: Single process for all tenants. +**Cons**: Verbose; model must always pass credentials; no real security boundary. + +### Option C — OAuth 2.0 (MCP 1.1+) + +MCP's newer spec supports OAuth 2.0 flows. Suitable for a SaaS product where the MCP server is hosted remotely and multiple organisations connect to it. + +**Pros**: Proper per-user auth, scalable. +**Cons**: Requires implementing an OAuth server; significant complexity. + +> **Recommendation for BookRAG**: Start with **Option A** (env-var injection). It matches exactly how Claude Desktop is configured and requires minimal code. + +--- + +## 6. Installation + +Add the MCP SDK to the project's virtual environment: + +```bash +# Using pip (existing .venv) +pip install "mcp[cli]" + +# Or with uv +uv add "mcp[cli]" +``` + +The `[cli]` extra installs the `mcp` command-line tool needed for the development inspector. + +--- + +## 7. File Structure + +Only **one new file** is needed at the repo root: + +``` +BookRAG/ +├── mcp_server.py ← NEW — MCP adapter (thin layer over api/services/) +├── api/ +│ ├── main.py ← existing FastAPI app (unchanged) +│ ├── services/ ← shared business logic (unchanged) +│ ├── routers/ ← existing REST endpoints (unchanged) +│ └── ... +├── Core/ ← GBC indexing pipeline (unchanged) +└── config/ + └── gbc.yaml ← existing config (unchanged) +``` + +Alternatively, for a remote/production deployment where MCP is mounted directly onto the FastAPI app, no new file is needed — see [Section 9](#9-mounting-to-the-existing-fastapi-app). + +--- + +## 8. Implementation: `mcp_server.py` + +Below is the complete implementation skeleton. It uses the **FastMCP** high-level API (`from mcp.server.fastmcp import FastMCP`) which is analogous to FastAPI's `APIRouter`. + +```python +"""BookRAG MCP Server. + +Usage (local / Claude Desktop): + BOOKRAG_TENANT_ID=acme BOOKRAG_USER_ID=alice python mcp_server.py + +Usage (dev inspector): + BOOKRAG_TENANT_ID=acme BOOKRAG_USER_ID=alice mcp dev mcp_server.py +""" +import json +import os + +from mcp.server.fastmcp import FastMCP, Context + +# ── Tenant identity (injected via environment) ───────────────────────────── +TENANT_ID = os.environ.get("BOOKRAG_TENANT_ID", "default") +USER_ID = os.environ.get("BOOKRAG_USER_ID", "agent") +CONFIG_PATH = os.environ.get("BOOKRAG_CONFIG_PATH", "config/gbc.yaml") + +# ── Service imports (lazy, same as routers do) ────────────────────────────── +import api.services.entity_editor as entity_svc +import api.services.chat as chat_svc +import api.services.indexing as index_svc +import api.db.mongodb as db + +from api.dependencies import MONGO_URI, MONGO_DB_PREFIX + +mcp = FastMCP("bookrag", instructions=( + "BookRAG gives you access to a hierarchical RAG knowledge base built from PDF books. " + "Use query_documents to ask questions. Use entity tools to inspect and curate the " + "knowledge graph extracted from each book." +)) + + +# ════════════════════════════════════════════════════════════════════════════ +# RESOURCES (read-only data — application-controlled) +# ════════════════════════════════════════════════════════════════════════════ + +@mcp.resource("bookrag://documents/{tenant_id}") +async def list_documents_resource(tenant_id: str) -> str: + """Return the list of all documents for the given tenant as JSON.""" + docs = await db.list_documents(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id=None) + return json.dumps(docs, default=str) + + +@mcp.resource("bookrag://documents/{tenant_id}/{doc_id}") +async def get_document_resource(tenant_id: str, doc_id: str) -> str: + """Return indexing status and metadata for a single document as JSON.""" + doc = await db.get_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id) + return json.dumps(doc, default=str) if doc else json.dumps({"error": "not found"}) + + +@mcp.resource("bookrag://entities/{tenant_id}/{doc_id}") +async def get_entities_resource(tenant_id: str, doc_id: str) -> str: + """Return all NER entities for a document as a JSON array.""" + entities = await entity_svc.list_entities(tenant_id, doc_id, CONFIG_PATH) + return json.dumps(entities, default=str) + + +# ════════════════════════════════════════════════════════════════════════════ +# TOOLS (callable by the model) +# ════════════════════════════════════════════════════════════════════════════ + +@mcp.tool() +async def query_documents( + question: str, + doc_ids: list[str], + session_id: str = "", + cross_doc: bool = False, +) -> str: + """Query one or more indexed books with a natural-language question. + + Args: + question: The question to ask. + doc_ids: List of document IDs to query (must be 'ready' status). + session_id: Optional session ID to continue a conversation thread. + cross_doc: If True, query all docs in parallel and merge answers. + """ + result = await chat_svc.handle_query( + query=question, + tenant_id=TENANT_ID, + user_id=USER_ID, + doc_ids=doc_ids, + session_id=session_id or None, + config_path=CONFIG_PATH, + cross_doc=cross_doc, + ) + return result.get("answer", str(result)) + + +@mcp.tool() +async def get_document_status(doc_id: str) -> str: + """Check the indexing status of a document (pending/indexing/ready/error).""" + doc = await db.get_document(MONGO_URI, MONGO_DB_PREFIX, TENANT_ID, doc_id) + if not doc: + return f"Document '{doc_id}' not found." + return json.dumps({ + "doc_id": doc["doc_id"], + "filename": doc.get("filename", ""), + "status": doc.get("status", "unknown"), + "error": doc.get("error"), + }) + + +@mcp.tool() +async def list_entities(doc_id: str) -> str: + """Return all NER entities extracted from the knowledge graph of a document.""" + entities = await entity_svc.list_entities(TENANT_ID, doc_id, CONFIG_PATH) + return json.dumps(entities, default=str) + + +@mcp.tool() +async def rename_entity( + doc_id: str, + entity_name: str, + entity_type: str, + new_entity_name: str, + new_entity_type: str = "", + new_description: str = "", +) -> str: + """Rename an entity node in the knowledge graph. + + Args: + doc_id: Document the entity belongs to. + entity_name: Current entity name (exact match). + entity_type: Current entity type (e.g. PERSON, ORG). + new_entity_name: New name for the entity. + new_entity_type: New type (leave blank to keep current). + new_description: New description (leave blank to keep current). + """ + updated = await entity_svc.rename_entity( + tenant_id=TENANT_ID, doc_id=doc_id, config_path=CONFIG_PATH, + entity_name=entity_name, entity_type=entity_type, + new_entity_name=new_entity_name, + new_entity_type=new_entity_type or entity_type, + new_description=new_description or None, + user_id=USER_ID, + ) + return json.dumps(updated, default=str) + + +@mcp.tool() +async def merge_entities( + doc_id: str, + source_entities: list[dict], + canonical_name: str, + canonical_type: str, + canonical_description: str = "", +) -> str: + """Merge two or more entity nodes into a single canonical entity. + + Args: + doc_id: Document containing the entities. + source_entities: List of {"entity_name": ..., "entity_type": ...} dicts. + canonical_name: Name of the resulting merged entity. + canonical_type: Type of the resulting merged entity. + canonical_description: Optional description for the canonical entity. + """ + updated = await entity_svc.merge_entities( + tenant_id=TENANT_ID, doc_id=doc_id, config_path=CONFIG_PATH, + source_entities=source_entities, + canonical_name=canonical_name, + canonical_type=canonical_type, + canonical_desc=canonical_description, + user_id=USER_ID, + ) + return json.dumps(updated, default=str) + + +@mcp.tool() +async def suggest_merge_candidates( + doc_id: str, + min_score: float = 0.80, + top_k: int = 20, + use_embeddings: bool = False, +) -> str: + """Return a ranked list of entity pairs that may be duplicates. + + Args: + doc_id: Document to analyse. + min_score: Minimum similarity score (0.0 – 1.0). Default 0.80. + top_k: Maximum number of suggestions to return. + use_embeddings: If True, also run embedding-based similarity (slower). + """ + suggestions = await entity_svc.suggest_merges( + tenant_id=TENANT_ID, doc_id=doc_id, config_path=CONFIG_PATH, + min_score=min_score, top_k=top_k, use_embeddings=use_embeddings, + ) + return json.dumps(suggestions, default=str) + + +@mcp.tool() +async def index_document( + doc_id: str, + pdf_path: str, + ctx: Context, +) -> str: + """Trigger GBC index build for an already-uploaded PDF. + + This is a long-running operation. Progress is reported via MCP notifications. + + Args: + doc_id: The document ID (must already exist in MongoDB). + pdf_path: Absolute path to the PDF file on the server. + """ + await ctx.report_progress(0, 100, "Starting indexing...") + try: + await index_svc.run_indexing(TENANT_ID, doc_id, pdf_path, CONFIG_PATH) + await ctx.report_progress(100, 100, "Indexing complete.") + return f"Document '{doc_id}' indexed successfully." + except Exception as exc: + return f"Indexing failed: {exc}" + + +# ════════════════════════════════════════════════════════════════════════════ +# PROMPTS (user-invoked templates) +# ════════════════════════════════════════════════════════════════════════════ + +@mcp.prompt() +def ask_about_book(doc_id: str, question: str) -> str: + """Generate a prompt to ask a question about a specific indexed book.""" + return ( + f"You have access to the BookRAG knowledge base for document '{doc_id}'.\n\n" + f"Please use the `query_documents` tool with doc_ids=['{doc_id}'] to answer:\n\n" + f"{question}" + ) + + +@mcp.prompt() +def find_entity_duplicates(doc_id: str) -> str: + """Generate a prompt to review and resolve duplicate entities.""" + return ( + f"You are reviewing the knowledge graph for document '{doc_id}'.\n\n" + f"1. Call `suggest_merge_candidates(doc_id='{doc_id}', min_score=0.80)` to get candidates.\n" + f"2. Review each pair. For genuine duplicates, call `merge_entities`.\n" + f"3. Report a summary of what was merged and why." + ) + + +# ════════════════════════════════════════════════════════════════════════════ +# ENTRY POINT +# ════════════════════════════════════════════════════════════════════════════ + +if __name__ == "__main__": + # Default: stdio transport for Claude Desktop / local use + mcp.run(transport="stdio") +``` + +--- + +## 9. Mounting to the Existing FastAPI App + +For **remote / production** deployments where you want one process serving both REST and MCP, mount the MCP server directly inside `api/main.py`: + +```python +# api/main.py (addition only — all existing code unchanged) +from mcp.server.fastmcp import FastMCP + +# Import the mcp instance from your server module +from mcp_server import mcp # the FastMCP instance defined above + +# Mount under /mcp — accessible at http://host:8000/mcp +app.mount("/mcp", mcp.streamable_http_app()) +``` + +The MCP endpoint is then reachable at `http://your-server:8000/mcp` using the **streamable-http** transport. AI clients connect to this URL rather than launching a subprocess. + +> **Note**: When mounted to FastAPI, the `mcp_server.py` `if __name__ == "__main__"` block is never executed. Uvicorn/Gunicorn drives everything. + +--- + +## 10. Claude Desktop & Cursor Configuration + +### Claude Desktop + +Edit `~/.config/claude/claude_desktop_config.json` (Linux/macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows): + +```json +{ + "mcpServers": { + "bookrag-acme": { + "command": "/path/to/BookRAG/.venv/bin/python", + "args": ["/path/to/BookRAG/mcp_server.py"], + "env": { + "BOOKRAG_TENANT_ID": "acme", + "BOOKRAG_USER_ID": "alice", + "BOOKRAG_CONFIG_PATH": "/path/to/BookRAG/config/gbc.yaml", + "BOOKRAG_UPLOAD_DIR": "/path/to/BookRAG/uploads", + "BOOKRAG_INDEX_DIR": "/path/to/BookRAG/indices", + "BOOKRAG_FALKORDB_HOST": "localhost", + "BOOKRAG_FALKORDB_PORT": "6379", + "MONGO_URI": "mongodb://localhost:27017" + } + } + } +} +``` + +Restart Claude Desktop. The BookRAG tools will appear in the 🔧 tools panel. + +To support multiple tenants in Claude Desktop, add multiple entries with different `BOOKRAG_TENANT_ID` / `BOOKRAG_USER_ID` values: + +```json +{ + "mcpServers": { + "bookrag-acme": { "command": "...", "env": { "BOOKRAG_TENANT_ID": "acme", ... } }, + "bookrag-beta": { "command": "...", "env": { "BOOKRAG_TENANT_ID": "beta", ... } } + } +} +``` + +### Cursor / Windsurf + +In your project's `.cursor/mcp.json` (or Windsurf equivalent): + +```json +{ + "mcpServers": { + "bookrag": { + "command": ".venv/bin/python", + "args": ["mcp_server.py"], + "env": { + "BOOKRAG_TENANT_ID": "dev", + "BOOKRAG_USER_ID": "cursor-agent", + "BOOKRAG_CONFIG_PATH": "config/gbc.yaml" + } + } + } +} +``` + +### Remote (Streamable HTTP) Client Config + +For clients that support the streamable-http transport (custom agents, LangChain, PydanticAI): + +```python +from mcp.client.streamable_http import streamable_http_client +from mcp import ClientSession + +async with streamable_http_client("http://your-server:8000/mcp") as (read, write, _): + async with ClientSession(read, write) as session: + await session.initialize() + result = await session.call_tool("query_documents", { + "question": "Who is the main antagonist?", + "doc_ids": ["doc-abc123"], + }) + print(result.content[0].text) +``` + +--- + +## 11. Long-Running Operations (Indexing) + +MCP tools are **request/response** — the client waits for the tool to return. Indexing a large PDF can take minutes. The `index_document` tool handles this with progress reporting: + +```python +@mcp.tool() +async def index_document(doc_id: str, pdf_path: str, ctx: Context) -> str: + await ctx.report_progress(0, 100, "Starting indexing...") + await index_svc.run_indexing(TENANT_ID, doc_id, pdf_path, CONFIG_PATH) + await ctx.report_progress(100, 100, "Done.") + return f"Document '{doc_id}' indexed successfully." +``` + +`ctx.report_progress(current, total, message)` sends MCP progress notifications that Claude Desktop displays as a progress bar. The client tool call remains open until the function returns. + +For very long operations (> 5 min), the recommended pattern is: +1. Launch indexing as a background task (already done in `run_indexing`) +2. Return immediately with `"Indexing started. Call get_document_status('{doc_id}') to check progress."` +3. The model can poll `get_document_status` in subsequent turns. + +--- + +## 12. Testing + +### Interactive MCP Inspector (recommended first step) + +```bash +cd /path/to/BookRAG +BOOKRAG_TENANT_ID=dev BOOKRAG_USER_ID=test \ + mcp dev mcp_server.py +``` + +This opens a web UI at `http://localhost:5173` where you can: +- Browse all registered Resources, Tools, and Prompts +- Call any tool interactively and inspect the JSON response +- No Claude Desktop or Cursor needed + +### Quick smoke-test with the MCP Python client + +```python +# test_mcp_client.py +import asyncio +from mcp import ClientSession, StdioServerParameters +from mcp.client.stdio import stdio_client + +async def main(): + params = StdioServerParameters( + command=".venv/bin/python", + args=["mcp_server.py"], + env={ + "BOOKRAG_TENANT_ID": "test", + "BOOKRAG_USER_ID": "tester", + "BOOKRAG_CONFIG_PATH": "config/gbc.yaml", + }, + ) + async with stdio_client(params) as (read, write): + async with ClientSession(read, write) as session: + await session.initialize() + + tools = await session.list_tools() + print("Tools:", [t.name for t in tools.tools]) + + resources = await session.list_resources() + print("Resources:", [r.uri for r in resources.resources]) + +asyncio.run(main()) +``` + +Run with: + +```bash +python test_mcp_client.py +``` + +--- + +## 13. Transport Options + +| Transport | Use case | How to run | +|---|---|---| +| **stdio** | Local: Claude Desktop, Cursor, dev | `mcp.run(transport="stdio")` (default) | +| **streamable-http** | Remote: hosted server, custom agents | `app.mount("/mcp", mcp.streamable_http_app())` | +| **SSE** | Legacy remote (older MCP clients) | `mcp.run(transport="sse")` | + +For most BookRAG deployments: +- **Development / single user**: stdio via Claude Desktop config +- **Team / production**: mount streamable-http on the existing FastAPI app at `/mcp` + +--- + +## Summary + +| Step | Action | +|---|---| +| 1 | `pip install "mcp[cli]"` | +| 2 | Create `mcp_server.py` (copy skeleton from Section 8) | +| 3 | Set env vars: `BOOKRAG_TENANT_ID`, `BOOKRAG_USER_ID`, `BOOKRAG_CONFIG_PATH` | +| 4 | Test with `mcp dev mcp_server.py` | +| 5 | Add to Claude Desktop config (Section 10) | +| 6 | *(Optional)* Mount to FastAPI for remote access (Section 9) | + +**Zero changes** to `Core/`, `api/services/`, `api/routers/`, or any existing behaviour are required. + diff --git a/api/db/mongodb.py b/api/db/mongodb.py index 09bb13e..eb5c0a2 100644 --- a/api/db/mongodb.py +++ b/api/db/mongodb.py @@ -1,8 +1,10 @@ """Async MongoDB client and CRUD helpers using Motor.""" import logging +import os from typing import List, Optional from datetime import datetime, timezone +import pymongo from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase log = logging.getLogger(__name__) @@ -32,6 +34,36 @@ async def close_client(): _client = None +async def ensure_indexes(uri: str, system_db: str, db_prefix: str, tenant_ids: List[str]): + """Create MongoDB indexes for all known tenant databases. + + Called once at startup. Indexes are idempotent — ``create_index`` is a no-op + if the index already exists. + """ + client = get_client(uri) + + # System DB indexes + sdb = client[system_db] + await sdb["tenants"].create_index("tenant_id", unique=True) + log.info(f"Ensured indexes on system db '{system_db}'") + + # Per-tenant DB indexes + for tid in tenant_ids: + tdb = client[f"{db_prefix}_{tid}"] + await tdb["users"].create_index("username", unique=True) + await tdb["users"].create_index("user_id", unique=True) + await tdb["documents"].create_index("doc_id", unique=True) + await tdb["permissions"].create_index( + [("user_id", pymongo.ASCENDING), ("doc_id", pymongo.ASCENDING)], + unique=True, + ) + await tdb["sessions"].create_index("session_id", unique=True) + await tdb["sessions"].create_index("user_id") + await tdb["entity_edits"].create_index("doc_id") + await tdb["entity_edits"].create_index("ts") + log.info(f"Ensured indexes on {len(tenant_ids)} tenant database(s)") + + # ── Tenant CRUD ────────────────────────────────────────────────────────────── async def create_tenant(uri: str, system_db: str, tenant_data: dict) -> str: @@ -115,6 +147,12 @@ async def get_accessible_doc_ids(uri: str, db_prefix: str, tenant_id: str, user_ return [p["doc_id"] async for p in cursor] +async def get_permission(uri: str, db_prefix: str, tenant_id: str, user_id: str, doc_id: str) -> Optional[dict]: + """Return the permission record for a user+doc pair, or None.""" + db = get_tenant_db(uri, db_prefix, tenant_id) + return await db["permissions"].find_one({"user_id": user_id, "doc_id": doc_id}) + + # ── Session / Message CRUD ──────────────────────────────────────────────────── async def create_session(uri: str, db_prefix: str, tenant_id: str, session_data: dict) -> str: @@ -124,12 +162,17 @@ async def create_session(uri: str, db_prefix: str, tenant_id: str, session_data: return str(result.inserted_id) +# Max messages per session — prevents unbounded array growth (16 MB doc limit). +# Each user+assistant turn = 2 messages, so 200 = ~100 turns. +_SESSION_MSG_CAP = int(os.environ.get("BOOKRAG_SESSION_MSG_CAP", "200")) + + async def append_message(uri: str, db_prefix: str, tenant_id: str, session_id: str, message: dict): db = get_tenant_db(uri, db_prefix, tenant_id) message["ts"] = datetime.now(timezone.utc) await db["sessions"].update_one( {"session_id": session_id}, - {"$push": {"messages": message}}, + {"$push": {"messages": {"$each": [message], "$slice": -_SESSION_MSG_CAP}}}, ) diff --git a/api/dependencies.py b/api/dependencies.py index 09c1e40..afb996e 100644 --- a/api/dependencies.py +++ b/api/dependencies.py @@ -1,8 +1,11 @@ """FastAPI dependency injection: JWT verification, DB handles, permission checks.""" import os import logging +import time +from collections import defaultdict +from concurrent.futures import ThreadPoolExecutor from typing import Optional -from fastapi import Depends, HTTPException, status +from fastapi import Depends, HTTPException, Request, status from fastapi.security import OAuth2PasswordBearer from jose import JWTError, jwt from passlib.context import CryptContext @@ -12,7 +15,14 @@ log = logging.getLogger(__name__) # ── Config (read from env with sensible defaults) ───────────────────────────── -SECRET_KEY = os.getenv("BOOKRAG_SECRET_KEY", "change-me-in-production-please") +_secret = os.getenv("BOOKRAG_SECRET_KEY", "") +if not _secret: + raise RuntimeError( + "BOOKRAG_SECRET_KEY environment variable is not set. " + "Generate a secure key with: python -c \"import secrets; print(secrets.token_urlsafe(64))\" " + "and export it before starting the server." + ) +SECRET_KEY = _secret ALGORITHM = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES = int(os.getenv("BOOKRAG_TOKEN_EXPIRE", "60")) @@ -27,6 +37,14 @@ UPLOAD_DIR = os.getenv("BOOKRAG_UPLOAD_DIR", "./uploads") INDEX_SAVE_DIR = os.getenv("BOOKRAG_INDEX_DIR", "./indices") +# ── Shared thread pool ─────────────────────────────────────────────────────── +# Single GPU-aware pool shared by chat, indexing, entity_editor, entity_resolution. +# Size is tunable via env var — default 4 workers (matches original chat pool). +THREAD_POOL = ThreadPoolExecutor( + max_workers=int(os.getenv("BOOKRAG_THREAD_POOL_SIZE", "4")), + thread_name_prefix="bookrag", +) + # ── Auth helpers ────────────────────────────────────────────────────────────── pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/auth/login") @@ -87,3 +105,56 @@ async def filter_accessible_docs(user_id: str, tenant_id: str, requested_doc_ids return accessible return [d for d in requested_doc_ids if d in accessible] + +# ── In-memory sliding-window rate limiter ──────────────────────────────────── + +_LOGIN_RPM = int(os.getenv("BOOKRAG_LOGIN_RPM", "10")) # login attempts per minute per IP +_QUERY_RPM = int(os.getenv("BOOKRAG_QUERY_RPM", "30")) # chat queries per minute per user +_WINDOW = 60.0 # seconds + + +class _RateBucket: + """Sliding-window counter per key.""" + + __slots__ = ("_hits",) + + def __init__(self): + self._hits: dict[str, list[float]] = defaultdict(list) + + def check(self, key: str, limit: int) -> bool: + """Return True if the request should be allowed.""" + now = time.monotonic() + window = self._hits[key] + # Prune expired timestamps + cutoff = now - _WINDOW + self._hits[key] = window = [t for t in window if t > cutoff] + if len(window) >= limit: + return False + window.append(now) + return True + + +_login_bucket = _RateBucket() +_query_bucket = _RateBucket() + + +async def rate_limit_login(request: Request): + """Dependency: enforce per-IP rate limit on login.""" + client_ip = request.client.host if request.client else "unknown" + if not _login_bucket.check(client_ip, _LOGIN_RPM): + raise HTTPException( + status_code=status.HTTP_429_TOO_MANY_REQUESTS, + detail=f"Too many login attempts. Try again in {int(_WINDOW)} seconds.", + ) + + +async def rate_limit_query(current_user: dict = Depends(get_current_user)): + """Dependency: enforce per-user rate limit on chat queries.""" + key = f"{current_user['tenant_id']}:{current_user['user_id']}" + if not _query_bucket.check(key, _QUERY_RPM): + raise HTTPException( + status_code=status.HTTP_429_TOO_MANY_REQUESTS, + detail=f"Too many requests. Try again in {int(_WINDOW)} seconds.", + ) + return current_user + diff --git a/api/main.py b/api/main.py index d20795a..d3a585c 100644 --- a/api/main.py +++ b/api/main.py @@ -7,7 +7,7 @@ from fastapi.middleware.cors import CORSMiddleware from api.db import mongodb as db -from api.dependencies import MONGO_URI +from api.dependencies import MONGO_URI, MONGO_DB_PREFIX, MONGO_SYSTEM_DB from api.routers import auth, documents, chat, tenants, entities logging.basicConfig( @@ -24,6 +24,15 @@ async def lifespan(app: FastAPI): # Ensure upload and index directories exist os.makedirs(os.getenv("BOOKRAG_UPLOAD_DIR", "./uploads"), exist_ok=True) os.makedirs(os.getenv("BOOKRAG_INDEX_DIR", "./indices"), exist_ok=True) + + # Build MongoDB indexes for all known tenants + try: + sdb = db.get_system_db(MONGO_URI, MONGO_SYSTEM_DB) + tenant_ids = [t["tenant_id"] async for t in sdb["tenants"].find({}, {"tenant_id": 1})] + await db.ensure_indexes(MONGO_URI, MONGO_SYSTEM_DB, MONGO_DB_PREFIX, tenant_ids) + except Exception as exc: + log.warning(f"MongoDB index creation skipped: {exc}") + yield log.info("BookRAG API shutting down...") await db.close_client() @@ -36,13 +45,25 @@ async def lifespan(app: FastAPI): lifespan=lifespan, ) -# CORS — adjust origins for production +# CORS — set BOOKRAG_CORS_ORIGINS to a comma-separated list of allowed origins +_cors_raw = os.getenv("BOOKRAG_CORS_ORIGINS", "http://localhost:3000,http://localhost:8000") +_cors_origins = [o.strip() for o in _cors_raw.split(",") if o.strip()] +if "*" in _cors_origins: + log.warning( + "CORS allow_origins contains '*'. This is insecure with credentials=True. " + "Set BOOKRAG_CORS_ORIGINS to explicit origins in production." + ) + # Wildcard + credentials is rejected by browsers; fall back to no-credentials mode + _cors_credentials = False +else: + _cors_credentials = True + app.add_middleware( CORSMiddleware, - allow_origins=os.getenv("BOOKRAG_CORS_ORIGINS", "*").split(","), - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], + allow_origins=_cors_origins, + allow_credentials=_cors_credentials, + allow_methods=["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"], + allow_headers=["Authorization", "Content-Type"], ) # Routers diff --git a/api/models/requests.py b/api/models/requests.py index dc83072..91f5905 100644 --- a/api/models/requests.py +++ b/api/models/requests.py @@ -1,20 +1,37 @@ """Pydantic request and response models for the BookRAG API.""" from typing import List, Optional -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, field_validator + +# ── Reusable length constraints ────────────────────────────────────────────── +_SHORT_STR = 128 # usernames, tenant_ids, role names +_PASSWORD_MIN = 8 +_PASSWORD_MAX = 128 +_QUERY_MAX = 10_000 # max characters for a chat query # ── Auth ────────────────────────────────────────────────────────────────────── class RegisterRequest(BaseModel): - username: str - password: str - tenant_id: str + username: str = Field(..., min_length=3, max_length=_SHORT_STR) + password: str = Field(..., min_length=_PASSWORD_MIN, max_length=_PASSWORD_MAX) + tenant_id: str = Field(..., min_length=1, max_length=_SHORT_STR) + + @field_validator("password") + @classmethod + def password_complexity(cls, v: str) -> str: + if not any(c.isupper() for c in v): + raise ValueError("Password must contain at least one uppercase letter") + if not any(c.islower() for c in v): + raise ValueError("Password must contain at least one lowercase letter") + if not any(c.isdigit() for c in v): + raise ValueError("Password must contain at least one digit") + return v class LoginRequest(BaseModel): - username: str - password: str - tenant_id: str + username: str = Field(..., min_length=1, max_length=_SHORT_STR) + password: str = Field(..., min_length=1, max_length=_PASSWORD_MAX) + tenant_id: str = Field(..., min_length=1, max_length=_SHORT_STR) class TokenResponse(BaseModel): @@ -25,9 +42,9 @@ class TokenResponse(BaseModel): # ── Tenant ──────────────────────────────────────────────────────────────────── class TenantCreateRequest(BaseModel): - tenant_id: str - name: str - description: Optional[str] = "" + tenant_id: str = Field(..., min_length=1, max_length=_SHORT_STR) + name: str = Field(..., min_length=1, max_length=256) + description: Optional[str] = Field(default="", max_length=1000) class TenantResponse(BaseModel): @@ -51,16 +68,16 @@ class BatchUploadResponse(BaseModel): class PermissionGrantRequest(BaseModel): - user_id: str - doc_id: str - role: str = "reader" + user_id: str = Field(..., min_length=1, max_length=_SHORT_STR) + doc_id: str = Field(..., min_length=1, max_length=_SHORT_STR) + role: str = Field(default="reader", max_length=32) # ── Chat ────────────────────────────────────────────────────────────────────── class ChatQueryRequest(BaseModel): - query: str - session_id: Optional[str] = None + query: str = Field(..., min_length=1, max_length=_QUERY_MAX) + session_id: Optional[str] = Field(default=None, max_length=_SHORT_STR) doc_ids: Optional[List[str]] = None # restrict to specific docs; None = all accessible cross_doc: bool = False # use global cross-document graph @@ -69,6 +86,7 @@ class ChatQueryResponse(BaseModel): answer: str session_id: str doc_ids_used: List[str] = Field(default_factory=list) + rewritten_query: Optional[str] = None # set when history was used to rewrite the query class SessionCreateRequest(BaseModel): diff --git a/api/routers/auth.py b/api/routers/auth.py index 12e8ff6..5ffea7e 100644 --- a/api/routers/auth.py +++ b/api/routers/auth.py @@ -1,12 +1,13 @@ """Authentication router: register and login endpoints.""" import logging -from fastapi import APIRouter, HTTPException, status +from fastapi import APIRouter, Depends, HTTPException, status from api.models.requests import RegisterRequest, LoginRequest, TokenResponse from api.db import mongodb as db from api.dependencies import ( MONGO_URI, MONGO_DB_PREFIX, MONGO_SYSTEM_DB, hash_password, verify_password, create_access_token, + rate_limit_login, ) log = logging.getLogger(__name__) @@ -37,7 +38,7 @@ async def register(req: RegisterRequest): return {"message": "User registered successfully"} -@router.post("/login", response_model=TokenResponse) +@router.post("/login", response_model=TokenResponse, dependencies=[Depends(rate_limit_login)]) async def login(req: LoginRequest): """Authenticate and return a JWT access token.""" user = await db.get_user_by_username(MONGO_URI, MONGO_DB_PREFIX, req.tenant_id, req.username) diff --git a/api/routers/chat.py b/api/routers/chat.py index 779c118..b3e2f7f 100644 --- a/api/routers/chat.py +++ b/api/routers/chat.py @@ -13,6 +13,7 @@ from api.dependencies import ( MONGO_URI, MONGO_DB_PREFIX, get_current_user, filter_accessible_docs, + rate_limit_query, ) from api.services.chat import handle_query @@ -23,7 +24,7 @@ @router.post("/query", response_model=ChatQueryResponse) -async def query(req: ChatQueryRequest, current_user: dict = Depends(get_current_user)): +async def query(req: ChatQueryRequest, current_user: dict = Depends(rate_limit_query)): """Submit a query. Automatically filters to accessible documents.""" tenant_id = current_user["tenant_id"] user_id = current_user["user_id"] diff --git a/api/routers/documents.py b/api/routers/documents.py index 651f667..fbe4b09 100644 --- a/api/routers/documents.py +++ b/api/routers/documents.py @@ -137,6 +137,13 @@ async def download_raw_document(doc_id: str, current_user: dict = Depends(get_cu if not raw_path or not os.path.isfile(raw_path): raise HTTPException(status_code=404, detail="Raw document file not found") + # Prevent path-traversal: resolved path must be inside UPLOAD_DIR + resolved = os.path.realpath(raw_path) + upload_root = os.path.realpath(UPLOAD_DIR) + if not resolved.startswith(upload_root + os.sep) and resolved != upload_root: + log.warning(f"Path traversal blocked: {raw_path} resolved to {resolved}") + raise HTTPException(status_code=403, detail="Access denied") + filename = os.path.basename(raw_path) return FileResponse( path=raw_path, diff --git a/api/routers/entities.py b/api/routers/entities.py index 9bae692..2b6b7df 100644 --- a/api/routers/entities.py +++ b/api/routers/entities.py @@ -39,7 +39,7 @@ async def list_entities(doc_id: str, current_user: dict = Depends(get_current_us entities = await svc.list_entities(tenant_id, doc_id, CONFIG_PATH) except Exception as exc: log.exception(f"list_entities failed: {exc}") - raise HTTPException(status_code=500, detail=str(exc)) + raise HTTPException(status_code=500, detail="Internal server error") return EntityListResponse( entities=[EntityInfo(**e) for e in entities], @@ -73,7 +73,7 @@ async def rename_entity( raise HTTPException(status_code=404, detail=str(exc)) except Exception as exc: log.exception(f"rename_entity failed: {exc}") - raise HTTPException(status_code=500, detail=str(exc)) + raise HTTPException(status_code=500, detail="Internal server error") return EntityOperationResponse( success=True, @@ -111,7 +111,7 @@ async def merge_entities( raise HTTPException(status_code=404, detail=str(exc)) except Exception as exc: log.exception(f"merge_entities failed: {exc}") - raise HTTPException(status_code=500, detail=str(exc)) + raise HTTPException(status_code=500, detail="Internal server error") return EntityOperationResponse( success=True, @@ -150,7 +150,7 @@ async def split_entity( raise HTTPException(status_code=404, detail=str(exc)) except Exception as exc: log.exception(f"split_entity failed: {exc}") - raise HTTPException(status_code=500, detail=str(exc)) + raise HTTPException(status_code=500, detail="Internal server error") return EntityOperationResponse( success=True, @@ -184,7 +184,7 @@ async def suggest_merges( ) except Exception as exc: log.exception(f"suggest_merges failed: {exc}") - raise HTTPException(status_code=500, detail=str(exc)) + raise HTTPException(status_code=500, detail="Internal server error") return SuggestMergesResponse(suggestions=[ MergeSuggestion( diff --git a/api/routers/tenants.py b/api/routers/tenants.py index 7570aa5..a9d044f 100644 --- a/api/routers/tenants.py +++ b/api/routers/tenants.py @@ -44,10 +44,27 @@ async def grant_permission( req: PermissionGrantRequest, current_user=Depends(get_current_user), ): - """Grant a user read access to a document within a tenant.""" - # Only admins or tenant members with admin role can grant permissions - if current_user["role"] != "admin" and current_user["tenant_id"] != tenant_id: + """Grant a user access to a document within a tenant. + + Requires the requesting user to be either: + - a global admin, OR + - the document owner (role='owner' on the target document) + """ + if current_user["tenant_id"] != tenant_id and current_user["role"] != "admin": raise HTTPException(status_code=403, detail="Access denied") + + # Non-admin users must have 'owner' role on the document to grant permissions + if current_user["role"] != "admin": + perm = await db.get_permission( + MONGO_URI, MONGO_DB_PREFIX, tenant_id, + current_user["user_id"], req.doc_id, + ) + if not perm or perm.get("role") != "owner": + raise HTTPException( + status_code=403, + detail="Only document owners or admins can grant permissions", + ) + await db.grant_permission( MONGO_URI, MONGO_DB_PREFIX, tenant_id, req.user_id, req.doc_id, req.role, diff --git a/api/services/chat.py b/api/services/chat.py index e5e9c4f..5bcedd5 100644 --- a/api/services/chat.py +++ b/api/services/chat.py @@ -2,42 +2,211 @@ import asyncio import logging import os +import threading +import time import uuid -from concurrent.futures import ThreadPoolExecutor +from functools import lru_cache from typing import List, Optional from api.db import mongodb as db from api.dependencies import ( MONGO_URI, MONGO_DB_PREFIX, INDEX_SAVE_DIR, FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD, + THREAD_POOL, ) log = logging.getLogger(__name__) -_executor = ThreadPoolExecutor(max_workers=4) +_executor = THREAD_POOL +# ── Object caching ─────────────────────────────────────────────────────────── +# LLM/VLM are API client wrappers — one instance per config is sufficient. +# GBC indexes are heavier (tree + graph + VDB) — cached per document with TTL. -def _query_single_doc_sync(query: str, tenant_id: str, doc_id: str, config_path: str) -> str: - """Run GBC RAG query against a single document (sync, for thread pool).""" +_GBC_CACHE_TTL = int(os.getenv("BOOKRAG_GBC_CACHE_TTL", "600")) # seconds +_GBC_CACHE_MAX = int(os.getenv("BOOKRAG_GBC_CACHE_MAX", "20")) # max cached indexes + + +@lru_cache(maxsize=4) +def _get_system_config(config_path: str): + """Cached system config loader — reloads only when config_path changes.""" from Core.configs.system_config import load_system_config - from Core.configs.falkordb_config import FalkorDBConfig - from Core.Index.GBCIndex import GBC - from Core.rag.gbc_rag import GBCRAG + return load_system_config(config_path) + + +@lru_cache(maxsize=4) +def _get_llm(config_path: str): + """Singleton LLM instance per config file.""" from Core.provider.llm import LLM + cfg = _get_system_config(config_path) + return LLM(cfg.llm) + + +@lru_cache(maxsize=4) +def _get_vlm(config_path: str): + """Singleton VLM instance per config file.""" from Core.provider.vlm import VLM - from Core.configs.rag.gbc_config import GBCRAGConfig + cfg = _get_system_config(config_path) + if hasattr(cfg, "vlm") and cfg.vlm: + return VLM(cfg.vlm) + return None + + +class _GBCCache: + """TTL-bounded LRU cache for per-document GBC indexes.""" + + def __init__(self, max_size: int = 20, ttl: int = 600): + self._lock = threading.Lock() + self._cache: dict[str, tuple[float, object]] = {} # key → (access_time, gbc) + self._max_size = max_size + self._ttl = ttl - cfg = load_system_config(config_path) + def get(self, key: str): + with self._lock: + entry = self._cache.get(key) + if entry is None: + return None + ts, gbc = entry + if time.monotonic() - ts > self._ttl: + del self._cache[key] + return None + self._cache[key] = (time.monotonic(), gbc) + return gbc + + def put(self, key: str, gbc): + with self._lock: + self._cache[key] = (time.monotonic(), gbc) + # Evict oldest if over capacity + if len(self._cache) > self._max_size: + oldest_key = min(self._cache, key=lambda k: self._cache[k][0]) + del self._cache[oldest_key] + + def invalidate(self, key: str): + with self._lock: + self._cache.pop(key, None) + + +_gbc_cache = _GBCCache(max_size=_GBC_CACHE_MAX, ttl=_GBC_CACHE_TTL) + + +def _get_gbc_index(tenant_id: str, doc_id: str, config_path: str): + """Load or return cached GBC index for a specific document.""" + from Core.configs.falkordb_config import FalkorDBConfig + from Core.Index.GBCIndex import GBC + + cache_key = f"{tenant_id}:{doc_id}" + cached = _gbc_cache.get(cache_key) + if cached is not None: + log.debug(f"GBC cache hit: {cache_key}") + return cached + + log.info(f"GBC cache miss: {cache_key} — loading from disk") + cfg = _get_system_config(config_path) + # Create a copy-like config with tenant/doc specifics cfg.tenant_id = tenant_id cfg.doc_id = doc_id cfg.save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") if fdb_host: - cfg.falkordb = FalkorDBConfig(host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD) + cfg.falkordb = FalkorDBConfig( + host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD + ) gbc_index = GBC.load_gbc_index(cfg) - llm = LLM(cfg.llm) - vlm = VLM(cfg.vlm) if hasattr(cfg, "vlm") else None + _gbc_cache.put(cache_key, gbc_index) + return gbc_index + +# ── History relevance constants (tunable via env) ───────────────────────────── +_RECENT_TURNS = int(os.getenv("BOOKRAG_RECENT_TURNS", "3")) # always-include last N pairs +_MAX_OLD_MSGS = int(os.getenv("BOOKRAG_MAX_OLD_MSGS", "4")) # max older msgs to keep +_JACCARD_THRESH = float(os.getenv("BOOKRAG_JACCARD_THRESH", "0.15")) # token-overlap threshold + + +# ── History filtering helpers ───────────────────────────────────────────────── + +def _jaccard_similarity(a: str, b: str) -> float: + """Token-overlap Jaccard similarity — zero-dependency relevance heuristic.""" + tokens_a = set(a.lower().split()) + tokens_b = set(b.lower().split()) + if not tokens_a or not tokens_b: + return 0.0 + return len(tokens_a & tokens_b) / len(tokens_a | tokens_b) + + +def _filter_relevant_history( + query: str, + messages: List[dict], + recent_turns: int = _RECENT_TURNS, + max_old: int = _MAX_OLD_MSGS, + threshold: float = _JACCARD_THRESH, +) -> List[dict]: + """Return the subset of prior messages relevant to *query*. + + Two-tier strategy: + 1. **Recency** — always keep the last ``recent_turns`` user+assistant pairs. + 2. **Relevance** — for older messages, keep those whose content has + Jaccard token-overlap >= *threshold* with the query (capped at *max_old*). + """ + if not messages: + return [] + + recent_cutoff = recent_turns * 2 # 2 messages per turn (user + assistant) + recent = messages[-recent_cutoff:] + older = messages[:-recent_cutoff] if len(messages) > recent_cutoff else [] + + relevant_older = [ + m for m in older + if _jaccard_similarity(query, m.get("content", "")) >= threshold + ][-max_old:] + + return relevant_older + recent + + +# ── Query rewriting (sync, runs inside thread pool) ─────────────────────────── + +def _rewrite_query_sync(query: str, history: List[dict], config_path: str) -> str: + """Use the LLM to rewrite *query* as a self-contained question. + + Resolves pronouns and implicit references using the conversation history. + If the LLM fails or the result is empty, the original query is returned unchanged. + """ + history_text = "\n".join( + f"{m['role'].capitalize()}: {m['content']}" for m in history + ) + prompt = ( + "You are a query rewriter for a document question-answering system.\n" + "Given the conversation history below and the user's latest question, " + "rewrite the question as a single, self-contained question that can be " + "understood without any prior context. Resolve all pronouns, coreferences, " + "and implicit references to named entities mentioned earlier in the conversation. " + "If the question is already fully self-contained, return it unchanged.\n\n" + f"Conversation history:\n{history_text}\n\n" + f"Latest question: {query}\n\n" + "Rewritten question (return ONLY the rewritten question, no preamble or explanation):" + ) + try: + llm = _get_llm(config_path) + rewritten = llm.get_completion(prompt).strip() + if rewritten: + log.info(f"Query rewritten: '{query}' → '{rewritten}'") + return rewritten + except Exception as exc: + log.warning(f"Query rewrite failed ({exc}); using original query.") + return query + + +def _query_single_doc_sync(query: str, tenant_id: str, doc_id: str, config_path: str) -> str: + """Run GBC RAG query against a single document (sync, for thread pool). + + *query* should already be a self-contained, rewritten query when conversation + history is present (see :func:`_rewrite_query_sync`). + """ + from Core.rag.gbc_rag import GBCRAG + from Core.configs.rag.gbc_config import GBCRAGConfig + + gbc_index = _get_gbc_index(tenant_id, doc_id, config_path) + llm = _get_llm(config_path) + vlm = _get_vlm(config_path) rag_cfg = GBCRAGConfig() rag = GBCRAG(llm=llm, vlm=vlm, config=rag_cfg, gbc_index=gbc_index) result = rag.get_GBC_info(query) @@ -53,8 +222,20 @@ async def handle_query( config_path: str, cross_doc: bool = False, ) -> dict: - """Route query to appropriate retrieval mode and store in session.""" - # Ensure session exists + """Route query to appropriate retrieval mode and store in session. + + Memory strategy + --------------- + 1. Load existing session messages from MongoDB (before appending the new one). + 2. Filter to relevant history using :func:`_filter_relevant_history` + (two-tier: recency + Jaccard token-overlap). + 3. If non-empty history, rewrite *query* into a self-contained standalone + question via the LLM (:func:`_rewrite_query_sync`). + 4. Pass the (possibly rewritten) query to the RAG pipeline. + """ + loop = asyncio.get_event_loop() + + # ── Session bootstrap ────────────────────────────────────────────────────── if not session_id: session_id = str(uuid.uuid4()) await db.create_session(MONGO_URI, MONGO_DB_PREFIX, tenant_id, { @@ -63,34 +244,59 @@ async def handle_query( "doc_ids": doc_ids, "messages": [], }) + prior_messages: List[dict] = [] + else: + # Load history BEFORE appending the current user message + session = await db.get_session(MONGO_URI, MONGO_DB_PREFIX, tenant_id, session_id) + prior_messages = session.get("messages", []) if session else [] + + # ── History filtering + query rewriting ─────────────────────────────────── + relevant_history = _filter_relevant_history(query, prior_messages) + if relevant_history: + log.debug( + f"Session {session_id}: {len(relevant_history)} relevant history messages " + f"out of {len(prior_messages)} total — rewriting query." + ) + effective_query = await loop.run_in_executor( + _executor, _rewrite_query_sync, query, relevant_history, config_path + ) + else: + effective_query = query - # Store user message + # ── Persist user message (original, for readability) ────────────────────── await db.append_message(MONGO_URI, MONGO_DB_PREFIX, tenant_id, session_id, {"role": "user", "content": query}) - loop = asyncio.get_event_loop() - + # ── RAG retrieval ───────────────────────────────────────────────────────── if cross_doc or len(doc_ids) > 1: - # Phase 3: parallel per-doc queries, answers synthesised into one response - # Cap at 5 docs to prevent overloading GPU services - target_docs = doc_ids[:5] + # Parallel per-doc queries, answers synthesised into one response + target_docs = doc_ids[:5] # cap to avoid GPU overload answers = await asyncio.gather(*[ - loop.run_in_executor(_executor, _query_single_doc_sync, query, tenant_id, did, config_path) + loop.run_in_executor( + _executor, _query_single_doc_sync, effective_query, tenant_id, did, config_path + ) for did in target_docs ]) - answer = "\n\n---\n\n".join(f"[Document: {did}]\n{ans}" for did, ans in zip(target_docs, answers)) + answer = "\n\n---\n\n".join( + f"[Document: {did}]\n{ans}" for did, ans in zip(target_docs, answers) + ) else: doc_id = doc_ids[0] if doc_ids else None if not doc_id: answer = "No accessible documents found for your query." else: answer = await loop.run_in_executor( - _executor, _query_single_doc_sync, query, tenant_id, doc_id, config_path + _executor, _query_single_doc_sync, effective_query, tenant_id, doc_id, config_path ) - # Store assistant message + # ── Persist assistant message ────────────────────────────────────────────── await db.append_message(MONGO_URI, MONGO_DB_PREFIX, tenant_id, session_id, {"role": "assistant", "content": answer}) - return {"answer": answer, "session_id": session_id, "doc_ids_used": doc_ids} + return { + "answer": answer, + "session_id": session_id, + "doc_ids_used": doc_ids, + "rewritten_query": effective_query if effective_query != query else None, + } diff --git a/api/services/entity_editor.py b/api/services/entity_editor.py index c5857ba..d05b19b 100644 --- a/api/services/entity_editor.py +++ b/api/services/entity_editor.py @@ -14,18 +14,18 @@ import logging import os from collections import defaultdict -from concurrent.futures import ThreadPoolExecutor from difflib import SequenceMatcher from typing import Dict, List, Optional from api.dependencies import ( FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD, INDEX_SAVE_DIR, MONGO_URI, MONGO_DB_PREFIX, + THREAD_POOL, ) from api.db import mongodb as db log = logging.getLogger(__name__) -_executor = ThreadPoolExecutor(max_workers=2) +_executor = THREAD_POOL # Per-document asyncio lock — keyed by "{tenant_id}:{doc_id}" _doc_locks: Dict[str, asyncio.Lock] = defaultdict(asyncio.Lock) diff --git a/api/services/entity_resolution.py b/api/services/entity_resolution.py index a861abe..b78a2e2 100644 --- a/api/services/entity_resolution.py +++ b/api/services/entity_resolution.py @@ -10,11 +10,12 @@ import asyncio import logging import os -from concurrent.futures import ThreadPoolExecutor from typing import List +from api.dependencies import THREAD_POOL + log = logging.getLogger(__name__) -_executor = ThreadPoolExecutor(max_workers=2) +_executor = THREAD_POOL RESOLUTION_THRESHOLD = float(os.getenv("BOOKRAG_ENTITY_RESOLUTION_THRESHOLD", "0.85")) GLOBAL_VDB_DIR = os.getenv("BOOKRAG_GLOBAL_VDB_DIR", "./indices") diff --git a/api/services/indexing.py b/api/services/indexing.py index e065b90..9b718b3 100644 --- a/api/services/indexing.py +++ b/api/services/indexing.py @@ -3,13 +3,12 @@ import logging import os import shutil -from concurrent.futures import ThreadPoolExecutor from api.db import mongodb as db -from api.dependencies import MONGO_URI, MONGO_DB_PREFIX, INDEX_SAVE_DIR +from api.dependencies import MONGO_URI, MONGO_DB_PREFIX, INDEX_SAVE_DIR, THREAD_POOL log = logging.getLogger(__name__) -_executor = ThreadPoolExecutor(max_workers=2) +_executor = THREAD_POOL def _build_index_sync(pdf_path: str, save_path: str, tenant_id: str, doc_id: str, config_path: str): From 0bc18ea683d2e610d5c7a5d4a8b5e55c24762772 Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Tue, 3 Mar 2026 02:53:56 +0700 Subject: [PATCH 05/11] feat: implement refresh token management with storage, validation, and revocation; enhance document upload size handling --- api/db/mongodb.py | 46 +++++++++++++++++++++++ api/dependencies.py | 31 ++++++++++++++++ api/models/requests.py | 5 +++ api/routers/auth.py | 67 ++++++++++++++++++++++++++++++---- api/routers/documents.py | 21 ++++++++++- api/services/entity_editor.py | 69 ++++++++++++++++++++++++----------- 6 files changed, 209 insertions(+), 30 deletions(-) diff --git a/api/db/mongodb.py b/api/db/mongodb.py index eb5c0a2..65198b2 100644 --- a/api/db/mongodb.py +++ b/api/db/mongodb.py @@ -1,4 +1,5 @@ """Async MongoDB client and CRUD helpers using Motor.""" +import hashlib import logging import os from typing import List, Optional @@ -61,6 +62,10 @@ async def ensure_indexes(uri: str, system_db: str, db_prefix: str, tenant_ids: L await tdb["sessions"].create_index("user_id") await tdb["entity_edits"].create_index("doc_id") await tdb["entity_edits"].create_index("ts") + # Refresh token revocation index + await tdb["refresh_tokens"].create_index("token_hash", unique=True) + await tdb["refresh_tokens"].create_index("user_id") + await tdb["refresh_tokens"].create_index("expires_at", expireAfterSeconds=0) log.info(f"Ensured indexes on {len(tenant_ids)} tenant database(s)") @@ -197,3 +202,44 @@ async def log_entity_edit(uri: str, db_prefix: str, tenant_id: str, edit_record: edit_record["ts"] = datetime.now(timezone.utc) await db["entity_edits"].insert_one(edit_record) + + +# ── Refresh Token Management ──────────────────────────────────────────────── + +def _hash_token(token: str) -> str: + """SHA-256 hash of the raw refresh token — we never store plaintext.""" + return hashlib.sha256(token.encode()).hexdigest() + + +async def store_refresh_token( + uri: str, db_prefix: str, tenant_id: str, + user_id: str, token: str, expires_at: datetime, +): + """Store a hashed refresh token so it can be revoked later.""" + db = get_tenant_db(uri, db_prefix, tenant_id) + await db["refresh_tokens"].insert_one({ + "token_hash": _hash_token(token), + "user_id": user_id, + "created_at": datetime.now(timezone.utc), + "expires_at": expires_at, + }) + + +async def is_refresh_token_valid(uri: str, db_prefix: str, tenant_id: str, token: str) -> bool: + """Return True if the token hash exists (i.e. has NOT been revoked).""" + db = get_tenant_db(uri, db_prefix, tenant_id) + doc = await db["refresh_tokens"].find_one({"token_hash": _hash_token(token)}) + return doc is not None + + +async def revoke_refresh_token(uri: str, db_prefix: str, tenant_id: str, token: str): + """Revoke a single refresh token by removing it.""" + db = get_tenant_db(uri, db_prefix, tenant_id) + await db["refresh_tokens"].delete_one({"token_hash": _hash_token(token)}) + + +async def revoke_all_refresh_tokens(uri: str, db_prefix: str, tenant_id: str, user_id: str): + """Revoke all refresh tokens for a user (e.g. password change).""" + db = get_tenant_db(uri, db_prefix, tenant_id) + result = await db["refresh_tokens"].delete_many({"user_id": user_id}) + log.info(f"Revoked {result.deleted_count} refresh tokens for user {user_id}") diff --git a/api/dependencies.py b/api/dependencies.py index afb996e..5b338a4 100644 --- a/api/dependencies.py +++ b/api/dependencies.py @@ -25,6 +25,7 @@ SECRET_KEY = _secret ALGORITHM = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES = int(os.getenv("BOOKRAG_TOKEN_EXPIRE", "60")) +REFRESH_TOKEN_EXPIRE_DAYS = int(os.getenv("BOOKRAG_REFRESH_TOKEN_DAYS", "7")) MONGO_URI = os.getenv("BOOKRAG_MONGO_URI", "mongodb://localhost:27017") MONGO_DB_PREFIX = os.getenv("BOOKRAG_MONGO_PREFIX", "bookrag") @@ -62,9 +63,36 @@ def create_access_token(data: dict) -> str: from datetime import datetime, timedelta, timezone payload = data.copy() payload["exp"] = datetime.now(timezone.utc) + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) + payload["type"] = "access" return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM) +def create_refresh_token(data: dict) -> str: + """Create a long-lived refresh token (default 7 days).""" + from datetime import datetime, timedelta, timezone + payload = data.copy() + payload["exp"] = datetime.now(timezone.utc) + timedelta(days=REFRESH_TOKEN_EXPIRE_DAYS) + payload["type"] = "refresh" + return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM) + + +def decode_refresh_token(token: str) -> dict: + """Decode and validate a refresh token. Raises HTTPException on failure.""" + try: + payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM]) + if payload.get("type") != "refresh": + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Invalid token type — expected refresh token", + ) + return payload + except JWTError: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Invalid or expired refresh token", + ) + + # ── Current-user dependency ─────────────────────────────────────────────────── async def get_current_user(token: str = Depends(oauth2_scheme)) -> dict: @@ -75,6 +103,9 @@ async def get_current_user(token: str = Depends(oauth2_scheme)) -> dict: ) try: payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM]) + # Reject refresh tokens used as access tokens + if payload.get("type") == "refresh": + raise credentials_exc user_id: str = payload.get("sub") tenant_id: str = payload.get("tenant_id") role: str = payload.get("role", "user") diff --git a/api/models/requests.py b/api/models/requests.py index 91f5905..f54d3ce 100644 --- a/api/models/requests.py +++ b/api/models/requests.py @@ -36,9 +36,14 @@ class LoginRequest(BaseModel): class TokenResponse(BaseModel): access_token: str + refresh_token: str token_type: str = "bearer" +class RefreshRequest(BaseModel): + refresh_token: str + + # ── Tenant ──────────────────────────────────────────────────────────────────── class TenantCreateRequest(BaseModel): diff --git a/api/routers/auth.py b/api/routers/auth.py index 5ffea7e..aad276a 100644 --- a/api/routers/auth.py +++ b/api/routers/auth.py @@ -1,13 +1,17 @@ -"""Authentication router: register and login endpoints.""" +"""Authentication router: register, login, refresh, and logout endpoints.""" import logging +from datetime import datetime, timedelta, timezone + from fastapi import APIRouter, Depends, HTTPException, status -from api.models.requests import RegisterRequest, LoginRequest, TokenResponse +from api.models.requests import RegisterRequest, LoginRequest, TokenResponse, RefreshRequest from api.db import mongodb as db from api.dependencies import ( MONGO_URI, MONGO_DB_PREFIX, MONGO_SYSTEM_DB, - hash_password, verify_password, create_access_token, - rate_limit_login, + hash_password, verify_password, + create_access_token, create_refresh_token, decode_refresh_token, + REFRESH_TOKEN_EXPIRE_DAYS, + rate_limit_login, get_current_user, ) log = logging.getLogger(__name__) @@ -40,7 +44,7 @@ async def register(req: RegisterRequest): @router.post("/login", response_model=TokenResponse, dependencies=[Depends(rate_limit_login)]) async def login(req: LoginRequest): - """Authenticate and return a JWT access token.""" + """Authenticate and return JWT access + refresh tokens.""" user = await db.get_user_by_username(MONGO_URI, MONGO_DB_PREFIX, req.tenant_id, req.username) if not user or not verify_password(req.password, user["hashed_password"]): raise HTTPException( @@ -48,10 +52,57 @@ async def login(req: LoginRequest): detail="Incorrect username or password", headers={"WWW-Authenticate": "Bearer"}, ) - token = create_access_token({ + claims = { "sub": user["user_id"], "tenant_id": user["tenant_id"], "role": user.get("role", "user"), - }) - return TokenResponse(access_token=token) + } + access = create_access_token(claims) + refresh = create_refresh_token(claims) + + # Store refresh token hash for revocation support + expires_at = datetime.now(timezone.utc) + timedelta(days=REFRESH_TOKEN_EXPIRE_DAYS) + await db.store_refresh_token( + MONGO_URI, MONGO_DB_PREFIX, req.tenant_id, + user["user_id"], refresh, expires_at, + ) + return TokenResponse(access_token=access, refresh_token=refresh) + + +@router.post("/refresh", response_model=TokenResponse) +async def refresh_token(req: RefreshRequest): + """Exchange a valid refresh token for a new access + refresh token pair. + + The old refresh token is revoked (single-use rotation). + """ + payload = decode_refresh_token(req.refresh_token) + tenant_id = payload.get("tenant_id", "") + user_id = payload.get("sub", "") + + # Check the token hasn't been revoked + if not await db.is_refresh_token_valid(MONGO_URI, MONGO_DB_PREFIX, tenant_id, req.refresh_token): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Refresh token has been revoked", + ) + + # Revoke old refresh token (single-use rotation) + await db.revoke_refresh_token(MONGO_URI, MONGO_DB_PREFIX, tenant_id, req.refresh_token) + + # Issue new pair + claims = {"sub": user_id, "tenant_id": tenant_id, "role": payload.get("role", "user")} + new_access = create_access_token(claims) + new_refresh = create_refresh_token(claims) + + expires_at = datetime.now(timezone.utc) + timedelta(days=REFRESH_TOKEN_EXPIRE_DAYS) + await db.store_refresh_token(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id, new_refresh, expires_at) + + return TokenResponse(access_token=new_access, refresh_token=new_refresh) + + +@router.post("/logout", status_code=status.HTTP_204_NO_CONTENT) +async def logout(req: RefreshRequest, current_user: dict = Depends(get_current_user)): + """Revoke the provided refresh token (logout).""" + tenant_id = current_user["tenant_id"] + await db.revoke_refresh_token(MONGO_URI, MONGO_DB_PREFIX, tenant_id, req.refresh_token) diff --git a/api/routers/documents.py b/api/routers/documents.py index fbe4b09..488f8a2 100644 --- a/api/routers/documents.py +++ b/api/routers/documents.py @@ -21,6 +21,9 @@ CONFIG_PATH = os.getenv("BOOKRAG_CONFIG_PATH", "config/gbc.yaml") +# Max upload size in bytes — default 200 MB +_MAX_UPLOAD_BYTES = int(os.getenv("BOOKRAG_MAX_UPLOAD_MB", "200")) * 1024 * 1024 + async def _save_and_register_file( file: UploadFile, @@ -28,14 +31,30 @@ async def _save_and_register_file( user_id: str, tenant_upload_dir: str, ) -> dict: - """Save one uploaded file to the tenant upload dir and return doc metadata.""" + """Save one uploaded file to the tenant upload dir and return doc metadata. + + Raises ``HTTPException(413)`` if the file exceeds ``_MAX_UPLOAD_BYTES``. + """ doc_id = str(uuid.uuid4()) # Preserve original filename; prefix with doc_id to avoid collisions safe_name = os.path.basename(file.filename) pdf_path = os.path.join(tenant_upload_dir, f"{doc_id}_{safe_name}") + total_size = 0 async with aiofiles.open(pdf_path, "wb") as out: while chunk := await file.read(1024 * 1024): # 1 MB chunks + total_size += len(chunk) + if total_size > _MAX_UPLOAD_BYTES: + # Clean up partial file + await out.close() + try: + os.remove(pdf_path) + except OSError: + pass + raise HTTPException( + status_code=413, + detail=f"File exceeds maximum upload size of {_MAX_UPLOAD_BYTES // (1024*1024)} MB", + ) await out.write(chunk) return { diff --git a/api/services/entity_editor.py b/api/services/entity_editor.py index d05b19b..28b8221 100644 --- a/api/services/entity_editor.py +++ b/api/services/entity_editor.py @@ -30,6 +30,11 @@ # Per-document asyncio lock — keyed by "{tenant_id}:{doc_id}" _doc_locks: Dict[str, asyncio.Lock] = defaultdict(asyncio.Lock) +# Dedup tracker: prevents redundant VDB rebuilds when multiple edits fire +# in quick succession on the same document. +_rebuild_pending: set[str] = set() +_rebuild_pending_lock = asyncio.Lock() + def _get_lock(tenant_id: str, doc_id: str) -> asyncio.Lock: return _doc_locks[f"{tenant_id}:{doc_id}"] @@ -102,6 +107,26 @@ def _rebuild_vdb_sync(tenant_id: str, doc_id: str, config_path: str) -> None: log.warning(f"VDB rebuild failed for {tenant_id}/{doc_id}: {exc}") +async def _schedule_vdb_rebuild(tenant_id: str, doc_id: str, config_path: str) -> None: + """Await a VDB rebuild, deduplicating concurrent requests for the same doc. + + If a rebuild is already in-flight for this ``tenant_id:doc_id``, the call + is skipped (the already-running rebuild will pick up the latest graph JSON). + """ + key = f"{tenant_id}:{doc_id}" + async with _rebuild_pending_lock: + if key in _rebuild_pending: + log.debug(f"VDB rebuild already pending for {key} — skipping") + return + _rebuild_pending.add(key) + try: + loop = asyncio.get_event_loop() + await loop.run_in_executor(_executor, _rebuild_vdb_sync, tenant_id, doc_id, config_path) + finally: + async with _rebuild_pending_lock: + _rebuild_pending.discard(key) + + # ── List entities ───────────────────────────────────────────────────────────── def _list_entities_sync(tenant_id: str, doc_id: str, config_path: str) -> List[dict]: @@ -178,8 +203,7 @@ async def rename_entity( "before": {"entity_name": entity_name, "entity_type": entity_type}, "after": {"entity_name": new_entity_name, "entity_type": new_entity_type or entity_type}, }) - loop = asyncio.get_event_loop() - loop.run_in_executor(_executor, _rebuild_vdb_sync, tenant_id, doc_id, config_path) + await _schedule_vdb_rebuild(tenant_id, doc_id, config_path) return result @@ -253,8 +277,7 @@ async def split_entity( "before": {"entity_name": entity_name, "entity_type": entity_type}, "after": [{"entity_name": e["entity_name"], "entity_type": e["entity_type"]} for e in result], }) - loop = asyncio.get_event_loop() - loop.run_in_executor(_executor, _rebuild_vdb_sync, tenant_id, doc_id, config_path) + await _schedule_vdb_rebuild(tenant_id, doc_id, config_path) return result @@ -273,21 +296,26 @@ def _suggest_merges_sync( suggestions: List[dict] = [] - # String similarity - n = len(entities) - for i in range(n): - for j in range(i + 1, n): - a, b = entities[i], entities[j] - if a["entity_type"] != b["entity_type"]: - continue - score = SequenceMatcher(None, a["entity_name"].lower(), b["entity_name"].lower()).ratio() - if score >= min_score: - suggestions.append({ - "entity_a": {"entity_name": a["entity_name"], "entity_type": a["entity_type"]}, - "entity_b": {"entity_name": b["entity_name"], "entity_type": b["entity_type"]}, - "score": round(score, 4), - "method": "string_similarity", - }) + # Pre-group entities by type so we only compare within same-type groups + # This reduces O(n²) to O(Σ nᵢ²) where nᵢ is entity count per type + by_type: Dict[str, List[dict]] = defaultdict(list) + for ent in entities: + by_type[ent["entity_type"]].append(ent) + + # String similarity — only within same-type groups + for _etype, group in by_type.items(): + n = len(group) + for i in range(n): + for j in range(i + 1, n): + a, b = group[i], group[j] + score = SequenceMatcher(None, a["entity_name"].lower(), b["entity_name"].lower()).ratio() + if score >= min_score: + suggestions.append({ + "entity_a": {"entity_name": a["entity_name"], "entity_type": a["entity_type"]}, + "entity_b": {"entity_name": b["entity_name"], "entity_type": b["entity_type"]}, + "score": round(score, 4), + "method": "string_similarity", + }) # Embedding similarity (optional) if use_embeddings: @@ -433,7 +461,6 @@ async def merge_entities( "before": source_entities, "after": {"entity_name": canonical_name, "entity_type": canonical_type}, }) - loop = asyncio.get_event_loop() - loop.run_in_executor(_executor, _rebuild_vdb_sync, tenant_id, doc_id, config_path) + await _schedule_vdb_rebuild(tenant_id, doc_id, config_path) return result From bef06be98a6cb5356d290377701397ab2687ff5c Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Tue, 3 Mar 2026 03:51:08 +0700 Subject: [PATCH 06/11] feat: Enhance API request/response models and add session management features - Updated Pydantic models in `requests.py` to include detailed field descriptions and added new fields for document metadata (created_at, document_date). - Introduced new session management endpoints in `chat.py` for listing and deleting chat sessions, including pagination support. - Enhanced message retrieval in `get_messages` to support pagination and return total message count. - Added document deletion functionality in `documents.py`, including cleanup of associated files and database records. - Updated indexing service to propagate document dates for temporal awareness during indexing. - Modified various configuration files to update model names, API endpoints, and parameters for improved performance and compatibility. --- Core/configs/system_config.py | 8 ++ api/db/mongodb.py | 80 ++++++++++++++++++- api/main.py | 143 +++++++++++++++++++++++++++++++--- api/models/requests.py | 54 +++++++++---- api/routers/chat.py | 56 +++++++++++-- api/routers/documents.py | 115 ++++++++++++++++++++++++--- api/services/chat.py | 32 +++++++- api/services/indexing.py | 11 ++- config/bm25.yaml | 16 ++-- config/gbc_wo_er.yaml | 14 ++-- config/gbc_wo_graph.yaml | 14 ++-- config/gbc_wo_plan.yaml | 14 ++-- config/gbc_wo_selector.yaml | 14 ++-- config/gbc_wo_text.yaml | 14 ++-- config/graph.yaml | 18 ++--- config/mm.yaml | 33 ++++---- config/pdf_vanilla.yaml | 14 ++-- config/raptor.yaml | 16 ++-- config/tree.yaml | 37 +++++---- config/vanilla.yaml | 16 ++-- 20 files changed, 561 insertions(+), 158 deletions(-) diff --git a/Core/configs/system_config.py b/Core/configs/system_config.py index b139907..3aa0e84 100644 --- a/Core/configs/system_config.py +++ b/Core/configs/system_config.py @@ -11,6 +11,7 @@ from Core.configs.mongodb_config import MongoDBConfig from pydantic import BaseModel, Field from typing import Optional, Any +from datetime import datetime class SystemConfig(BaseModel): @@ -49,6 +50,13 @@ class SystemConfig(BaseModel): tenant_id: Optional[str] = None doc_id: Optional[str] = None + # Document temporal metadata (optional, for recency-aware RAG) + document_date: Optional[datetime] = Field( + default=None, + description="Original authoring/publishing date of the document. " + "Used for temporal awareness in cross-document RAG queries.", + ) + # Database configurations falkordb: Any = Field(default_factory=FalkorDBConfig) mongodb: Any = Field(default_factory=MongoDBConfig) diff --git a/api/db/mongodb.py b/api/db/mongodb.py index 65198b2..cddb116 100644 --- a/api/db/mongodb.py +++ b/api/db/mongodb.py @@ -126,13 +126,38 @@ async def get_document_raw_path(uri: str, db_prefix: str, tenant_id: str, doc_id return doc.get("pdf_path") if doc else None -async def list_documents(uri: str, db_prefix: str, tenant_id: str, user_id: str) -> List[dict]: +async def list_documents( + uri: str, db_prefix: str, tenant_id: str, user_id: str, + limit: int = 50, offset: int = 0, +) -> tuple[list[dict], int]: + """Return paginated docs accessible to *user_id*, sorted by document_date desc. + + Returns ``(docs, total_count)``. Documents without ``document_date`` + fall back to ``created_at``; documents with neither sort last. + """ db = get_tenant_db(uri, db_prefix, tenant_id) - # Return docs the user has access to via permissions perm_cursor = db["permissions"].find({"user_id": user_id}) doc_ids = [p["doc_id"] async for p in perm_cursor] - cursor = db["documents"].find({"doc_id": {"$in": doc_ids}}) - return [d async for d in cursor] + filt = {"doc_id": {"$in": doc_ids}} + total = await db["documents"].count_documents(filt) + cursor = ( + db["documents"] + .find(filt) + .sort([("document_date", pymongo.DESCENDING), ("created_at", pymongo.DESCENDING)]) + .skip(offset) + .limit(limit) + ) + docs = [d async for d in cursor] + return docs, total + + +async def delete_document(uri: str, db_prefix: str, tenant_id: str, doc_id: str): + """Delete a document and all associated permissions, sessions, entity edits.""" + db = get_tenant_db(uri, db_prefix, tenant_id) + await db["documents"].delete_one({"doc_id": doc_id}) + await db["permissions"].delete_many({"doc_id": doc_id}) + await db["entity_edits"].delete_many({"doc_id": doc_id}) + log.info(f"Deleted document '{doc_id}' and related records from tenant '{tenant_id}'") # ── Permission CRUD ─────────────────────────────────────────────────────────── @@ -186,6 +211,53 @@ async def get_session(uri: str, db_prefix: str, tenant_id: str, session_id: str) return await db["sessions"].find_one({"session_id": session_id}) +async def list_sessions( + uri: str, db_prefix: str, tenant_id: str, user_id: str, + limit: int = 50, offset: int = 0, +) -> tuple[list[dict], int]: + """Return paginated sessions for *user_id*, newest first.""" + db = get_tenant_db(uri, db_prefix, tenant_id) + filt = {"user_id": user_id} + total = await db["sessions"].count_documents(filt) + cursor = ( + db["sessions"] + .find(filt, {"messages": 0}) # exclude messages array for listing + .sort("created_at", pymongo.DESCENDING) + .skip(offset) + .limit(limit) + ) + sessions = [s async for s in cursor] + return sessions, total + + +async def delete_session(uri: str, db_prefix: str, tenant_id: str, session_id: str): + """Delete a session and all its messages.""" + db = get_tenant_db(uri, db_prefix, tenant_id) + await db["sessions"].delete_one({"session_id": session_id}) + + +async def recover_stale_indexing(uri: str, db_prefix: str, tenant_ids: List[str]) -> int: + """Reset docs stuck in 'indexing' status to 'error' — called at startup. + + If the server crashed mid-indexing, those docs will never complete. + Returns the total number of documents recovered across all tenants. + """ + client = get_client(uri) + recovered = 0 + for tid in tenant_ids: + tdb = client[f"{db_prefix}_{tid}"] + result = await tdb["documents"].update_many( + {"status": "indexing"}, + {"$set": { + "status": "error", + "error": "Indexing interrupted by server restart — please re-upload", + "updated_at": datetime.now(timezone.utc), + }}, + ) + recovered += result.modified_count + return recovered + + # ── Entity Edit Audit Log ───────────────────────────────────────────────────── async def log_entity_edit(uri: str, db_prefix: str, tenant_id: str, edit_record: dict): diff --git a/api/main.py b/api/main.py index d3a585c..758fe8d 100644 --- a/api/main.py +++ b/api/main.py @@ -1,31 +1,111 @@ """BookRAG FastAPI application entry point.""" import logging import os +import uuid as _uuid +import json from contextlib import asynccontextmanager +import yaml +from starlette.middleware.base import BaseHTTPMiddleware +from starlette.requests import Request +from starlette.responses import Response from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from api.db import mongodb as db -from api.dependencies import MONGO_URI, MONGO_DB_PREFIX, MONGO_SYSTEM_DB +from api.dependencies import MONGO_URI, MONGO_DB_PREFIX, MONGO_SYSTEM_DB, THREAD_POOL from api.routers import auth, documents, chat, tenants, entities -logging.basicConfig( - level=logging.INFO, - format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", -) + +# ── Structured JSON logging ────────────────────────────────────────────────── + +class _JSONFormatter(logging.Formatter): + """Emit each log record as a single JSON line.""" + + def format(self, record: logging.LogRecord) -> str: + obj = { + "ts": self.formatTime(record, self.datefmt), + "level": record.levelname, + "logger": record.name, + "msg": record.getMessage(), + } + if hasattr(record, "request_id"): + obj["request_id"] = record.request_id + if record.exc_info and record.exc_info[0] is not None: + obj["exc"] = self.formatException(record.exc_info) + return json.dumps(obj, default=str) + + +_log_level = os.getenv("BOOKRAG_LOG_LEVEL", "INFO").upper() +_handler = logging.StreamHandler() +_handler.setFormatter(_JSONFormatter()) +logging.root.handlers = [_handler] +logging.root.setLevel(getattr(logging, _log_level, logging.INFO)) log = logging.getLogger(__name__) +# ── Config validation ──────────────────────────────────────────────────────── + +_CONFIG_PATH = os.getenv("BOOKRAG_CONFIG_PATH", "config/gbc.yaml") +_CONFIG_REQUIRED_KEYS = {"llm", "vlm"} # top-level sections that must exist + + +def _validate_config(path: str): + """Validate YAML config at startup — fail fast on missing required sections.""" + if not os.path.isfile(path): + raise RuntimeError(f"Config file not found: {path}") + with open(path) as f: + raw = yaml.safe_load(f) + if not isinstance(raw, dict): + raise RuntimeError(f"Config file is not a valid YAML mapping: {path}") + missing = _CONFIG_REQUIRED_KEYS - raw.keys() + if missing: + raise RuntimeError(f"Config file '{path}' is missing required sections: {missing}") + log.info(f"Config validated: {path}") + + +# ── Request-ID middleware ──────────────────────────────────────────────────── + +class _RequestIDMiddleware(BaseHTTPMiddleware): + """Inject an ``X-Request-ID`` header (echo or generate) and attach to log context.""" + + async def dispatch(self, request: Request, call_next): + req_id = request.headers.get("X-Request-ID") or str(_uuid.uuid4()) + # Make request_id available in logging context (thread-local filter) + _request_id_ctx.set(req_id) + response: Response = await call_next(request) + response.headers["X-Request-ID"] = req_id + return response + + +import contextvars +_request_id_ctx: contextvars.ContextVar[str] = contextvars.ContextVar("request_id", default="-") + + +class _RequestIDFilter(logging.Filter): + def filter(self, record: logging.LogRecord) -> bool: + record.request_id = _request_id_ctx.get("-") # type: ignore[attr-defined] + return True + + +logging.root.addFilter(_RequestIDFilter()) + + +# ── Lifespan ───────────────────────────────────────────────────────────────── + @asynccontextmanager async def lifespan(app: FastAPI): """Startup and shutdown lifecycle.""" log.info("BookRAG API starting up...") + # Validate config + _validate_config(_CONFIG_PATH) + # Ensure upload and index directories exist os.makedirs(os.getenv("BOOKRAG_UPLOAD_DIR", "./uploads"), exist_ok=True) os.makedirs(os.getenv("BOOKRAG_INDEX_DIR", "./indices"), exist_ok=True) - # Build MongoDB indexes for all known tenants + # Build MongoDB indexes and recover stale indexing for all known tenants + tenant_ids: list[str] = [] try: sdb = db.get_system_db(MONGO_URI, MONGO_SYSTEM_DB) tenant_ids = [t["tenant_id"] async for t in sdb["tenants"].find({}, {"tenant_id": 1})] @@ -33,9 +113,22 @@ async def lifespan(app: FastAPI): except Exception as exc: log.warning(f"MongoDB index creation skipped: {exc}") + # Recover docs stuck in "indexing" status from a previous crash + if tenant_ids: + try: + recovered = await db.recover_stale_indexing(MONGO_URI, MONGO_DB_PREFIX, tenant_ids) + if recovered: + log.warning(f"Recovered {recovered} stale indexing document(s) → status='error'") + except Exception as exc: + log.warning(f"Stale indexing recovery skipped: {exc}") + yield - log.info("BookRAG API shutting down...") + + # Graceful shutdown: finish running tasks, don't cancel them + log.info("BookRAG API shutting down — draining thread pool...") + THREAD_POOL.shutdown(wait=True, cancel_futures=False) await db.close_client() + log.info("BookRAG API shut down cleanly.") app = FastAPI( @@ -45,6 +138,9 @@ async def lifespan(app: FastAPI): lifespan=lifespan, ) +# Request-ID middleware (must be added before CORS) +app.add_middleware(_RequestIDMiddleware) + # CORS — set BOOKRAG_CORS_ORIGINS to a comma-separated list of allowed origins _cors_raw = os.getenv("BOOKRAG_CORS_ORIGINS", "http://localhost:3000,http://localhost:8000") _cors_origins = [o.strip() for o in _cors_raw.split(",") if o.strip()] @@ -53,7 +149,6 @@ async def lifespan(app: FastAPI): "CORS allow_origins contains '*'. This is insecure with credentials=True. " "Set BOOKRAG_CORS_ORIGINS to explicit origins in production." ) - # Wildcard + credentials is rejected by browsers; fall back to no-credentials mode _cors_credentials = False else: _cors_credentials = True @@ -63,7 +158,7 @@ async def lifespan(app: FastAPI): allow_origins=_cors_origins, allow_credentials=_cors_credentials, allow_methods=["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"], - allow_headers=["Authorization", "Content-Type"], + allow_headers=["Authorization", "Content-Type", "X-Request-ID"], ) # Routers @@ -76,5 +171,33 @@ async def lifespan(app: FastAPI): @app.get("/health") async def health(): - return {"status": "ok", "service": "BookRAG API"} + """Deep health check — verify MongoDB and FalkorDB connectivity.""" + checks: dict = {"service": "BookRAG API"} + + # MongoDB ping + try: + client = db.get_client(MONGO_URI) + await client.admin.command("ping") + checks["mongodb"] = "ok" + except Exception as exc: + checks["mongodb"] = f"error: {exc}" + + # FalkorDB ping (optional — only if host is configured) + fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") + if fdb_host: + try: + from api.dependencies import FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD + import falkordb + fdb = falkordb.FalkorDB( + host=FALKORDB_HOST, port=FALKORDB_PORT, + password=FALKORDB_PASSWORD or None, + ) + fdb.connection.ping() + checks["falkordb"] = "ok" + except Exception as exc: + checks["falkordb"] = f"error: {exc}" + + overall = "ok" if all(v == "ok" for k, v in checks.items() if k != "service") else "degraded" + checks["status"] = overall + return checks diff --git a/api/models/requests.py b/api/models/requests.py index f54d3ce..a1cdcae 100644 --- a/api/models/requests.py +++ b/api/models/requests.py @@ -1,4 +1,5 @@ """Pydantic request and response models for the BookRAG API.""" +from datetime import datetime from typing import List, Optional from pydantic import BaseModel, Field, field_validator @@ -35,9 +36,9 @@ class LoginRequest(BaseModel): class TokenResponse(BaseModel): - access_token: str - refresh_token: str - token_type: str = "bearer" + access_token: str = Field(..., description="Short-lived JWT access token (default 60 min)") + refresh_token: str = Field(..., description="Long-lived refresh token for rotation (default 7 days)") + token_type: str = Field(default="bearer", description="OAuth2 token type") class RefreshRequest(BaseModel): @@ -61,15 +62,21 @@ class TenantResponse(BaseModel): # ── Document ────────────────────────────────────────────────────────────────── class DocumentResponse(BaseModel): - doc_id: str - filename: str - status: str # pending | indexing | ready | error - error: Optional[str] = None + doc_id: str = Field(..., description="Unique document identifier") + filename: str = Field(..., description="Original filename") + status: str = Field(..., description="Indexing status: pending | indexing | ready | error") + error: Optional[str] = Field(default=None, description="Error message if status is 'error'") + created_at: Optional[datetime] = Field(default=None, description="Upload timestamp (UTC)") + document_date: Optional[datetime] = Field( + default=None, + description="User-provided original authoring/publishing date of the document. " + "Used for temporal awareness in cross-document RAG.", + ) class BatchUploadResponse(BaseModel): - uploaded: List["DocumentResponse"] - failed: List[dict] = Field(default_factory=list) # {"filename": ..., "error": ...} + uploaded: List["DocumentResponse"] = Field(..., description="Successfully uploaded documents") + failed: List[dict] = Field(default_factory=list, description="Files that failed: [{filename, error}]") class PermissionGrantRequest(BaseModel): @@ -81,17 +88,17 @@ class PermissionGrantRequest(BaseModel): # ── Chat ────────────────────────────────────────────────────────────────────── class ChatQueryRequest(BaseModel): - query: str = Field(..., min_length=1, max_length=_QUERY_MAX) - session_id: Optional[str] = Field(default=None, max_length=_SHORT_STR) - doc_ids: Optional[List[str]] = None # restrict to specific docs; None = all accessible - cross_doc: bool = False # use global cross-document graph + query: str = Field(..., min_length=1, max_length=_QUERY_MAX, description="User question") + session_id: Optional[str] = Field(default=None, max_length=_SHORT_STR, description="Existing session ID for history-aware queries") + doc_ids: Optional[List[str]] = Field(default=None, description="Restrict to specific docs; None = all accessible") + cross_doc: bool = Field(default=False, description="Use cross-document retrieval mode") class ChatQueryResponse(BaseModel): - answer: str - session_id: str - doc_ids_used: List[str] = Field(default_factory=list) - rewritten_query: Optional[str] = None # set when history was used to rewrite the query + answer: str = Field(..., description="LLM-generated answer") + session_id: str = Field(..., description="Session ID (created if not provided)") + doc_ids_used: List[str] = Field(default_factory=list, description="Document IDs used for retrieval") + rewritten_query: Optional[str] = Field(default=None, description="Rewritten query when history was used") class SessionCreateRequest(BaseModel): @@ -102,6 +109,18 @@ class SessionResponse(BaseModel): session_id: str +class SessionListItem(BaseModel): + session_id: str + created_at: Optional[datetime] = None + message_count: int = 0 + doc_ids: List[str] = Field(default_factory=list) + + +class SessionListResponse(BaseModel): + sessions: List[SessionListItem] + total: int + + class MessageResponse(BaseModel): role: str # "user" | "assistant" content: str @@ -111,6 +130,7 @@ class MessageResponse(BaseModel): class SessionMessagesResponse(BaseModel): session_id: str messages: List[MessageResponse] + total: int = Field(0, description="Total messages in session (before pagination)") # ── Entity Management ───────────────────────────────────────────────────────── diff --git a/api/routers/chat.py b/api/routers/chat.py index b3e2f7f..24d56ab 100644 --- a/api/routers/chat.py +++ b/api/routers/chat.py @@ -2,12 +2,13 @@ import logging import os from typing import List -from fastapi import APIRouter, Depends, HTTPException +from fastapi import APIRouter, Depends, HTTPException, Query from api.models.requests import ( ChatQueryRequest, ChatQueryResponse, SessionCreateRequest, SessionResponse, SessionMessagesResponse, MessageResponse, + SessionListResponse, SessionListItem, ) from api.db import mongodb as db from api.dependencies import ( @@ -62,9 +63,51 @@ async def create_session(req: SessionCreateRequest, current_user: dict = Depends return SessionResponse(session_id=session_id) +@router.get("/sessions", response_model=SessionListResponse) +async def list_sessions( + limit: int = Query(default=50, ge=1, le=200, description="Max sessions to return"), + offset: int = Query(default=0, ge=0, description="Number of sessions to skip"), + current_user: dict = Depends(get_current_user), +): + """List all chat sessions for the current user, newest first.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + sessions, total = await db.list_sessions( + MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id, limit=limit, offset=offset + ) + items = [ + SessionListItem( + session_id=s["session_id"], + created_at=s.get("created_at"), + message_count=s.get("message_count", len(s.get("messages", []))), + doc_ids=s.get("doc_ids", []), + ) + for s in sessions + ] + return SessionListResponse(sessions=items, total=total) + + +@router.delete("/sessions/{session_id}", status_code=204) +async def delete_session(session_id: str, current_user: dict = Depends(get_current_user)): + """Delete a chat session and all its messages.""" + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + session = await db.get_session(MONGO_URI, MONGO_DB_PREFIX, tenant_id, session_id) + if not session: + raise HTTPException(status_code=404, detail="Session not found") + if session.get("user_id") != user_id and current_user["role"] != "admin": + raise HTTPException(status_code=403, detail="Access denied") + await db.delete_session(MONGO_URI, MONGO_DB_PREFIX, tenant_id, session_id) + + @router.get("/sessions/{session_id}/messages", response_model=SessionMessagesResponse) -async def get_messages(session_id: str, current_user: dict = Depends(get_current_user)): - """Retrieve all messages in a session.""" +async def get_messages( + session_id: str, + limit: int = Query(default=100, ge=1, le=500, description="Max messages to return"), + offset: int = Query(default=0, ge=0, description="Number of messages to skip"), + current_user: dict = Depends(get_current_user), +): + """Retrieve messages in a session with pagination.""" tenant_id = current_user["tenant_id"] user_id = current_user["user_id"] session = await db.get_session(MONGO_URI, MONGO_DB_PREFIX, tenant_id, session_id) @@ -72,13 +115,16 @@ async def get_messages(session_id: str, current_user: dict = Depends(get_current raise HTTPException(status_code=404, detail="Session not found") if session.get("user_id") != user_id and current_user["role"] != "admin": raise HTTPException(status_code=403, detail="Access denied") + all_messages = session.get("messages", []) + total = len(all_messages) + paginated = all_messages[offset:offset + limit] messages = [ MessageResponse( role=m["role"], content=m["content"], ts=str(m.get("ts", "")), ) - for m in session.get("messages", []) + for m in paginated ] - return SessionMessagesResponse(session_id=session_id, messages=messages) + return SessionMessagesResponse(session_id=session_id, messages=messages, total=total) diff --git a/api/routers/documents.py b/api/routers/documents.py index 488f8a2..a8e6573 100644 --- a/api/routers/documents.py +++ b/api/routers/documents.py @@ -1,17 +1,19 @@ -"""Document management router: upload (multi-file), list, status, raw download.""" +"""Document management router: upload (multi-file), list, status, raw download, delete.""" import logging import os +import shutil import uuid -from typing import List +from datetime import datetime +from typing import List, Optional -from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, BackgroundTasks +from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, BackgroundTasks, Query, Form from fastapi.responses import FileResponse import aiofiles from api.models.requests import DocumentResponse, BatchUploadResponse from api.db import mongodb as db from api.dependencies import ( - MONGO_URI, MONGO_DB_PREFIX, UPLOAD_DIR, + MONGO_URI, MONGO_DB_PREFIX, UPLOAD_DIR, INDEX_SAVE_DIR, get_current_user, check_doc_access, ) from api.services.indexing import run_indexing @@ -57,12 +59,16 @@ async def _save_and_register_file( ) await out.write(chunk) + from datetime import timezone + now = datetime.now(timezone.utc) return { "doc_id": doc_id, "filename": file.filename, "tenant_id": tenant_id, "uploaded_by": user_id, "pdf_path": pdf_path, + "created_at": now, + "status": "pending", } @@ -70,12 +76,30 @@ async def _save_and_register_file( async def upload_documents( background_tasks: BackgroundTasks, files: List[UploadFile] = File(...), + document_date: Optional[str] = Form( + default=None, + description="Optional ISO-8601 date for ALL uploaded files (original authoring date). " + "Example: 2025-06-15 or 2025-06-15T10:30:00Z", + ), current_user: dict = Depends(get_current_user), ): - """Upload one or more PDFs and start background indexing for each.""" + """Upload one or more PDFs and start background indexing for each. + + An optional ``document_date`` (ISO-8601) can be provided to indicate + the original authoring/publishing date of the documents. This date is + used for temporal-awareness in cross-document RAG queries. + """ tenant_id = current_user["tenant_id"] user_id = current_user["user_id"] + # Parse optional document_date + parsed_doc_date: Optional[datetime] = None + if document_date: + try: + parsed_doc_date = datetime.fromisoformat(document_date.replace("Z", "+00:00")) + except ValueError: + raise HTTPException(status_code=422, detail="document_date must be a valid ISO-8601 date string") + tenant_upload_dir = os.path.join(UPLOAD_DIR, tenant_id) os.makedirs(tenant_upload_dir, exist_ok=True) @@ -93,31 +117,45 @@ async def upload_documents( failed.append({"filename": file.filename, "error": str(exc)}) continue + # Attach document_date if provided + if parsed_doc_date: + doc_data["document_date"] = parsed_doc_date + # Register document in MongoDB await db.create_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_data) # Auto-grant uploader owner access await db.grant_permission(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id, doc_data["doc_id"], "owner") # Enqueue background indexing background_tasks.add_task( - run_indexing, tenant_id, doc_data["doc_id"], doc_data["pdf_path"], CONFIG_PATH + run_indexing, tenant_id, doc_data["doc_id"], doc_data["pdf_path"], CONFIG_PATH, + document_date=parsed_doc_date, ) - uploaded.append(DocumentResponse(doc_id=doc_data["doc_id"], filename=file.filename, status="pending")) + uploaded.append(DocumentResponse( + doc_id=doc_data["doc_id"], filename=file.filename, status="pending", + document_date=parsed_doc_date, + )) return BatchUploadResponse(uploaded=uploaded, failed=failed) @router.get("", response_model=List[DocumentResponse]) -async def list_documents(current_user: dict = Depends(get_current_user)): - """List all documents accessible to the current user.""" +async def list_documents( + limit: int = Query(default=50, ge=1, le=200, description="Max documents to return"), + offset: int = Query(default=0, ge=0, description="Number of documents to skip"), + current_user: dict = Depends(get_current_user), +): + """List documents accessible to the current user, sorted by document_date descending.""" tenant_id = current_user["tenant_id"] user_id = current_user["user_id"] - docs = await db.list_documents(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id) + docs, _total = await db.list_documents(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id, limit=limit, offset=offset) return [ DocumentResponse( doc_id=d["doc_id"], filename=d.get("filename", ""), status=d.get("status", "unknown"), error=d.get("error"), + created_at=d.get("created_at"), + document_date=d.get("document_date"), ) for d in docs ] @@ -140,9 +178,66 @@ async def get_document_status(doc_id: str, current_user: dict = Depends(get_curr filename=doc.get("filename", ""), status=doc.get("status", "unknown"), error=doc.get("error"), + created_at=doc.get("created_at"), + document_date=doc.get("document_date"), ) +@router.delete("/{doc_id}", status_code=204) +async def delete_document(doc_id: str, current_user: dict = Depends(get_current_user)): + """Delete a document and all associated indexes, VDB data, and FalkorDB graph. + + Requires the requesting user to be the document owner or an admin. + """ + tenant_id = current_user["tenant_id"] + user_id = current_user["user_id"] + + # Only owner or admin can delete + if current_user["role"] != "admin": + perm = await db.get_permission(MONGO_URI, MONGO_DB_PREFIX, tenant_id, user_id, doc_id) + if not perm or perm.get("role") != "owner": + raise HTTPException(status_code=403, detail="Only document owners or admins can delete documents") + + doc = await db.get_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id) + if not doc: + raise HTTPException(status_code=404, detail="Document not found") + + # Clean up filesystem: uploaded PDF + pdf_path = doc.get("pdf_path", "") + if pdf_path and os.path.isfile(pdf_path): + try: + os.remove(pdf_path) + except OSError: + log.warning(f"Could not remove uploaded PDF: {pdf_path}") + + # Clean up filesystem: index directory + index_dir = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) + if os.path.isdir(index_dir): + try: + shutil.rmtree(index_dir) + except OSError: + log.warning(f"Could not remove index directory: {index_dir}") + + # Clean up FalkorDB graph (best-effort) + try: + from api.dependencies import FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD + if os.getenv("BOOKRAG_FALKORDB_HOST", ""): + import falkordb + fdb = falkordb.FalkorDB(host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD or None) + graph_name = f"bookrag:{tenant_id}:doc:{doc_id}" + try: + g = fdb.select_graph(graph_name) + g.delete() + log.info(f"Deleted FalkorDB graph '{graph_name}'") + except Exception: + pass # Graph may not exist + except Exception as exc: + log.warning(f"FalkorDB cleanup skipped: {exc}") + + # Clean up MongoDB records + await db.delete_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id) + + @router.get("/{doc_id}/raw") async def download_raw_document(doc_id: str, current_user: dict = Depends(get_current_user)): """Stream back the original uploaded PDF file.""" diff --git a/api/services/chat.py b/api/services/chat.py index 5bcedd5..33bbda0 100644 --- a/api/services/chat.py +++ b/api/services/chat.py @@ -277,9 +277,35 @@ async def handle_query( ) for did in target_docs ]) - answer = "\n\n---\n\n".join( - f"[Document: {did}]\n{ans}" for did, ans in zip(target_docs, answers) - ) + + # ── Temporal awareness: fetch document dates for cross-doc synthesis ── + doc_dates: dict[str, str] = {} + try: + for did in target_docs: + doc_record = await db.get_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, did) + if doc_record: + ddate = doc_record.get("document_date") or doc_record.get("created_at") + if ddate: + doc_dates[did] = str(ddate)[:10] # YYYY-MM-DD + except Exception: + pass # Non-fatal: temporal info is best-effort + + # Build answer with temporal context + parts = [] + for did, ans in zip(target_docs, answers): + date_str = f" (dated {doc_dates[did]})" if did in doc_dates else "" + parts.append(f"[Document: {did}{date_str}]\n{ans}") + + if doc_dates: + # Prepend a temporal instruction for the combined answer + temporal_note = ( + "NOTE: The answers below come from multiple documents with different dates. " + "When documents contain contradictory or overlapping information, " + "prefer the information from the more recently dated document.\n\n" + ) + answer = temporal_note + "\n\n---\n\n".join(parts) + else: + answer = "\n\n---\n\n".join(parts) else: doc_id = doc_ids[0] if doc_ids else None if not doc_id: diff --git a/api/services/indexing.py b/api/services/indexing.py index 9b718b3..dd27d60 100644 --- a/api/services/indexing.py +++ b/api/services/indexing.py @@ -11,7 +11,10 @@ _executor = THREAD_POOL -def _build_index_sync(pdf_path: str, save_path: str, tenant_id: str, doc_id: str, config_path: str): +def _build_index_sync( + pdf_path: str, save_path: str, tenant_id: str, doc_id: str, + config_path: str, document_date=None, +): """Synchronous index build — runs in a thread pool.""" from Core.configs.system_config import load_system_config from Core.configs.falkordb_config import FalkorDBConfig @@ -22,6 +25,9 @@ def _build_index_sync(pdf_path: str, save_path: str, tenant_id: str, doc_id: str cfg.save_path = save_path cfg.tenant_id = tenant_id cfg.doc_id = doc_id + # Propagate document_date into the config for temporal awareness + if document_date is not None: + cfg.document_date = document_date # FalkorDB will be used if BOOKRAG_FALKORDB_HOST is set fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") if fdb_host: @@ -37,6 +43,7 @@ async def run_indexing( doc_id: str, pdf_path: str, config_path: str, + document_date=None, ): """Async wrapper: update status in MongoDB before/after indexing.""" save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) @@ -48,7 +55,7 @@ async def run_indexing( await loop.run_in_executor( _executor, _build_index_sync, - pdf_path, save_path, tenant_id, doc_id, config_path, + pdf_path, save_path, tenant_id, doc_id, config_path, document_date, ) await db.update_document_status(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id, "ready") log.info(f"Indexing complete for doc '{doc_id}' in tenant '{tenant_id}'") diff --git a/config/bm25.yaml b/config/bm25.yaml index 445aa43..d67475f 100644 --- a/config/bm25.yaml +++ b/config/bm25.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/bm25.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://10.26.1.21:8003/v1 + api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -43,7 +43,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B diff --git a/config/gbc_wo_er.yaml b/config/gbc_wo_er.yaml index a3261db..ec94a16 100644 --- a/config/gbc_wo_er.yaml +++ b/config/gbc_wo_er.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/gbc_wo_er.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -41,7 +41,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "basic" embedding_config: model_name: Qwen3-Embedding-0.6B diff --git a/config/gbc_wo_graph.yaml b/config/gbc_wo_graph.yaml index a0f042c..49b325a 100644 --- a/config/gbc_wo_graph.yaml +++ b/config/gbc_wo_graph.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/gbc_wo_graph.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -41,7 +41,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B diff --git a/config/gbc_wo_plan.yaml b/config/gbc_wo_plan.yaml index aa41b64..dbec96c 100644 --- a/config/gbc_wo_plan.yaml +++ b/config/gbc_wo_plan.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/gbc_wo_plan.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -41,7 +41,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B diff --git a/config/gbc_wo_selector.yaml b/config/gbc_wo_selector.yaml index b6e1125..70b6e1c 100644 --- a/config/gbc_wo_selector.yaml +++ b/config/gbc_wo_selector.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/gbc_wo_selector.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -41,7 +41,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B diff --git a/config/gbc_wo_text.yaml b/config/gbc_wo_text.yaml index 3550c46..ca4c939 100644 --- a/config/gbc_wo_text.yaml +++ b/config/gbc_wo_text.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/gbc_wo_text.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -41,7 +41,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B diff --git a/config/graph.yaml b/config/graph.yaml index b659c61..cb3cd32 100644 --- a/config/graph.yaml +++ b/config/graph.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/graph.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://10.26.1.21:8003/v1 + api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -41,7 +41,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B @@ -62,7 +62,7 @@ vdb: collection_name: "TreeVDB" embedding_config: model_name: Alibaba-NLP/gme-Qwen2-VL-2B-Instruct - device: "cuda:6" + device: "cuda:1" rag_force_reprocess: True diff --git a/config/mm.yaml b/config/mm.yaml index fab9c46..15aff2e 100644 --- a/config/mm.yaml +++ b/config/mm.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/mm.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -41,17 +41,20 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: - model_name: Qwen/Qwen3-Embedding-0.6B - backend: local - max_length: 8192 - device: "cuda:7" + model_name: Qwen3-Embedding-0.6B + backend: openai + max_length: 4096 + device: "cuda:2" + api_base: "http://localhost:8007/v1" reranker_config: - model_name: Qwen/Qwen3-Reranker-4B - max_length: 8192 - device: "cuda:7" + model_name: Qwen3-Reranker-4B + max_length: 4096 + device: "cuda:2" + backend: vllm + api_base: "http://localhost:8011/v1" vdb: mm_embedding: True @@ -59,7 +62,7 @@ vdb: collection_name: "TreeVDB" embedding_config: model_name: Alibaba-NLP/gme-Qwen2-VL-2B-Instruct - device: "cuda:3" + device: "cuda:1" rag_force_reprocess: True rag: diff --git a/config/pdf_vanilla.yaml b/config/pdf_vanilla.yaml index 1d7edfb..98dfec8 100644 --- a/config/pdf_vanilla.yaml +++ b/config/pdf_vanilla.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/pdf_vanilla.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -43,7 +43,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B diff --git a/config/raptor.yaml b/config/raptor.yaml index c6730e4..e6158c1 100644 --- a/config/raptor.yaml +++ b/config/raptor.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/raptor.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://10.26.1.21:8003/v1 + api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -43,7 +43,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B diff --git a/config/tree.yaml b/config/tree.yaml index 5b14745..a719d31 100644 --- a/config/tree.yaml +++ b/config/tree.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/tree.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://10.26.1.21:8003/v1 + api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -41,25 +41,28 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: - model_name: Qwen/Qwen3-Embedding-0.6B - backend: local - max_length: 8192 - device: "cuda:5" + model_name: Qwen3-Embedding-0.6B + backend: openai + max_length: 4096 + device: "cuda:2" + api_base: "http://localhost:8007/v1" reranker_config: - model_name: Qwen/Qwen3-Reranker-4B - max_length: 8192 - device: "cuda:5" + model_name: Qwen3-Reranker-4B + max_length: 4096 + device: "cuda:2" + backend: vllm + api_base: "http://localhost:8011/v1" vdb: mm_embedding: True - vdb_path: "Tree_vdb" + vdb_dir_name: "Tree_vdb" collection_name: "TreeVDB" embedding_config: model_name: Alibaba-NLP/gme-Qwen2-VL-2B-Instruct - device: "cuda:4" + device: "cuda:1" rag_force_reprocess: True rag: diff --git a/config/vanilla.yaml b/config/vanilla.yaml index 6816e67..7a83a1d 100644 --- a/config/vanilla.yaml +++ b/config/vanilla.yaml @@ -1,24 +1,24 @@ -# configs/default.yaml +# config/vanilla.yaml pdf_path: TODO save_path: TODO llm: - model_name: Qwen/Qwen3-8B-AWQ + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://10.26.1.21:8003/v1 + api_base: http://localhost:8003/v1 backend: openai - max_tokens: 5000 + max_tokens: 8000 temperature: 0.1 frequency_penalty: 0.0 presence_penalty: 0.0 - max_workers: 8 + max_workers: 4 vlm: - model_name: Qwen2-5-VL + model_name: Qwen/Qwen3.5-35B-A3B-AWQ api_key: openai - api_base: http://localhost:8000/v1 + api_base: http://localhost:8003/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -43,7 +43,7 @@ graph: extractor_type: "llm" local_model_name: "en_core_web_sm" image_description_force: True - max_gleaning: 0 + max_gleaning: 1 refine_type: "advanced" embedding_config: model_name: Qwen3-Embedding-0.6B From c11b888013e1ee5e2765d4849acfd283fe5c5551 Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Tue, 3 Mar 2026 04:53:49 +0700 Subject: [PATCH 07/11] feat: Integrate language detection and legal heading detection features; enhance document processing with language-aware capabilities --- Core/configs/system_config.py | 11 ++ Core/pipelines/doc_tree_builder.py | 7 +- Core/pipelines/legal_heading_detector.py | 230 +++++++++++++++++++++++ Core/pipelines/pdf_refiner.py | 101 +++++----- api/models/requests.py | 5 + api/routers/documents.py | 15 ++ api/services/indexing.py | 7 +- tests/__init__.py | 1 + tests/test_legal_heading_detector.py | 167 ++++++++++++++++ tests/test_pdf_refiner_lang.py | 113 +++++++++++ 10 files changed, 609 insertions(+), 48 deletions(-) create mode 100644 Core/pipelines/legal_heading_detector.py create mode 100644 tests/__init__.py create mode 100644 tests/test_legal_heading_detector.py create mode 100644 tests/test_pdf_refiner_lang.py diff --git a/Core/configs/system_config.py b/Core/configs/system_config.py index 3aa0e84..8e7a7fc 100644 --- a/Core/configs/system_config.py +++ b/Core/configs/system_config.py @@ -50,6 +50,17 @@ class SystemConfig(BaseModel): tenant_id: Optional[str] = None doc_id: Optional[str] = None + # Document language hint (ISO 639-1). Used by the legal-heading + # detector, incomplete-paragraph heuristics, and other language-aware + # pipeline stages. Set to "auto" (default) for automatic detection + # from extracted text, or an explicit code like "en" or "id". + document_lang: Optional[str] = Field( + default="auto", + description="ISO 639-1 language code of the document content, or " + "'auto' for automatic detection. " + "Supported: auto, en, id, de, fr, es, pt, it, nl, th, zh, ja, ko, ar.", + ) + # Document temporal metadata (optional, for recency-aware RAG) document_date: Optional[datetime] = Field( default=None, diff --git a/Core/pipelines/doc_tree_builder.py b/Core/pipelines/doc_tree_builder.py index 9b2de76..1fe588e 100644 --- a/Core/pipelines/doc_tree_builder.py +++ b/Core/pipelines/doc_tree_builder.py @@ -2,6 +2,7 @@ from Core.pipelines.tree_node_builder import create_node_by_type from Core.pipelines.outline_extractor import extract_pdf_outline_in_chunks from Core.pipelines.pdf_refiner import pdf_info_refiner +from Core.pipelines.legal_heading_detector import detect_legal_headings, detect_document_language from Core.provider.extract_pdf_info import parse_doc, merge_middle_content from Core.pipelines.tree_node_summary import generate_tree_node_summary from Core.configs.system_config import SystemConfig @@ -151,7 +152,11 @@ def build_tree_from_pdf(cfg: SystemConfig, reforce: bool = False) -> DocumentTre llm = LLM(cfg.llm) vlm = VLM(cfg.vlm) if cfg.tree.use_vlm else None - pdf_list = pdf_info_refiner(pdf_list, llm) + lang = getattr(cfg, "document_lang", "auto") or "auto" + if lang == "auto": + lang = detect_document_language(pdf_list, fallback="en") + pdf_list = pdf_info_refiner(pdf_list, llm, lang=lang) + pdf_list = detect_legal_headings(pdf_list, lang=lang) title_outline = extract_pdf_outline_in_chunks(pdf_list, llm) tree_index = construct_tree_index( tree_index=tree_index, pdf_list=pdf_list, title_outline=title_outline diff --git a/Core/pipelines/legal_heading_detector.py b/Core/pipelines/legal_heading_detector.py new file mode 100644 index 0000000..6917f61 --- /dev/null +++ b/Core/pipelines/legal_heading_detector.py @@ -0,0 +1,230 @@ +""" +Legal heading detector — identifies structured headings in legal documents +using language-aware regex patterns. + +Supported languages: + - ``en`` — English (Article, Section, Chapter, Part, Clause, Schedule, …) + - ``id`` — Bahasa Indonesia (BAB, Bagian, Paragraf, Pasal, Ayat, …) + +The detector is intentionally conservative: it only promotes items whose +``text_level`` is ``-1`` (body text) and whose *entire trimmed text* matches +a known legal heading pattern. This avoids false-positives on sentences +that merely *mention* a legal keyword. +""" + +from __future__ import annotations + +import logging +import re +from typing import Dict, List, Optional, Tuple + +try: + from langdetect import detect as _langdetect_detect + from langdetect import DetectorFactory + + # Make langdetect deterministic + DetectorFactory.seed = 0 + _HAS_LANGDETECT = True +except ImportError: # pragma: no cover + _HAS_LANGDETECT = False + +log = logging.getLogger(__name__) + +# --------------------------------------------------------------------------- +# Pattern registry +# --------------------------------------------------------------------------- +# Each entry is ``(compiled_regex, assigned_text_level)``. +# Lower ``text_level`` values indicate higher hierarchy levels so that the +# outline extractor can nest them correctly. +# +# ``text_level`` assignments (per language): +# 0 = top-level division (BAB / Chapter / Title / Part) +# 1 = section / Bagian +# 2 = sub-section / Paragraf +# 3 = article / Pasal / Section / Clause +# 4 = clause / verse / Ayat / sub-clause +# --------------------------------------------------------------------------- + +_NUM = r"(?:[0-9]+(?:\.[0-9]+)*|[IVXLCDM]+|[ivxlcdm]+)" +_ALPHA = r"[A-Za-z]" + +# ── English patterns ────────────────────────────────────────────────────── + +_EN_PATTERNS: List[Tuple[re.Pattern, int]] = [ + # Level 0 – top-level + (re.compile(rf"^(?:TITLE|Title)\s+{_NUM}\.?(?:\s.*)?$"), 0), + (re.compile(rf"^(?:PART|Part)\s+{_NUM}\.?(?:\s.*)?$"), 0), + (re.compile(rf"^(?:CHAPTER|Chapter)\s+{_NUM}\.?(?:\s.*)?$"), 0), + # Level 1 – section + (re.compile(rf"^(?:DIVISION|Division)\s+{_NUM}\.?(?:\s.*)?$"), 1), + (re.compile(rf"^(?:ARTICLE|Article)\s+{_NUM}\.?(?:\s.*)?$"), 1), + (re.compile(rf"^(?:SCHEDULE|Schedule)\s+{_NUM}\.?(?:\s.*)?$"), 1), + # Level 2 – sub-section + (re.compile(rf"^(?:SECTION|Section)\s+{_NUM}\.?(?:\s.*)?$"), 2), + (re.compile(rf"^(?:ANNEX|Annex)\s+{_ALPHA}\.?(?:\s.*)?$"), 2), + # Level 3 – clause + (re.compile(rf"^(?:CLAUSE|Clause)\s+{_NUM}\.?(?:\s.*)?$"), 3), + (re.compile(rf"^§\s*{_NUM}\.?(?:\s.*)?$"), 3), + # Level 4 – sub-clause + (re.compile(rf"^(?:SUB-?CLAUSE|Sub-?clause)\s+{_NUM}\.?(?:\s.*)?$"), 4), +] + +# ── Bahasa Indonesia patterns ──────────────────────────────────────────── + +_ID_PATTERNS: List[Tuple[re.Pattern, int]] = [ + # Level 0 – BAB (Chapter) + (re.compile(rf"^BAB\s+{_NUM}\.?(?:\s.*)?$", re.IGNORECASE), 0), + # Level 1 – Bagian (Part/Section) + (re.compile(rf"^Bagian\s+(?:Kesatu|Kedua|Ketiga|Keempat|Kelima|Keenam|Ketujuh|Kedelapan|Kesembilan|Kesepuluh|{_NUM})\.?(?:\s.*)?$", re.IGNORECASE), 1), + # Level 2 – Paragraf (Paragraph/Sub-section) + (re.compile(rf"^Paragraf\s+{_NUM}\.?(?:\s.*)?$", re.IGNORECASE), 2), + # Level 3 – Pasal (Article) + (re.compile(rf"^Pasal\s+{_NUM}\.?(?:\s.*)?$", re.IGNORECASE), 3), + # Level 4 – Ayat (Verse/Clause) — usually inline, rarely standalone + (re.compile(rf"^Ayat\s+\({_NUM}\)\.?(?:\s.*)?$", re.IGNORECASE), 4), +] + +# ── Language → patterns map ────────────────────────────────────────────── + +_LANG_PATTERNS: Dict[str, List[Tuple[re.Pattern, int]]] = { + "en": _EN_PATTERNS, + "id": _ID_PATTERNS, +} + + +def _match_heading( + text: str, patterns: List[Tuple[re.Pattern, int]] +) -> Optional[int]: + """Return the ``text_level`` if *text* matches any pattern, else ``None``.""" + stripped = text.strip() + if not stripped: + return None + for pat, level in patterns: + if pat.match(stripped): + return level + return None + + +def detect_legal_headings( + pdf_list: List[Optional[Dict]], + lang: str = "en", +) -> List[Optional[Dict]]: + """Scan *pdf_list* and promote body-text items that match legal heading + patterns to headings by setting their ``text_level``. + + Parameters + ---------- + pdf_list: + The pipeline's intermediate list of content dicts. + lang: + ISO 639-1 language code. Falls back to English patterns if the + requested language is not registered. + + Returns + ------- + The same *pdf_list* (mutated in-place) with matched items promoted. + """ + patterns = _LANG_PATTERNS.get(lang, _LANG_PATTERNS.get("en", [])) + if not patterns: + log.warning("No legal heading patterns for lang='%s'; skipping.", lang) + return pdf_list + + promoted = 0 + for content in pdf_list: + if content is None: + continue + # Only consider body-text items (text_level == -1 or absent) + if content.get("type") != "text": + continue + current_level = content.get("text_level", -1) + if current_level >= 0: + continue # already a heading — don't override parser + + text = content.get("text", "") + level = _match_heading(text, patterns) + if level is not None: + content["text_level"] = level + promoted += 1 + log.debug("Promoted to heading (level %d): %s", level, text[:80]) + + log.info( + "Legal heading detection (lang=%s): promoted %d items to headings.", + lang, + promoted, + ) + return pdf_list + + + +# --------------------------------------------------------------------------- +# Automatic language detection from extracted text +# --------------------------------------------------------------------------- +_SUPPORTED_LANGS = {"en", "id", "de", "fr", "es", "pt", "it", "nl", "th", "zh", "ja", "ko", "ar"} + + +def detect_document_language( + pdf_list: List[Optional[Dict]], + fallback: str = "en", + sample_chars: int = 2000, +) -> str: + """Detect the dominant language of the document from its extracted text. + + Collects the first *sample_chars* characters of body text from *pdf_list* + and runs ``langdetect`` on the sample. + + Parameters + ---------- + pdf_list: + The pipeline's intermediate list of content dicts. + fallback: + Language code to return when detection fails or ``langdetect`` is not + installed. + sample_chars: + Maximum number of characters to sample for detection. + + Returns + ------- + An ISO 639-1 language code (e.g. ``"en"``, ``"id"``). + """ + if not _HAS_LANGDETECT: + log.warning("langdetect is not installed; falling back to '%s'.", fallback) + return fallback + + # Collect body text (text_level == -1 or absent) + sample_parts: list[str] = [] + collected = 0 + for content in pdf_list: + if content is None: + continue + if content.get("type") != "text": + continue + if content.get("text_level", -1) >= 0: + continue # skip headings — they may be too short / formulaic + text = content.get("text", "").strip() + if not text: + continue + sample_parts.append(text) + collected += len(text) + if collected >= sample_chars: + break + + sample = " ".join(sample_parts) + if len(sample) < 20: + log.info("Not enough text for language detection; falling back to '%s'.", fallback) + return fallback + + try: + detected = _langdetect_detect(sample) + # langdetect may return sub-tags like "zh-cn"; normalise + lang = detected.split("-")[0].lower() + if lang not in _SUPPORTED_LANGS: + log.info( + "Detected language '%s' is not supported; falling back to '%s'.", + lang, fallback, + ) + return fallback + log.info("Auto-detected document language: '%s'.", lang) + return lang + except Exception as exc: + log.warning("Language detection failed (%s); falling back to '%s'.", exc, fallback) + return fallback \ No newline at end of file diff --git a/Core/pipelines/pdf_refiner.py b/Core/pipelines/pdf_refiner.py index a8a13af..d6a7065 100644 --- a/Core/pipelines/pdf_refiner.py +++ b/Core/pipelines/pdf_refiner.py @@ -16,73 +16,82 @@ log = logging.getLogger(__name__) -def is_likely_incomplete_paragraph(text: str) -> bool: +# --------------------------------------------------------------------------- +# Language-specific settings for incomplete-paragraph detection +# --------------------------------------------------------------------------- +_LANG_TERMINAL_PUNCTUATION = { + "en": r"[.!?]", + "id": r"[.!?]", # Bahasa Indonesia uses Latin punctuation + "de": r"[.!?]", + "fr": r"[.!?\u00BB]", # » can close a quote-sentence + "es": r"[.!?\u00BF\u00A1]", + "pt": r"[.!?]", + "it": r"[.!?]", + "nl": r"[.!?]", + "th": r"[\u0E2F\u0E46.!?]", # Thai ฯ, ๆ, plus Latin + "zh": r"[\u3002\uFF01\uFF1F.!?]", # 。!? + "ja": r"[\u3002\uFF01\uFF1F.!?]", + "ko": r"[\uFF0E\uFF01\uFF1F.!?]", + "ar": r"[\u061F\u06D4.!?]", # ؟ ۔ +} + +_LANG_INCOMPLETE_ENDINGS: dict[str, set[str]] = { + "en": { + "and", "or", "but", "because", "although", "however", + "if", "while", "when", "to", "for", "in", "of", "with", + "on", "as", "at", "by", "from", "such", "the", "a", "an", + }, + "id": { + "dan", "atau", "tetapi", "namun", "karena", "sebab", + "jika", "apabila", "bahwa", "dengan", "untuk", "pada", + "dari", "oleh", "yang", "di", "ke", "se", "ini", "itu", + }, +} + + +def is_likely_incomplete_paragraph(text: str, lang: str = "en") -> bool: """ - Determine if an English paragraph is likely incomplete (truncated due to page/column breaks). + Determine if a paragraph is likely incomplete (truncated due to + page / column breaks). Language-aware. - :param text: input text to check - :return: bool, True if the paragraph is likely incomplete, False otherwise - e.g. "He said, "This method is the best." -> False (complete) - e.g. "The quick brown fox jumps over the lazy dog and" -> True (incomplete) + :param text: input text to check + :param lang: ISO 639-1 language code (default ``"en"``) + :return: ``True`` if the paragraph is likely incomplete """ if not text: return False # 空文本不是我们关心的“不完整段落” text = text.strip() - # Rule 1: Filter out very short strings. They are likely standalone titles/captions, not paragraphs to be merged. + # Rule 1: Filter out very short strings — likely titles/captions. if len(text.split()) < 5 or len(text) < 25: return False - # --- From here, we look for clear signals of INCOMPLETENESS --- - - # Rule 2: Ending with a hyphen is a very strong signal of incompleteness (a word was split). + # Rule 2: Ending with a hyphen → word was split across pages. if text.endswith("-"): return True - # Handles cases like "said he," or "he said." + # Strip trailing quotes so we can inspect the "real" ending. cleaned_text = re.sub(r"['\"]+$", "", text) - # Rule 3: Ending with a comma, colon, or semicolon is also a strong signal. + # Rule 3: Ending with comma / colon / semicolon → strong signal. if cleaned_text.endswith((",", ":", ";")): return True - # Rule 4: Not ending with a standard terminal punctuation mark. This is the most common case. - if not re.search(r"[.!?]$", cleaned_text): + # Rule 4: Not ending with terminal punctuation (language-aware). + terminal_re = _LANG_TERMINAL_PUNCTUATION.get(lang, r"[.!?]") + if not re.search(terminal_re + r"$", cleaned_text): return True - # Rule 5: Ending with a common connector word (even if mistakenly followed by a period). - # e.g., "The quick brown fox jumps over the lazy dog and." - incomplete_endings = { - "and", - "or", - "but", - "because", - "although", - "however", - "if", - "while", - "when", - "to", - "for", - "in", - "of", - "with", - "on", - "as", - "at", - "by", - "from", - "such", - "the", - "a", - "an", - } + # Rule 5: Ending with a connector word (language-aware). + incomplete_endings = _LANG_INCOMPLETE_ENDINGS.get( + lang, _LANG_INCOMPLETE_ENDINGS.get("en", set()) + ) last_word_match = re.findall(r"\b\w+\b", cleaned_text) if last_word_match and last_word_match[-1].lower() in incomplete_endings: return True - # If no "incomplete" signals were triggered, we assume it's complete. + # No "incomplete" signals triggered → assume complete. return False @@ -355,7 +364,7 @@ def merge_text_and_mark_invalid(prev_content: dict, merged_list: list[dict]): print(f"{prev_content['text']}") # Print first 100 chars for debug -def text_merger(pdf_list: list[Optional[str]], llm: LLM) -> list[Optional[str]]: +def text_merger(pdf_list: list[Optional[str]], llm: LLM, lang: str = "en") -> list[Optional[str]]: incomplete_paragraphs = [] # for循环的逻辑可以更清晰地组织 for content in pdf_list: @@ -368,7 +377,7 @@ def text_merger(pdf_list: list[Optional[str]], llm: LLM) -> list[Optional[str]]: # The logic is now direct: "if the paragraph is likely incomplete, add it." text = content.get("text", "") - if is_likely_incomplete_paragraph(text): + if is_likely_incomplete_paragraph(text, lang=lang): incomplete_paragraphs.append(content) if not incomplete_paragraphs: @@ -744,7 +753,7 @@ def truncate_ocr_error_refiner( return pdf_list -def pdf_info_refiner(pdf_list: list[Optional[str]], llm: LLM) -> list[Optional[str]]: +def pdf_info_refiner(pdf_list: list[Optional[str]], llm: LLM, lang: str = "en") -> list[Optional[str]]: # Heuristic refiner for "-" error in OCR pdf_list = dash_line_refiner(pdf_list) # Heuristic refiner for OCR Error @@ -754,7 +763,7 @@ def pdf_info_refiner(pdf_list: list[Optional[str]], llm: LLM) -> list[Optional[s pdf_list = enumerate_pdf_list(pdf_list) # Then we refine the PDF information by merging incomplete paragraphs and tables - pdf_list = text_merger(pdf_list, llm) + pdf_list = text_merger(pdf_list, llm, lang=lang) pdf_list = table_merger(pdf_list, llm) # After merging, we need to re-enumerate the pdf_list diff --git a/api/models/requests.py b/api/models/requests.py index a1cdcae..30abbd4 100644 --- a/api/models/requests.py +++ b/api/models/requests.py @@ -72,6 +72,11 @@ class DocumentResponse(BaseModel): description="User-provided original authoring/publishing date of the document. " "Used for temporal awareness in cross-document RAG.", ) + document_lang: Optional[str] = Field( + default=None, + description="ISO 639-1 language code (e.g. 'en', 'id') or 'auto' for auto-detection. " + "Used for legal heading detection and language-aware text processing.", + ) class BatchUploadResponse(BaseModel): diff --git a/api/routers/documents.py b/api/routers/documents.py index a8e6573..679b50b 100644 --- a/api/routers/documents.py +++ b/api/routers/documents.py @@ -81,6 +81,11 @@ async def upload_documents( description="Optional ISO-8601 date for ALL uploaded files (original authoring date). " "Example: 2025-06-15 or 2025-06-15T10:30:00Z", ), + document_lang: Optional[str] = Form( + default=None, + description="Optional ISO 639-1 language code (e.g. 'en', 'id') for ALL uploaded files. " + "Omit or set to 'auto' for automatic detection from extracted text.", + ), current_user: dict = Depends(get_current_user), ): """Upload one or more PDFs and start background indexing for each. @@ -88,6 +93,10 @@ async def upload_documents( An optional ``document_date`` (ISO-8601) can be provided to indicate the original authoring/publishing date of the documents. This date is used for temporal-awareness in cross-document RAG queries. + + An optional ``document_lang`` (ISO 639-1 code like ``en``, ``id``) can + be provided to hint the document language for legal heading detection + and text processing. Omit for automatic detection. """ tenant_id = current_user["tenant_id"] user_id = current_user["user_id"] @@ -121,6 +130,10 @@ async def upload_documents( if parsed_doc_date: doc_data["document_date"] = parsed_doc_date + # Attach document_lang if provided + if document_lang: + doc_data["document_lang"] = document_lang + # Register document in MongoDB await db.create_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_data) # Auto-grant uploader owner access @@ -129,10 +142,12 @@ async def upload_documents( background_tasks.add_task( run_indexing, tenant_id, doc_data["doc_id"], doc_data["pdf_path"], CONFIG_PATH, document_date=parsed_doc_date, + document_lang=document_lang, ) uploaded.append(DocumentResponse( doc_id=doc_data["doc_id"], filename=file.filename, status="pending", document_date=parsed_doc_date, + document_lang=document_lang, )) return BatchUploadResponse(uploaded=uploaded, failed=failed) diff --git a/api/services/indexing.py b/api/services/indexing.py index dd27d60..7f3105f 100644 --- a/api/services/indexing.py +++ b/api/services/indexing.py @@ -13,7 +13,7 @@ def _build_index_sync( pdf_path: str, save_path: str, tenant_id: str, doc_id: str, - config_path: str, document_date=None, + config_path: str, document_date=None, document_lang=None, ): """Synchronous index build — runs in a thread pool.""" from Core.configs.system_config import load_system_config @@ -28,6 +28,9 @@ def _build_index_sync( # Propagate document_date into the config for temporal awareness if document_date is not None: cfg.document_date = document_date + # Propagate document_lang into the config for language-aware processing + if document_lang is not None: + cfg.document_lang = document_lang # FalkorDB will be used if BOOKRAG_FALKORDB_HOST is set fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") if fdb_host: @@ -44,6 +47,7 @@ async def run_indexing( pdf_path: str, config_path: str, document_date=None, + document_lang=None, ): """Async wrapper: update status in MongoDB before/after indexing.""" save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) @@ -56,6 +60,7 @@ async def run_indexing( _executor, _build_index_sync, pdf_path, save_path, tenant_id, doc_id, config_path, document_date, + document_lang, ) await db.update_document_status(MONGO_URI, MONGO_DB_PREFIX, tenant_id, doc_id, "ready") log.info(f"Indexing complete for doc '{doc_id}' in tenant '{tenant_id}'") diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/tests/test_legal_heading_detector.py b/tests/test_legal_heading_detector.py new file mode 100644 index 0000000..5d21e36 --- /dev/null +++ b/tests/test_legal_heading_detector.py @@ -0,0 +1,167 @@ +"""Tests for Core/pipelines/legal_heading_detector.py""" +import pytest + +from Core.pipelines.legal_heading_detector import ( + detect_legal_headings, + detect_document_language, + _match_heading, + _EN_PATTERNS, + _ID_PATTERNS, +) + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- +def _make_item(text: str, text_level: int = -1, item_type: str = "text"): + return {"type": item_type, "text": text, "text_level": text_level} + + +# --------------------------------------------------------------------------- +# English heading pattern matching +# --------------------------------------------------------------------------- +class TestEnglishPatterns: + @pytest.mark.parametrize("text,expected_level", [ + ("TITLE I", 0), + ("Title 1", 0), + ("PART IV", 0), + ("Part 2 Definitions", 0), + ("CHAPTER 3", 0), + ("Chapter III General Provisions", 0), + ("DIVISION 1", 1), + ("ARTICLE 5", 1), + ("Article 12 Obligations of the Parties", 1), + ("SCHEDULE 1", 1), + ("SECTION 4", 2), + ("Section 2.1 Scope", 2), # fails — no dot-numbers in _NUM + ("Annex A", 2), + ("CLAUSE 7", 3), + ("§ 12", 3), + ("§ 3 Definitions", 3), + ("SUB-CLAUSE 2", 4), + ("Sub-clause 1", 4), + ]) + def test_match(self, text, expected_level): + result = _match_heading(text, _EN_PATTERNS) + assert result == expected_level, f"Expected level {expected_level} for '{text}', got {result}" + + @pytest.mark.parametrize("text", [ + "This is a normal paragraph.", + "The Article discusses legal matters.", + "See Chapter 3 for more details.", + "", + "article", # no number + ]) + def test_no_match(self, text): + assert _match_heading(text, _EN_PATTERNS) is None + + +# --------------------------------------------------------------------------- +# Indonesian heading pattern matching +# --------------------------------------------------------------------------- +class TestIndonesianPatterns: + @pytest.mark.parametrize("text,expected_level", [ + ("BAB I", 0), + ("BAB IV KETENTUAN PERALIHAN", 0), + ("Bagian Kesatu Umum", 1), + ("Bagian Kedua Ruang Lingkup", 1), + ("Paragraf 1", 2), + ("Paragraf 2 Tata Cara", 2), + ("Pasal 1", 3), + ("Pasal 45", 3), + ("Ayat (1)", 4), + ("Ayat (2) Ketentuan", 4), + ]) + def test_match(self, text, expected_level): + result = _match_heading(text, _ID_PATTERNS) + assert result == expected_level, f"Expected level {expected_level} for '{text}', got {result}" + + @pytest.mark.parametrize("text", [ + "Mengenai pasal ini perlu diperhatikan.", + "Lihat BAB sebelumnya.", + "", + ]) + def test_no_match(self, text): + assert _match_heading(text, _ID_PATTERNS) is None + + +# --------------------------------------------------------------------------- +# detect_legal_headings integration +# --------------------------------------------------------------------------- +class TestDetectLegalHeadings: + def test_promotes_body_text_en(self): + pdf_list = [ + _make_item("CHAPTER 1 Introduction"), + _make_item("This is body text about the law."), + _make_item("Article 2 Definitions"), + _make_item("Some table content", item_type="table"), + ] + result = detect_legal_headings(pdf_list, lang="en") + assert result[0]["text_level"] == 0 # CHAPTER → level 0 + assert result[1]["text_level"] == -1 # body text unchanged + assert result[2]["text_level"] == 1 # Article → level 1 + assert "text_level" not in result[3] or result[3]["text_level"] == -1 # table skipped + + def test_does_not_override_existing_heading(self): + pdf_list = [_make_item("CHAPTER 1", text_level=2)] + detect_legal_headings(pdf_list, lang="en") + assert pdf_list[0]["text_level"] == 2 # not overridden + + def test_promotes_body_text_id(self): + pdf_list = [ + _make_item("BAB I KETENTUAN UMUM"), + _make_item("Pasal 1"), + _make_item("Dalam peraturan ini yang dimaksud dengan:"), + ] + result = detect_legal_headings(pdf_list, lang="id") + assert result[0]["text_level"] == 0 + assert result[1]["text_level"] == 3 + assert result[2]["text_level"] == -1 + + def test_unknown_lang_falls_back_to_en(self): + pdf_list = [_make_item("CHAPTER 1")] + detect_legal_headings(pdf_list, lang="xx") + assert pdf_list[0]["text_level"] == 0 + + def test_handles_none_items(self): + pdf_list = [None, _make_item("Article 1"), None] + detect_legal_headings(pdf_list, lang="en") + assert pdf_list[1]["text_level"] == 1 + + +# --------------------------------------------------------------------------- +# Auto language detection +# --------------------------------------------------------------------------- +class TestDetectDocumentLanguage: + def test_detects_english(self): + pdf_list = [ + _make_item("The quick brown fox jumps over the lazy dog. " * 10), + _make_item("This is a legal agreement between the parties. " * 10), + ] + lang = detect_document_language(pdf_list) + assert lang == "en" + + def test_detects_indonesian(self): + pdf_list = [ + _make_item("Dalam peraturan pemerintah ini yang dimaksud dengan " + "peraturan perundang-undangan adalah peraturan tertulis " + "yang memuat norma hukum yang mengikat secara umum. " * 5), + ] + lang = detect_document_language(pdf_list) + assert lang == "id" + + def test_fallback_on_empty(self): + pdf_list = [_make_item("Hi")] + lang = detect_document_language(pdf_list, fallback="id") + assert lang == "id" + + def test_skips_headings(self): + pdf_list = [ + _make_item("BAB I", text_level=0), + _make_item("Dalam peraturan ini yang dimaksud dengan peraturan " + "perundang-undangan adalah norma hukum yang berlaku. " * 5), + ] + lang = detect_document_language(pdf_list) + # Should detect from body text, not headings + assert lang == "id" + diff --git a/tests/test_pdf_refiner_lang.py b/tests/test_pdf_refiner_lang.py new file mode 100644 index 0000000..79cca89 --- /dev/null +++ b/tests/test_pdf_refiner_lang.py @@ -0,0 +1,113 @@ +"""Tests for language-aware is_likely_incomplete_paragraph in pdf_refiner.py""" +import pytest + +from Core.pipelines.pdf_refiner import is_likely_incomplete_paragraph + + +class TestEnglishIncomplete: + """Existing English behaviour should be preserved.""" + + def test_complete_sentence(self): + assert is_likely_incomplete_paragraph( + 'He said, "This method is the best."', lang="en" + ) is False + + def test_incomplete_ending_and(self): + assert is_likely_incomplete_paragraph( + "The quick brown fox jumps over the lazy dog and", lang="en" + ) is True + + def test_incomplete_hyphen(self): + assert is_likely_incomplete_paragraph( + "The results demonstrate a signifi-", lang="en" + ) is True + + def test_incomplete_comma(self): + assert is_likely_incomplete_paragraph( + "In the following sections, we discuss the approach,", lang="en" + ) is True + + def test_complete_exclamation(self): + assert is_likely_incomplete_paragraph( + "This is absolutely correct for all cases!", lang="en" + ) is False + + def test_short_text_not_incomplete(self): + assert is_likely_incomplete_paragraph("Hello", lang="en") is False + + def test_empty_text(self): + assert is_likely_incomplete_paragraph("", lang="en") is False + + def test_connector_word_the(self): + assert is_likely_incomplete_paragraph( + "This regulation applies to all persons under the", lang="en" + ) is True + + +class TestIndonesianIncomplete: + """Indonesian-specific terminal punctuation and connector words.""" + + def test_complete_sentence(self): + assert is_likely_incomplete_paragraph( + "Peraturan ini berlaku sejak tanggal diundangkan.", lang="id" + ) is False + + def test_incomplete_no_period(self): + assert is_likely_incomplete_paragraph( + "Dalam peraturan pemerintah ini yang dimaksud dengan peraturan", lang="id" + ) is True + + def test_incomplete_connector_dan(self): + assert is_likely_incomplete_paragraph( + "Pasal ini mengatur tentang hak dan.", lang="id" + ) is True + + def test_incomplete_connector_yang(self): + assert is_likely_incomplete_paragraph( + "Setiap orang berhak atas perlindungan hukum yang.", lang="id" + ) is True + + def test_incomplete_connector_dengan(self): + assert is_likely_incomplete_paragraph( + "Peraturan ini disusun dengan memperhatikan ketentuan dengan.", lang="id" + ) is True + + def test_complete_question(self): + assert is_likely_incomplete_paragraph( + "Apakah peraturan ini sudah sesuai dengan undang-undang?", lang="id" + ) is False + + def test_incomplete_comma_id(self): + assert is_likely_incomplete_paragraph( + "Sebagaimana dimaksud dalam Pasal 1 ayat satu,", lang="id" + ) is True + + +class TestDefaultLang: + """When lang is omitted, should behave as English.""" + + def test_defaults_to_english(self): + assert is_likely_incomplete_paragraph( + "The quick brown fox jumps over the lazy dog and" + ) is True + + def test_defaults_complete(self): + assert is_likely_incomplete_paragraph( + "This sentence is complete and well-formed." + ) is False + + +class TestUnsupportedLang: + """Unsupported language should fall back to English rules.""" + + def test_fallback_terminal_punctuation(self): + # No terminal punctuation → incomplete even for unknown lang + assert is_likely_incomplete_paragraph( + "This sentence has no ending punctuation mark", lang="xx" + ) is True + + def test_fallback_complete(self): + assert is_likely_incomplete_paragraph( + "This sentence ends properly with a period.", lang="xx" + ) is False + From 3191f5c01797c2e8f67f9a4891a4bd4416691d32 Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Tue, 3 Mar 2026 19:14:55 +0700 Subject: [PATCH 08/11] Add end-to-end test script for knowledge graph building - Introduced `run_e2e_test.py` to facilitate the testing of the knowledge graph construction process. - Configurations are loaded from `gbc.yaml`, with paths set for PDF input and output directory. - The script loads an existing document tree, initializes a token tracker, and builds the knowledge graph. - Outputs performance metrics including total nodes, edges, and token usage after graph construction. --- Core/Index/GBCIndex.py | 1 + Core/configs/embedding_config.py | 17 +- Core/configs/llm_config.py | 14 + Core/configs/rerank_config.py | 20 +- Core/configs/vlm_config.py | 16 + Core/pipelines/doc_tree_builder.py | 7 +- Core/pipelines/kg_refiner.py | 2 + Core/pipelines/outline_extractor.py | 13 +- Core/prompts/gbc_prompt.py | 40 + Core/prompts/outline_prompt.py | 37 + Core/provider/embedding.py | 12 +- Core/provider/llm.py | 8 +- Core/provider/rerank.py | 88 +- Core/provider/vlm.py | 10 +- Core/rag/gbc_answer.py | 21 +- Core/rag/gbc_rag.py | 6 +- api/main.py | 3 + api/services/chat.py | 64 +- config/gbc.yaml | 38 +- ...BOOKRAG_VLDB_2026_full_merged_content.json | 3141 ++ .../BOOKRAG_VLDB_2026_full-picture-1.png | Bin 0 -> 141141 bytes .../BOOKRAG_VLDB_2026_full-picture-2.png | Bin 0 -> 245774 bytes .../BOOKRAG_VLDB_2026_full-picture-3.png | Bin 0 -> 46844 bytes .../BOOKRAG_VLDB_2026_full-picture-4.png | Bin 0 -> 244581 bytes .../BOOKRAG_VLDB_2026_full-picture-5.png | Bin 0 -> 80113 bytes .../BOOKRAG_VLDB_2026_full-picture-6.png | Bin 0 -> 28149 bytes .../BOOKRAG_VLDB_2026_full-picture-7.png | Bin 0 -> 21595 bytes .../BOOKRAG_VLDB_2026_full-picture-8.png | Bin 0 -> 384695 bytes .../BOOKRAG_VLDB_2026_full-picture-9.png | Bin 0 -> 37899 bytes e2e_test_output/graph_data_basic.json | 45216 ++++++++++++++++ .../kg_extractor_res/kg_extractor_res_1.json | 87 + .../kg_extractor_res/kg_extractor_res_10.json | 87 + .../kg_extractor_res_100.json | 14 + .../kg_extractor_res_101.json | 143 + .../kg_extractor_res_102.json | 297 + .../kg_extractor_res_103.json | 14 + .../kg_extractor_res_104.json | 251 + .../kg_extractor_res_105.json | 14 + .../kg_extractor_res_106.json | 191 + .../kg_extractor_res_107.json | 14 + .../kg_extractor_res_108.json | 14 + .../kg_extractor_res_109.json | 209 + .../kg_extractor_res/kg_extractor_res_11.json | 87 + .../kg_extractor_res_110.json | 14 + .../kg_extractor_res_111.json | 215 + .../kg_extractor_res_112.json | 225 + .../kg_extractor_res_113.json | 14 + .../kg_extractor_res_114.json | 51 + .../kg_extractor_res_115.json | 171 + .../kg_extractor_res_116.json | 14 + .../kg_extractor_res_117.json | 14 + .../kg_extractor_res_118.json | 69 + .../kg_extractor_res_119.json | 14 + .../kg_extractor_res/kg_extractor_res_12.json | 79 + .../kg_extractor_res_120.json | 14 + .../kg_extractor_res_121.json | 14 + .../kg_extractor_res_122.json | 99 + .../kg_extractor_res_123.json | 69 + .../kg_extractor_res_124.json | 391 + .../kg_extractor_res_125.json | 195 + .../kg_extractor_res_126.json | 14 + .../kg_extractor_res_127.json | 293 + .../kg_extractor_res_128.json | 14 + .../kg_extractor_res_129.json | 125 + .../kg_extractor_res/kg_extractor_res_13.json | 375 + .../kg_extractor_res_130.json | 14 + .../kg_extractor_res_131.json | 33 + .../kg_extractor_res_132.json | 33 + .../kg_extractor_res_133.json | 14 + .../kg_extractor_res_134.json | 231 + .../kg_extractor_res_135.json | 283 + .../kg_extractor_res_136.json | 33 + .../kg_extractor_res_137.json | 127 + .../kg_extractor_res_138.json | 14 + .../kg_extractor_res_139.json | 121 + .../kg_extractor_res/kg_extractor_res_14.json | 461 + .../kg_extractor_res_140.json | 33 + .../kg_extractor_res_141.json | 389 + .../kg_extractor_res_142.json | 33 + .../kg_extractor_res_143.json | 5 + .../kg_extractor_res_144.json | 429 + .../kg_extractor_res_145.json | 61 + .../kg_extractor_res_146.json | 119 + .../kg_extractor_res_147.json | 177 + .../kg_extractor_res_148.json | 231 + .../kg_extractor_res_149.json | 237 + .../kg_extractor_res/kg_extractor_res_15.json | 367 + .../kg_extractor_res_150.json | 14 + .../kg_extractor_res_151.json | 115 + .../kg_extractor_res_152.json | 417 + .../kg_extractor_res_153.json | 229 + .../kg_extractor_res_154.json | 33 + .../kg_extractor_res_155.json | 61 + .../kg_extractor_res_156.json | 14 + .../kg_extractor_res_157.json | 381 + .../kg_extractor_res_158.json | 33 + .../kg_extractor_res_159.json | 357 + .../kg_extractor_res/kg_extractor_res_16.json | 51 + .../kg_extractor_res_160.json | 205 + .../kg_extractor_res_161.json | 14 + .../kg_extractor_res_162.json | 14 + .../kg_extractor_res_163.json | 141 + .../kg_extractor_res_164.json | 33 + .../kg_extractor_res_165.json | 79 + .../kg_extractor_res_166.json | 49 + .../kg_extractor_res_167.json | 69 + .../kg_extractor_res_168.json | 33 + .../kg_extractor_res_169.json | 33 + .../kg_extractor_res/kg_extractor_res_17.json | 33 + .../kg_extractor_res_170.json | 153 + .../kg_extractor_res_171.json | 33 + .../kg_extractor_res_172.json | 293 + .../kg_extractor_res_173.json | 14 + .../kg_extractor_res_174.json | 115 + .../kg_extractor_res_175.json | 357 + .../kg_extractor_res_176.json | 249 + .../kg_extractor_res_177.json | 301 + .../kg_extractor_res_178.json | 159 + .../kg_extractor_res_179.json | 225 + .../kg_extractor_res/kg_extractor_res_18.json | 319 + .../kg_extractor_res_180.json | 97 + .../kg_extractor_res_181.json | 169 + .../kg_extractor_res_182.json | 447 + .../kg_extractor_res_183.json | 107 + .../kg_extractor_res_184.json | 285 + .../kg_extractor_res_185.json | 331 + .../kg_extractor_res_186.json | 225 + .../kg_extractor_res_187.json | 14 + .../kg_extractor_res_188.json | 277 + .../kg_extractor_res_189.json | 14 + .../kg_extractor_res/kg_extractor_res_19.json | 329 + .../kg_extractor_res_190.json | 14 + .../kg_extractor_res_191.json | 463 + .../kg_extractor_res_192.json | 231 + .../kg_extractor_res_193.json | 277 + .../kg_extractor_res_194.json | 501 + .../kg_extractor_res_195.json | 271 + .../kg_extractor_res_196.json | 533 + .../kg_extractor_res_197.json | 467 + .../kg_extractor_res_198.json | 277 + .../kg_extractor_res_199.json | 701 + .../kg_extractor_res/kg_extractor_res_2.json | 411 + .../kg_extractor_res/kg_extractor_res_20.json | 197 + .../kg_extractor_res_200.json | 545 + .../kg_extractor_res_201.json | 323 + .../kg_extractor_res_202.json | 469 + .../kg_extractor_res_203.json | 475 + .../kg_extractor_res_204.json | 273 + .../kg_extractor_res_205.json | 237 + .../kg_extractor_res_206.json | 735 + .../kg_extractor_res_207.json | 655 + .../kg_extractor_res_208.json | 353 + .../kg_extractor_res_209.json | 285 + .../kg_extractor_res/kg_extractor_res_21.json | 205 + .../kg_extractor_res_210.json | 105 + .../kg_extractor_res_211.json | 575 + .../kg_extractor_res_212.json | 141 + .../kg_extractor_res_213.json | 187 + .../kg_extractor_res_214.json | 14 + .../kg_extractor_res_215.json | 14 + .../kg_extractor_res_216.json | 537 + .../kg_extractor_res_217.json | 14 + .../kg_extractor_res_218.json | 14 + .../kg_extractor_res_219.json | 14 + .../kg_extractor_res/kg_extractor_res_22.json | 207 + .../kg_extractor_res_220.json | 14 + .../kg_extractor_res_221.json | 33 + .../kg_extractor_res_222.json | 89 + .../kg_extractor_res_223.json | 133 + .../kg_extractor_res_224.json | 285 + .../kg_extractor_res_225.json | 14 + .../kg_extractor_res_226.json | 105 + .../kg_extractor_res_227.json | 107 + .../kg_extractor_res_228.json | 14 + .../kg_extractor_res_229.json | 33 + .../kg_extractor_res/kg_extractor_res_23.json | 183 + .../kg_extractor_res_230.json | 14 + .../kg_extractor_res_231.json | 95 + .../kg_extractor_res_232.json | 14 + .../kg_extractor_res_233.json | 14 + .../kg_extractor_res_234.json | 123 + .../kg_extractor_res_235.json | 14 + .../kg_extractor_res_236.json | 87 + .../kg_extractor_res_237.json | 14 + .../kg_extractor_res_238.json | 861 + .../kg_extractor_res_239.json | 33 + .../kg_extractor_res/kg_extractor_res_24.json | 14 + .../kg_extractor_res_240.json | 217 + .../kg_extractor_res_241.json | 105 + .../kg_extractor_res_242.json | 14 + .../kg_extractor_res_243.json | 199 + .../kg_extractor_res_244.json | 5 + .../kg_extractor_res_245.json | 25 + .../kg_extractor_res_246.json | 79 + .../kg_extractor_res_247.json | 25 + .../kg_extractor_res_248.json | 5 + .../kg_extractor_res_249.json | 25 + .../kg_extractor_res/kg_extractor_res_25.json | 145 + .../kg_extractor_res_250.json | 153 + .../kg_extractor_res_251.json | 51 + .../kg_extractor_res_252.json | 14 + .../kg_extractor_res_253.json | 33 + .../kg_extractor_res_254.json | 14 + .../kg_extractor_res_255.json | 233 + .../kg_extractor_res_256.json | 33 + .../kg_extractor_res_257.json | 14 + .../kg_extractor_res_258.json | 521 + .../kg_extractor_res_259.json | 33 + .../kg_extractor_res/kg_extractor_res_26.json | 115 + .../kg_extractor_res_260.json | 14 + .../kg_extractor_res_261.json | 5 + .../kg_extractor_res_262.json | 217 + .../kg_extractor_res_263.json | 5 + .../kg_extractor_res_264.json | 5 + .../kg_extractor_res_265.json | 14 + .../kg_extractor_res_266.json | 14 + .../kg_extractor_res_267.json | 91 + .../kg_extractor_res_268.json | 25 + .../kg_extractor_res_269.json | 33 + .../kg_extractor_res/kg_extractor_res_27.json | 133 + .../kg_extractor_res_270.json | 25 + .../kg_extractor_res_271.json | 5 + .../kg_extractor_res_272.json | 33 + .../kg_extractor_res_273.json | 33 + .../kg_extractor_res_274.json | 25 + .../kg_extractor_res_275.json | 33 + .../kg_extractor_res_276.json | 115 + .../kg_extractor_res_277.json | 25 + .../kg_extractor_res_278.json | 5 + .../kg_extractor_res_279.json | 5 + .../kg_extractor_res/kg_extractor_res_28.json | 14 + .../kg_extractor_res_280.json | 5 + .../kg_extractor_res_281.json | 59 + .../kg_extractor_res_282.json | 33 + .../kg_extractor_res_283.json | 5 + .../kg_extractor_res_284.json | 79 + .../kg_extractor_res_285.json | 14 + .../kg_extractor_res/kg_extractor_res_29.json | 265 + .../kg_extractor_res/kg_extractor_res_3.json | 14 + .../kg_extractor_res/kg_extractor_res_30.json | 51 + .../kg_extractor_res/kg_extractor_res_31.json | 89 + .../kg_extractor_res/kg_extractor_res_32.json | 411 + .../kg_extractor_res/kg_extractor_res_33.json | 279 + .../kg_extractor_res/kg_extractor_res_34.json | 14 + .../kg_extractor_res/kg_extractor_res_35.json | 123 + .../kg_extractor_res/kg_extractor_res_36.json | 33 + .../kg_extractor_res/kg_extractor_res_37.json | 451 + .../kg_extractor_res/kg_extractor_res_38.json | 14 + .../kg_extractor_res/kg_extractor_res_39.json | 14 + .../kg_extractor_res/kg_extractor_res_4.json | 33 + .../kg_extractor_res/kg_extractor_res_40.json | 33 + .../kg_extractor_res/kg_extractor_res_41.json | 33 + .../kg_extractor_res/kg_extractor_res_42.json | 159 + .../kg_extractor_res/kg_extractor_res_43.json | 179 + .../kg_extractor_res/kg_extractor_res_44.json | 33 + .../kg_extractor_res/kg_extractor_res_45.json | 213 + .../kg_extractor_res/kg_extractor_res_46.json | 69 + .../kg_extractor_res/kg_extractor_res_47.json | 169 + .../kg_extractor_res/kg_extractor_res_48.json | 131 + .../kg_extractor_res/kg_extractor_res_49.json | 357 + .../kg_extractor_res/kg_extractor_res_5.json | 261 + .../kg_extractor_res/kg_extractor_res_50.json | 69 + .../kg_extractor_res/kg_extractor_res_51.json | 381 + .../kg_extractor_res/kg_extractor_res_52.json | 289 + .../kg_extractor_res/kg_extractor_res_53.json | 33 + .../kg_extractor_res/kg_extractor_res_54.json | 97 + .../kg_extractor_res/kg_extractor_res_55.json | 87 + .../kg_extractor_res/kg_extractor_res_56.json | 33 + .../kg_extractor_res/kg_extractor_res_57.json | 315 + .../kg_extractor_res/kg_extractor_res_58.json | 267 + .../kg_extractor_res/kg_extractor_res_59.json | 419 + .../kg_extractor_res/kg_extractor_res_6.json | 33 + .../kg_extractor_res/kg_extractor_res_60.json | 14 + .../kg_extractor_res/kg_extractor_res_61.json | 51 + .../kg_extractor_res/kg_extractor_res_62.json | 61 + .../kg_extractor_res/kg_extractor_res_63.json | 123 + .../kg_extractor_res/kg_extractor_res_64.json | 185 + .../kg_extractor_res/kg_extractor_res_65.json | 51 + .../kg_extractor_res/kg_extractor_res_66.json | 225 + .../kg_extractor_res/kg_extractor_res_67.json | 169 + .../kg_extractor_res/kg_extractor_res_68.json | 14 + .../kg_extractor_res/kg_extractor_res_69.json | 33 + .../kg_extractor_res/kg_extractor_res_7.json | 135 + .../kg_extractor_res/kg_extractor_res_70.json | 219 + .../kg_extractor_res/kg_extractor_res_71.json | 265 + .../kg_extractor_res/kg_extractor_res_72.json | 75 + .../kg_extractor_res/kg_extractor_res_73.json | 187 + .../kg_extractor_res/kg_extractor_res_74.json | 115 + .../kg_extractor_res/kg_extractor_res_75.json | 437 + .../kg_extractor_res/kg_extractor_res_76.json | 233 + .../kg_extractor_res/kg_extractor_res_77.json | 315 + .../kg_extractor_res/kg_extractor_res_78.json | 51 + .../kg_extractor_res/kg_extractor_res_79.json | 167 + .../kg_extractor_res/kg_extractor_res_8.json | 14 + .../kg_extractor_res/kg_extractor_res_80.json | 14 + .../kg_extractor_res/kg_extractor_res_81.json | 51 + .../kg_extractor_res/kg_extractor_res_82.json | 187 + .../kg_extractor_res/kg_extractor_res_83.json | 189 + .../kg_extractor_res/kg_extractor_res_84.json | 105 + .../kg_extractor_res/kg_extractor_res_85.json | 215 + .../kg_extractor_res/kg_extractor_res_86.json | 97 + .../kg_extractor_res/kg_extractor_res_87.json | 33 + .../kg_extractor_res/kg_extractor_res_88.json | 261 + .../kg_extractor_res/kg_extractor_res_89.json | 33 + .../kg_extractor_res/kg_extractor_res_9.json | 143 + .../kg_extractor_res/kg_extractor_res_90.json | 14 + .../kg_extractor_res/kg_extractor_res_91.json | 14 + .../kg_extractor_res/kg_extractor_res_92.json | 14 + .../kg_extractor_res/kg_extractor_res_93.json | 223 + .../kg_extractor_res/kg_extractor_res_94.json | 537 + .../kg_extractor_res/kg_extractor_res_95.json | 33 + .../kg_extractor_res/kg_extractor_res_96.json | 267 + .../kg_extractor_res/kg_extractor_res_97.json | 159 + .../kg_extractor_res/kg_extractor_res_98.json | 251 + .../kg_extractor_res/kg_extractor_res_99.json | 14 + .../data_level0.bin | Bin 0 -> 423600 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 400 bytes .../link_lists.bin | 0 e2e_test_output/kg_vdb/chroma.sqlite3 | Bin 0 -> 4198400 bytes e2e_test_output/tree.json | 6882 +++ e2e_test_output/tree.pkl | Bin 0 -> 229402 bytes run_e2e_test.py | 51 + 323 files changed, 97492 insertions(+), 70 deletions(-) create mode 100644 e2e_test_output/docling/BOOKRAG_VLDB_2026_full_merged_content.json create mode 100644 e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-1.png create mode 100644 e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-2.png create mode 100644 e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-3.png create mode 100644 e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-4.png create mode 100644 e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-5.png create mode 100644 e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-6.png create mode 100644 e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-7.png create mode 100644 e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-8.png create mode 100644 e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-9.png create mode 100644 e2e_test_output/graph_data_basic.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_1.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_10.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_100.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_101.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_102.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_103.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_104.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_105.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_106.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_107.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_108.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_109.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_11.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_110.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_111.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_112.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_113.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_114.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_115.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_116.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_117.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_118.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_119.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_12.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_120.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_121.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_122.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_123.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_124.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_125.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_126.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_127.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_128.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_129.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_13.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_130.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_131.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_132.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_133.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_134.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_135.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_136.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_137.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_138.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_139.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_14.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_140.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_141.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_142.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_143.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_144.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_145.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_146.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_147.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_148.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_149.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_15.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_150.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_151.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_152.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_153.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_154.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_155.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_156.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_157.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_158.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_159.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_16.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_160.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_161.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_162.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_163.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_164.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_165.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_166.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_167.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_168.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_169.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_17.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_170.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_171.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_172.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_173.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_174.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_175.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_176.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_177.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_178.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_179.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_18.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_180.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_181.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_182.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_183.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_184.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_185.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_186.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_187.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_188.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_189.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_19.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_190.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_191.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_192.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_193.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_194.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_195.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_196.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_197.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_198.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_199.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_2.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_20.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_200.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_201.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_202.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_203.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_204.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_205.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_206.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_207.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_208.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_209.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_21.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_210.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_211.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_212.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_213.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_214.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_215.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_216.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_217.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_218.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_219.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_22.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_220.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_221.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_222.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_223.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_224.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_225.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_226.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_227.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_228.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_229.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_23.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_230.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_231.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_232.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_233.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_234.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_235.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_236.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_237.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_238.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_239.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_24.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_240.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_241.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_242.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_243.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_244.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_245.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_246.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_247.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_248.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_249.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_25.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_250.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_251.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_252.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_253.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_254.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_255.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_256.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_257.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_258.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_259.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_26.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_260.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_261.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_262.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_263.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_264.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_265.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_266.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_267.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_268.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_269.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_27.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_270.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_271.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_272.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_273.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_274.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_275.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_276.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_277.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_278.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_279.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_28.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_280.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_281.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_282.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_283.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_284.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_285.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_29.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_3.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_30.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_31.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_32.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_33.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_34.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_35.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_36.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_37.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_38.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_39.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_4.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_40.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_41.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_42.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_43.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_44.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_45.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_46.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_47.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_48.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_49.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_5.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_50.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_51.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_52.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_53.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_54.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_55.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_56.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_57.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_58.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_59.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_6.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_60.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_61.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_62.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_63.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_64.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_65.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_66.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_67.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_68.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_69.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_7.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_70.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_71.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_72.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_73.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_74.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_75.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_76.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_77.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_78.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_79.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_8.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_80.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_81.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_82.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_83.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_84.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_85.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_86.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_87.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_88.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_89.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_9.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_90.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_91.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_92.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_93.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_94.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_95.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_96.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_97.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_98.json create mode 100644 e2e_test_output/kg_extractor_res/kg_extractor_res_99.json create mode 100644 e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/data_level0.bin create mode 100644 e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/header.bin create mode 100644 e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/length.bin create mode 100644 e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/link_lists.bin create mode 100644 e2e_test_output/kg_vdb/chroma.sqlite3 create mode 100644 e2e_test_output/tree.json create mode 100644 e2e_test_output/tree.pkl create mode 100644 run_e2e_test.py diff --git a/Core/Index/GBCIndex.py b/Core/Index/GBCIndex.py index cd691d9..24b98b4 100644 --- a/Core/Index/GBCIndex.py +++ b/Core/Index/GBCIndex.py @@ -50,6 +50,7 @@ def __init__( max_length=config.graph.embedding_config.max_length, device=config.graph.embedding_config.device, api_base=config.graph.embedding_config.api_base, + api_key=config.graph.embedding_config.api_key, ) self.entity_vdb: VectorStore = VectorStore( db_path=self.entity_vdb_path, diff --git a/Core/configs/embedding_config.py b/Core/configs/embedding_config.py index b7ec689..16b4dc7 100644 --- a/Core/configs/embedding_config.py +++ b/Core/configs/embedding_config.py @@ -1,5 +1,10 @@ +import os from dataclasses import dataclass +from dotenv import load_dotenv + +load_dotenv() + @dataclass class EmbeddingConfig: @@ -10,8 +15,16 @@ class EmbeddingConfig: model_name: str = "Qwen/Qwen3-Embedding-0.6B" max_length: int = 8192 device: str = "cuda:2" - - + + def __post_init__(self): if self.backend not in ["local", "ollama", "openai"]: raise ValueError(f"Unsupported backend: {self.backend}") + # Resolve 'env' placeholder → read from DASHSCOPE_API_KEY environment variable + if self.api_key == "env": + self.api_key = os.environ.get("DASHSCOPE_API_KEY", "") + if not self.api_key: + raise ValueError( + "EmbeddingConfig.api_key is 'env' but DASHSCOPE_API_KEY " + "environment variable is not set." + ) diff --git a/Core/configs/llm_config.py b/Core/configs/llm_config.py index 79a2c8b..614ab62 100644 --- a/Core/configs/llm_config.py +++ b/Core/configs/llm_config.py @@ -1,4 +1,8 @@ +import os from dataclasses import dataclass +from dotenv import load_dotenv + +load_dotenv() # ensure .env is loaded when used outside the API server @dataclass class LLMConfig: @@ -15,3 +19,13 @@ class LLMConfig: def __post_init__(self): if self.backend not in ["openai", "ollama"]: raise ValueError(f"Unsupported backend: {self.backend}") + # Allow api_key to be resolved from environment variable + if not self.api_key or self.api_key in ("env", "ENV"): + env_key = os.environ.get("DASHSCOPE_API_KEY", "") + if env_key: + self.api_key = env_key + else: + raise ValueError( + "LLM api_key is empty/env but DASHSCOPE_API_KEY " + "environment variable is not set." + ) diff --git a/Core/configs/rerank_config.py b/Core/configs/rerank_config.py index d1b5eea..0d24987 100644 --- a/Core/configs/rerank_config.py +++ b/Core/configs/rerank_config.py @@ -1,10 +1,28 @@ +import os from dataclasses import dataclass +from dotenv import load_dotenv + +load_dotenv() + @dataclass class RerankerConfig: model_name: str = "Qwen/Qwen3-Reranker-0.6B" max_length: int = 8192 device: str = "cuda:2" - backend: str = "local" # Options: 'local', 'vllm' + backend: str = "local" # Options: 'local', 'vllm', 'jina' api_base: str = "http://localhost:8011/v1" + api_key: str = "" + + def __post_init__(self): + if self.backend not in ["local", "vllm", "jina"]: + raise ValueError(f"Unsupported reranker backend: {self.backend}") + # Resolve 'env' placeholder → read from JINA_API_KEY environment variable + if self.api_key == "env": + self.api_key = os.environ.get("JINA_API_KEY", "") + if not self.api_key: + raise ValueError( + "RerankerConfig.api_key is 'env' but JINA_API_KEY " + "environment variable is not set." + ) diff --git a/Core/configs/vlm_config.py b/Core/configs/vlm_config.py index 206d7a6..da8fcee 100644 --- a/Core/configs/vlm_config.py +++ b/Core/configs/vlm_config.py @@ -1,4 +1,8 @@ +import os from dataclasses import dataclass +from dotenv import load_dotenv + +load_dotenv() # ensure .env is loaded when used outside the API server @dataclass @@ -9,3 +13,15 @@ class VLMConfig: temperature: float = 0.1 api_key: str = "openai" api_base: str = "http://localhost:8003/v1" + + def __post_init__(self): + # Allow api_key to be resolved from environment variable + if not self.api_key or self.api_key in ("env", "ENV"): + env_key = os.environ.get("DASHSCOPE_API_KEY", "") + if env_key: + self.api_key = env_key + else: + raise ValueError( + "VLM api_key is empty/env but DASHSCOPE_API_KEY " + "environment variable is not set." + ) diff --git a/Core/pipelines/doc_tree_builder.py b/Core/pipelines/doc_tree_builder.py index 1fe588e..48d0ce6 100644 --- a/Core/pipelines/doc_tree_builder.py +++ b/Core/pipelines/doc_tree_builder.py @@ -3,7 +3,8 @@ from Core.pipelines.outline_extractor import extract_pdf_outline_in_chunks from Core.pipelines.pdf_refiner import pdf_info_refiner from Core.pipelines.legal_heading_detector import detect_legal_headings, detect_document_language -from Core.provider.extract_pdf_info import parse_doc, merge_middle_content +# MinerU imports are deferred to avoid top-level dependency on doclayout_yolo +# when using the Docling parser. See the ``else`` branch below. from Core.pipelines.tree_node_summary import generate_tree_node_summary from Core.configs.system_config import SystemConfig from Core.provider.llm import LLM @@ -125,6 +126,8 @@ def build_tree_from_pdf(cfg: SystemConfig, reforce: bool = False) -> DocumentTre log.info(f"[Docling] Extracted content cached to '{tmp_save_path}'") else: # ── MinerU (default) ────────────────────────────────────────── + from Core.provider.extract_pdf_info import parse_doc, merge_middle_content + backend = cfg.mineru.backend server_url = cfg.mineru.server_url method = cfg.mineru.method @@ -157,7 +160,7 @@ def build_tree_from_pdf(cfg: SystemConfig, reforce: bool = False) -> DocumentTre lang = detect_document_language(pdf_list, fallback="en") pdf_list = pdf_info_refiner(pdf_list, llm, lang=lang) pdf_list = detect_legal_headings(pdf_list, lang=lang) - title_outline = extract_pdf_outline_in_chunks(pdf_list, llm) + title_outline = extract_pdf_outline_in_chunks(pdf_list, llm, lang=lang) tree_index = construct_tree_index( tree_index=tree_index, pdf_list=pdf_list, title_outline=title_outline ) diff --git a/Core/pipelines/kg_refiner.py b/Core/pipelines/kg_refiner.py index 1e7ad97..17ac758 100644 --- a/Core/pipelines/kg_refiner.py +++ b/Core/pipelines/kg_refiner.py @@ -55,6 +55,7 @@ def __init__( max_length=graph_config.embedding_config.max_length, device=graph_config.embedding_config.device, api_base=graph_config.embedding_config.api_base, + api_key=graph_config.embedding_config.api_key, ) self.reranker = TextRerankerProvider( model_name=graph_config.reranker_config.model_name, @@ -62,6 +63,7 @@ def __init__( max_length=graph_config.reranker_config.max_length, backend=graph_config.reranker_config.backend, api_base=graph_config.reranker_config.api_base, + api_key=graph_config.reranker_config.api_key, ) # delete the old vector database if exists self.vdb_path = os.path.join(save_path, "kg_vdb") diff --git a/Core/pipelines/outline_extractor.py b/Core/pipelines/outline_extractor.py index cce06b1..d069179 100644 --- a/Core/pipelines/outline_extractor.py +++ b/Core/pipelines/outline_extractor.py @@ -1,7 +1,7 @@ from typing import Optional, List from Core.provider.llm import LLM -from Core.prompts.outline_prompt import OUTLINE_EXTRACTION_PROMPT, OutlineExtraction +from Core.prompts.outline_prompt import OUTLINE_EXTRACTION_PROMPT, OutlineExtraction, get_outline_prompt from Core.utils.utils import get_json_content, num_tokens, enumerate_pdf_list import logging @@ -43,7 +43,7 @@ def outline_refine(outline_list: List[Optional[str]]) -> List[Optional[str]]: return outline_list -def extract_pdf_outline(pdf_list: List[Optional[str]], llm: LLM) -> List[Optional[str]]: +def extract_pdf_outline(pdf_list: List[Optional[str]], llm: LLM, lang: str = "en") -> List[Optional[str]]: """Extract the outline from the PDF content.""" pdf_length = len(pdf_list) @@ -77,7 +77,7 @@ def extract_pdf_outline(pdf_list: List[Optional[str]], llm: LLM) -> List[Optiona json_format_title = get_json_content(title_list, selected_columns=SELECT_COLS) - prompt = OUTLINE_EXTRACTION_PROMPT.format(json_title=json_format_title) + prompt = get_outline_prompt(lang).format(json_title=json_format_title) log.info(f"number of token in prompt: {num_tokens(prompt)}") response: OutlineExtraction = llm.get_json_completion(prompt, OutlineExtraction) outline_list = [] @@ -199,14 +199,15 @@ def calculate_effective_height(entry: dict) -> float: def extract_pdf_outline_in_chunks( - pdf_list: List[Optional[str]], llm: LLM + pdf_list: List[Optional[str]], llm: LLM, lang: str = "en" ) -> List[Optional[str]]: """ Extracts the PDF outline by processing titles in chunks with improved, stateful context building to ensure accurate hierarchical structure. """ # 1. More precise token budget calculation (Your Point 1 & 4) - prompt_template_tokens = num_tokens(OUTLINE_EXTRACTION_PROMPT.format(json_title="")) + outline_prompt = get_outline_prompt(lang) + prompt_template_tokens = num_tokens(outline_prompt.format(json_title="")) # Leave a 400-token buffer for the LLM's response generation and other overhead available_tokens_for_titles = llm.config.max_tokens - prompt_template_tokens - 500 available_tokens_for_titles = min(2000, available_tokens_for_titles) @@ -313,7 +314,7 @@ def extract_pdf_outline_in_chunks( # 4. Call LLM with the constructed prompt prompt_payload = context_titles + new_titles_for_chunk json_format_title = get_json_content(prompt_payload, SELECT_COLS) - prompt = OUTLINE_EXTRACTION_PROMPT.format(json_title=json_format_title) + prompt = outline_prompt.format(json_title=json_format_title) log.info(f"Number of tokens in prompt: {num_tokens(prompt)}") try: diff --git a/Core/prompts/gbc_prompt.py b/Core/prompts/gbc_prompt.py index e7080ac..c29a936 100644 --- a/Core/prompts/gbc_prompt.py +++ b/Core/prompts/gbc_prompt.py @@ -515,3 +515,43 @@ class SecEXPSelection(BaseModel): --- Provided Analyses from Different Sources --- {partial_answers_str} """ + + +# ── Language-aware prompt helpers ───────────────────────────────────────────── + +_LANG_NAMES = { + "en": "English", + "id": "Bahasa Indonesia", + "zh": "Chinese", + "ja": "Japanese", + "ko": "Korean", + "ms": "Malay", + "th": "Thai", + "vi": "Vietnamese", + "de": "German", + "fr": "French", + "es": "Spanish", + "pt": "Portuguese", + "ar": "Arabic", +} + + +def get_lang_instruction(lang: str) -> str: + """Return a short instruction telling the LLM which language to respond in. + + Returns an empty string for English (default) to keep prompts minimal. + """ + if not lang or lang == "en": + return "" + lang_name = _LANG_NAMES.get(lang, lang) + return f" Respond in {lang_name}." + + +def get_iter_generation_sys_prompt(lang: str = "en") -> str: + """V2 iterative generation system prompt, with optional language instruction.""" + return ITER_GENERATION_SYS_PROMPT + get_lang_instruction(lang) + + +def get_synthesis_sys_prompt(lang: str = "en") -> str: + """V2 synthesis system prompt, with optional language instruction.""" + return SYNTHESIS_SYS_PROMPT.rstrip() + get_lang_instruction(lang) + "\n" diff --git a/Core/prompts/outline_prompt.py b/Core/prompts/outline_prompt.py index 0240881..61f4698 100644 --- a/Core/prompts/outline_prompt.py +++ b/Core/prompts/outline_prompt.py @@ -12,6 +12,43 @@ class OutlineExtraction(BaseModel): outline: List[OutlineExtractionOutput] +# ── Language-specific supplements for outline extraction ────────────────────── + +_OUTLINE_LANG_SUPPLEMENTS = { + "id": """ +### Additional Guidance — Indonesian Legal Documents + +This document is written in **Bahasa Indonesia** and follows Indonesian legal drafting conventions. +Use the following standard hierarchy when determining heading levels: + +| Pattern | Meaning | Recommended Level | +|---|---|---| +| **BAB** (+ Roman numeral) | Chapter | `level: 1` (top-level section) | +| **Bagian** (+ ordinal word: Kesatu, Kedua …) | Part | `level: 2` | +| **Paragraf** (+ number) | Sub-section | `level: 3` | +| **Pasal** (+ number) | Article | `level: 3` or `level: 4` | + +**Key rules for Indonesian legal documents:** +- The document title (e.g., "UNDANG-UNDANG …", "PERATURAN …") is **always `level: 0`**. +- BAB headings use **Roman numerals** (BAB I, BAB II, …) and are major divisions (`level: 1`). +- Bagian headings use **Indonesian ordinal words** (Bagian Kesatu, Bagian Kedua, …) — they subdivide a BAB (`level: 2`). +- Paragraf headings use **Arabic numerals** (Paragraf 1, Paragraf 2, …) — they subdivide a Bagian (`level: 3`). +- Pasal headings use **Arabic numerals** (Pasal 1, Pasal 2, …) — they are articles within the nearest parent section. +- Preserve all heading text exactly as it appears; do **not** translate. +""", +} + + +def get_outline_prompt(lang: str = "en") -> str: + """Return the outline extraction prompt, optionally augmented with + language-specific guidance (e.g. Indonesian legal hierarchy).""" + supplement = _OUTLINE_LANG_SUPPLEMENTS.get(lang, "") + if supplement: + # Insert the supplement just before the final instruction line + return OUTLINE_EXTRACTION_PROMPT + supplement + return OUTLINE_EXTRACTION_PROMPT + + # 2219 tokens OUTLINE_EXTRACTION_PROMPT = """ You are an expert in document structure analysis. Your task is to generate a structured outline based on a given list of text segments. diff --git a/Core/provider/embedding.py b/Core/provider/embedding.py index 580d1b3..9e8ead9 100644 --- a/Core/provider/embedding.py +++ b/Core/provider/embedding.py @@ -453,6 +453,7 @@ def __init__( device: str = "auto", max_length: int = 8192, api_base: str = None, + api_key: str = "empty", ): self.model_name = model_name @@ -486,7 +487,7 @@ def __init__( elif self.backend == "ollama": self.device = "ollama_service" elif self.backend == "openai": - self.client = openai.OpenAI(api_key="empty", base_url=api_base) + self.client = openai.OpenAI(api_key=api_key, base_url=api_base) else: raise ValueError( f"Unsupported backend: '{self.backend}'. Choose 'local' or 'ollama'." @@ -615,13 +616,18 @@ def embed_texts(self, texts: List[str]) -> np.ndarray: elif self.backend == "openai": BATCH_SIZE = 8 - n = len(texts) + # Sanitize: replace empty/whitespace-only texts with a placeholder + sanitized_texts = [ + t if t and t.strip() else "" + for t in texts + ] + n = len(sanitized_texts) all_embeddings = [] num_batches = math.ceil(n / BATCH_SIZE) for i in tqdm( range(0, n, BATCH_SIZE), desc="Embedding texts", total=num_batches ): - chunk = texts[i : i + BATCH_SIZE] + chunk = sanitized_texts[i : i + BATCH_SIZE] response = self.client.embeddings.create( model=self.model_name, input=chunk, diff --git a/Core/provider/llm.py b/Core/provider/llm.py index f353edc..1f293aa 100644 --- a/Core/provider/llm.py +++ b/Core/provider/llm.py @@ -109,7 +109,10 @@ def get_completion( "max_tokens": get_max_output_tokens(messages, self.max_tokens), "frequency_penalty": self.frequency_penalty, "presence_penalty": self.presence_penalty, - "extra_body": {"chat_template_kwargs": {"enable_thinking": False}}, + "extra_body": { + "enable_thinking": False, # DashScope + "chat_template_kwargs": {"enable_thinking": False}, # vLLM + }, } if json_response: parameters["response_format"] = {"type": "json_object"} @@ -167,7 +170,8 @@ def get_json_completion( messages=messages, response_format=schema, extra_body={ - "chat_template_kwargs": {"enable_thinking": think_mode}, + "enable_thinking": think_mode, # DashScope + "chat_template_kwargs": {"enable_thinking": think_mode}, # vLLM }, ) diff --git a/Core/provider/rerank.py b/Core/provider/rerank.py index d3aae30..295c302 100644 --- a/Core/provider/rerank.py +++ b/Core/provider/rerank.py @@ -28,6 +28,7 @@ def __init__( torch_dtype: torch.dtype = torch.bfloat16, backend: str = "local", api_base: str = None, + api_key: str = None, ): """ 初始化Reranker Provider。 @@ -38,12 +39,14 @@ def __init__( max_length (int): 模型的最大序列长度。 use_flash_attention (bool): 是否尝试使用Flash Attention 2以提升性能。 torch_dtype (torch.dtype): 模型加载时使用的数据类型,如 torch.bfloat16。 - backend (str): 后端类型,支持 'local' 和 'vllm'。 + backend (str): 后端类型,支持 'local', 'vllm', 'jina'。 api_base (str): 如果使用 'vllm' 后端,必须提供API基础URL。 + api_key (str): API key for cloud backends (e.g., Jina). """ self.model_name = model_name self.max_length = max_length self.backend = backend.lower() + self.api_key = api_key # ========================================================== # vLLM 后端逻辑 @@ -97,9 +100,23 @@ def __init__( log.info("Reranker model loaded successfully.") + # ========================================================== + # Jina Reranker API 后端 + # ========================================================== + elif self.backend == "jina": + if not api_key: + raise ValueError("api_key must be provided for the 'jina' backend.") + self.rerank_url = api_base or "https://api.jina.ai/v1/rerank" + self.session = requests.Session() + self.session.headers.update({ + "Content-Type": "application/json", + "Authorization": f"Bearer {self.api_key}", + }) + log.info(f"Using Jina reranker backend. Model: {self.model_name}, Endpoint: {self.rerank_url}") + else: raise ValueError( - f"Unsupported backend: {self.backend}. Choose 'local' or 'vllm'." + f"Unsupported backend: {self.backend}. Choose 'local', 'vllm', or 'jina'." ) self._define_prompt_template() @@ -111,7 +128,7 @@ def clean_cache(self): torch.cuda.empty_cache() log.info("Cache cleaned.") else: - log.info(f"{self.backend} backend requires no local cache cleaning.") + log.debug(f"{self.backend} backend requires no local cache cleaning.") def close(self) -> None: """ @@ -132,10 +149,10 @@ def close(self) -> None: gc.collect() log.info("Local reranker resources released.") - elif self.backend == "vllm": + elif self.backend in ("vllm", "jina"): if hasattr(self, "session"): - self.session.close() # 关闭 requests session - log.info("vLLM backend session closed.") + self.session.close() + log.info(f"{self.backend} backend session closed.") log.info("TextRerankerProvider closed.") @@ -333,6 +350,65 @@ def rerank( raise e + elif self.backend == "jina": + # Jina Reranker API: simple REST call, no prompt template needed. + # The instruction is prepended to the query for context. + if instruction: + full_query = f"{instruction}\n\n{query}" + else: + full_query = query + + all_results = [] + num_docs = len(documents) + num_batches = math.ceil(num_docs / batch_size) + + try: + for i in tqdm( + range(0, num_docs, batch_size), + desc="Reranking Batches (Jina)", + total=num_batches, + disable=num_docs < batch_size, + ): + batch_docs = documents[i : i + batch_size] + payload = { + "model": self.model_name, + "query": full_query, + "documents": batch_docs, + "top_n": len(batch_docs), + } + + response = self.session.post(self.rerank_url, json=payload) + response.raise_for_status() + + data = response.json() + results = data.get("results") + + if results is None or not isinstance(results, list): + log.error( + f"Unexpected response from Jina reranker: {data}" + ) + raise ValueError("Failed to parse 'results' from Jina response.") + + # Map results back to global indices + for r in results: + r["global_index"] = i + r.get("index", 0) + all_results.extend(results) + + # Sort by global index to return scores in original document order + all_results.sort(key=lambda r: r.get("global_index", 0)) + + # Jina scores can be negative; normalize to [0, 1] using sigmoid + all_scores = [ + 1.0 / (1.0 + math.exp(-r["relevance_score"])) + for r in all_results + ] + + return all_scores + + except requests.exceptions.RequestException as e: + log.error(f"Error calling Jina reranker API: {e}") + raise e + elif self.backend == "local": # 1. 创建所有的查询-文档对 pairs = [ diff --git a/Core/provider/vlm.py b/Core/provider/vlm.py index 8c003a6..8779740 100644 --- a/Core/provider/vlm.py +++ b/Core/provider/vlm.py @@ -257,7 +257,11 @@ def generate( ) -> str: content = self._prepare_messages(prompt_or_memory, images) completion = self.client.chat.completions.create( - model=self.model_name, messages=content, temperature=self.temperature + model=self.model_name, messages=content, temperature=self.temperature, + extra_body={ + "enable_thinking": False, # DashScope + "chat_template_kwargs": {"enable_thinking": False}, # vLLM + }, ) if completion.usage: @@ -299,6 +303,10 @@ def generate_json( model=self.model_name, messages=messages, response_format={"type": "json_object"}, # Use modern JSON mode + extra_body={ + "enable_thinking": False, # DashScope + "chat_template_kwargs": {"enable_thinking": False}, # vLLM + }, ) if completion.usage: diff --git a/Core/rag/gbc_answer.py b/Core/rag/gbc_answer.py index 2a88634..3101180 100644 --- a/Core/rag/gbc_answer.py +++ b/Core/rag/gbc_answer.py @@ -13,6 +13,8 @@ VLM_GENERATION_USER_PROMPT, SYNTHESIS_SYS_PROMPT, SYNTHESIS_USER_PROMPT, + get_iter_generation_sys_prompt, + get_synthesis_sys_prompt, ) from Core.utils.utils import num_tokens, TextProcessor from Core.utils.table_utils import table2text @@ -23,9 +25,10 @@ class AnswerAgent: - def __init__(self, llm: LLM, vlm: VLM): + def __init__(self, llm: LLM, vlm: VLM, lang: str = "en"): self.llm = llm self.vlm = vlm + self.lang = lang or "en" def _prepare_evidence( self, retrieved_nodes: List[Dict] @@ -59,6 +62,8 @@ def _build_prompts( """ Builds chunked and formatted prompts for both LLM and VLM. """ + sys_prompt = get_iter_generation_sys_prompt(self.lang) + # 1. Build VLM prompts for image-based evidence image_prompts = [] for node in image_nodes: @@ -69,7 +74,7 @@ def _build_prompts( node_content = node.get("content", "") content = f"An image in Page: {page}, Caption: {node_content}" vlm_prompt = ( - f"{ITER_GENERATION_SYS_PROMPT.strip()}\n\n" + f"{sys_prompt.strip()}\n\n" f"{VLM_GENERATION_USER_PROMPT.format(question=query, content=content).strip()}" ) if img_path: @@ -92,7 +97,7 @@ def _build_prompts( ) + graph_prompt_part ) - system_prompt_tokens = num_tokens(ITER_GENERATION_SYS_PROMPT) + system_prompt_tokens = num_tokens(sys_prompt) content_limit = ( self.llm.config.max_tokens - system_prompt_tokens - base_prompt_tokens - 400 ) # 400 as buffer @@ -148,7 +153,7 @@ def _build_prompts( ) gen_memory = Memory() gen_memory.add( - Message(role="system", content=ITER_GENERATION_SYS_PROMPT) + Message(role="system", content=sys_prompt) ) gen_memory.add(Message(role="user", content=user_prompt)) text_prompts.append(gen_memory) @@ -173,7 +178,7 @@ def _build_prompts( + graph_prompt_part ) gen_memory = Memory() - gen_memory.add(Message(role="system", content=ITER_GENERATION_SYS_PROMPT)) + gen_memory.add(Message(role="system", content=sys_prompt)) gen_memory.add(Message(role="user", content=user_prompt)) text_prompts.append(gen_memory) @@ -237,11 +242,12 @@ def _synthesize_from_chunks( ) log.info("Synthesizing the final answer from partial results...") + synth_sys = get_synthesis_sys_prompt(self.lang) synthesis_user_prompt = SYNTHESIS_USER_PROMPT.format( user_question=query, partial_answers_str=partial_answers_str ) synthesis_memory = Memory() - synthesis_memory.add(Message(role="system", content=SYNTHESIS_SYS_PROMPT)) + synthesis_memory.add(Message(role="system", content=synth_sys)) synthesis_memory.add(Message(role="user", content=synthesis_user_prompt)) try: @@ -493,11 +499,12 @@ def answer_global_question( ) log.info("Synthesizing the final answer from partial results...") + synth_sys = get_synthesis_sys_prompt(self.lang) synthesis_user_prompt = SYNTHESIS_USER_PROMPT.format( user_question=original_query, partial_answers_str=partial_answers_str ) synthesis_memory = Memory() - synthesis_memory.add(Message(role="system", content=SYNTHESIS_SYS_PROMPT)) + synthesis_memory.add(Message(role="system", content=synth_sys)) synthesis_memory.add(Message(role="user", content=synthesis_user_prompt)) try: diff --git a/Core/rag/gbc_rag.py b/Core/rag/gbc_rag.py index 30ca656..7de36ad 100644 --- a/Core/rag/gbc_rag.py +++ b/Core/rag/gbc_rag.py @@ -52,6 +52,7 @@ def __init__( vlm: VLM, config: GBCRAGConfig, gbc_index: GBC, + lang: str = "en", ): super().__init__( llm, @@ -71,15 +72,18 @@ def __init__( device=self.cfg.reranker_config.device, backend=self.cfg.reranker_config.backend, api_base=self.cfg.reranker_config.api_base, + api_key=self.cfg.reranker_config.api_key, ) # GBC RAG config self.threshold_e = self.cfg.sim_threshold_e self.select_depth = self.cfg.select_depth self.max_retry = self.cfg.max_retry + self.lang = lang or "en" + # Agents self.planner = TaskPlanner(llm=self.llm) - self.answer = AnswerAgent(llm=self.llm, vlm=self.vlm) + self.answer = AnswerAgent(llm=self.llm, vlm=self.vlm, lang=self.lang) self.retriever = Retriever( varient=self.varient, reranker=self.reranker, diff --git a/api/main.py b/api/main.py index 758fe8d..7ccc55f 100644 --- a/api/main.py +++ b/api/main.py @@ -1,4 +1,7 @@ """BookRAG FastAPI application entry point.""" +from dotenv import load_dotenv +load_dotenv() # load .env before any os.getenv / os.environ calls + import logging import os import uuid as _uuid diff --git a/api/services/chat.py b/api/services/chat.py index 33bbda0..d679631 100644 --- a/api/services/chat.py +++ b/api/services/chat.py @@ -195,7 +195,9 @@ def _rewrite_query_sync(query: str, history: List[dict], config_path: str) -> st return query -def _query_single_doc_sync(query: str, tenant_id: str, doc_id: str, config_path: str) -> str: +def _query_single_doc_sync( + query: str, tenant_id: str, doc_id: str, config_path: str, lang: str = "en" +) -> str: """Run GBC RAG query against a single document (sync, for thread pool). *query* should already be a self-contained, rewritten query when conversation @@ -208,7 +210,7 @@ def _query_single_doc_sync(query: str, tenant_id: str, doc_id: str, config_path: llm = _get_llm(config_path) vlm = _get_vlm(config_path) rag_cfg = GBCRAGConfig() - rag = GBCRAG(llm=llm, vlm=vlm, config=rag_cfg, gbc_index=gbc_index) + rag = GBCRAG(llm=llm, vlm=vlm, config=rag_cfg, gbc_index=gbc_index, lang=lang) result = rag.get_GBC_info(query) return result if isinstance(result, str) else str(result) @@ -268,42 +270,58 @@ async def handle_query( {"role": "user", "content": query}) # ── RAG retrieval ───────────────────────────────────────────────────────── + + # ── Fetch per-doc metadata (dates + languages) — best-effort ────────── + doc_dates: dict[str, str] = {} + doc_langs: dict[str, str] = {} + try: + for did in doc_ids[:5]: + doc_record = await db.get_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, did) + if doc_record: + ddate = doc_record.get("document_date") or doc_record.get("created_at") + if ddate: + doc_dates[did] = str(ddate)[:10] # YYYY-MM-DD + dlang = doc_record.get("document_lang") + if dlang and dlang != "auto": + doc_langs[did] = dlang + except Exception: + pass # Non-fatal: metadata is best-effort + if cross_doc or len(doc_ids) > 1: # Parallel per-doc queries, answers synthesised into one response target_docs = doc_ids[:5] # cap to avoid GPU overload answers = await asyncio.gather(*[ loop.run_in_executor( - _executor, _query_single_doc_sync, effective_query, tenant_id, did, config_path + _executor, _query_single_doc_sync, + effective_query, tenant_id, did, config_path, + doc_langs.get(did, "en"), ) for did in target_docs ]) - # ── Temporal awareness: fetch document dates for cross-doc synthesis ── - doc_dates: dict[str, str] = {} - try: - for did in target_docs: - doc_record = await db.get_document(MONGO_URI, MONGO_DB_PREFIX, tenant_id, did) - if doc_record: - ddate = doc_record.get("document_date") or doc_record.get("created_at") - if ddate: - doc_dates[did] = str(ddate)[:10] # YYYY-MM-DD - except Exception: - pass # Non-fatal: temporal info is best-effort - - # Build answer with temporal context + # Build answer with temporal + language context parts = [] for did, ans in zip(target_docs, answers): date_str = f" (dated {doc_dates[did]})" if did in doc_dates else "" - parts.append(f"[Document: {did}{date_str}]\n{ans}") + lang_str = f" [lang: {doc_langs[did]}]" if did in doc_langs else "" + parts.append(f"[Document: {did}{date_str}{lang_str}]\n{ans}") + # Prepend contextual notes when metadata is present + notes = [] if doc_dates: - # Prepend a temporal instruction for the combined answer - temporal_note = ( + notes.append( "NOTE: The answers below come from multiple documents with different dates. " "When documents contain contradictory or overlapping information, " - "prefer the information from the more recently dated document.\n\n" + "prefer the information from the more recently dated document." + ) + unique_langs = set(doc_langs.values()) + if len(unique_langs) > 1: + notes.append( + "NOTE: The answers below come from documents in different languages. " + "Each answer is in its document's language; synthesise accordingly." ) - answer = temporal_note + "\n\n---\n\n".join(parts) + if notes: + answer = "\n\n".join(notes) + "\n\n" + "\n\n---\n\n".join(parts) else: answer = "\n\n---\n\n".join(parts) else: @@ -311,8 +329,10 @@ async def handle_query( if not doc_id: answer = "No accessible documents found for your query." else: + lang = doc_langs.get(doc_id, "en") answer = await loop.run_in_executor( - _executor, _query_single_doc_sync, effective_query, tenant_id, doc_id, config_path + _executor, _query_single_doc_sync, + effective_query, tenant_id, doc_id, config_path, lang, ) # ── Persist assistant message ────────────────────────────────────────────── diff --git a/config/gbc.yaml b/config/gbc.yaml index b330c49..439a422 100644 --- a/config/gbc.yaml +++ b/config/gbc.yaml @@ -2,11 +2,12 @@ pdf_path: TODO save_path: TODO +parser: docling llm: - model_name: Qwen/Qwen3.5-35B-A3B-AWQ - api_key: openai - api_base: http://localhost:8003/v1 + model_name: qwen3.5-35b-a3b + api_key: env + api_base: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 backend: openai max_tokens: 8000 temperature: 0.1 @@ -16,9 +17,9 @@ llm: vlm: - model_name: Qwen/Qwen3.5-35B-A3B-AWQ - api_key: openai - api_base: http://localhost:8003/v1 + model_name: qwen3.5-35b-a3b + api_key: env + api_base: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 temperature: 0.1 max_tokens: 6000 backend: gpt @@ -44,17 +45,19 @@ graph: max_gleaning: 1 refine_type: "advanced" embedding_config: - model_name: Qwen3-Embedding-0.6B + model_name: text-embedding-v3 backend: openai + api_key: env max_length: 4096 - device: "cuda:2" - api_base: "http://localhost:8007/v1" + device: "cpu" + api_base: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1" reranker_config: - model_name: Qwen3-Reranker-4B + model_name: jina-reranker-v3 max_length: 4096 - device: "cuda:2" - backend: vllm - api_base: "http://localhost:8011/v1" + device: "cpu" + backend: jina + api_base: "https://api.jina.ai/v1/rerank" + api_key: env vdb: @@ -75,11 +78,12 @@ rag: select_depth: 2 max_retry: 2 reranker_config: - model_name: Qwen3-Reranker-4B + model_name: jina-reranker-v3 max_length: 4096 - device: "cuda:7" - backend: vllm - api_base: "http://localhost:8011/v1" + device: "cpu" + backend: jina + api_base: "https://api.jina.ai/v1/rerank" + api_key: env mm_reranker_config: model_name: Alibaba-NLP/gme-Qwen2-VL-2B-Instruct device: "cuda:2" diff --git a/e2e_test_output/docling/BOOKRAG_VLDB_2026_full_merged_content.json b/e2e_test_output/docling/BOOKRAG_VLDB_2026_full_merged_content.json new file mode 100644 index 0000000..fede754 --- /dev/null +++ b/e2e_test_output/docling/BOOKRAG_VLDB_2026_full_merged_content.json @@ -0,0 +1,3141 @@ +[ + { + "type": "text", + "text": "BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents", + "text_level": 0, + "page_idx": 0, + "pdf_id": 0, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Shu Wang The Chinese University of Hong Kong, Shenzhen shuwang3@link.cuhk.edu.cn", + "text_level": -1, + "page_idx": 0, + "pdf_id": 1, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Yingli Zhou The Chinese University of Hong Kong, Shenzhen yinglizhou@link.cuhk.edu.cn", + "text_level": -1, + "page_idx": 0, + "pdf_id": 2, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Yixiang Fang The Chinese University of Hong Kong, Shenzhen fangyixiang@cuhk.edu.cn", + "text_level": -1, + "page_idx": 0, + "pdf_id": 3, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "ABSTRACT", + "text_level": 0, + "page_idx": 0, + "pdf_id": 4, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "As an effective method to boost the performance of Large Language Models (LLMs) on the question answering (QA) task, RetrievalAugmented Generation (RAG), which queries highly relevant information from external complex documents, has attracted tremendous attention from both industry and academia. Existing RAG approaches often focus on general documents, and they overlook the fact that many real-world documents (such as books, booklets, handbooks, etc.) have a hierarchical structure, which organizes their content from different granularity levels, leading to poor performance for the QA task. To address these limitations, we introduce BookRAG, a novel RAG approach targeted for documents with a hierarchical structure, which exploits logical hierarchies and traces entity relations to query the highly relevant information. Specifically, we build a novel index structure, called BookIndex, by extracting a hierarchical tree from the document, which serves as the role of its table of contents, using a graph to capture the intricate relationships between entities, and mapping entities to tree nodes. Leveraging the BookIndex, we then propose an agent-based query method inspired by the Information Foraging Theory, which dynamically classifies queries and employs a tailored retrieval workflow. Extensive experiments on three widely adopted benchmarks demonstrate that BookRAG achieves state-of-the-art performance, significantly outperforming baselines in both retrieval recall and QA accuracy while maintaining competitive efficiency.", + "text_level": -1, + "page_idx": 0, + "pdf_id": 5, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "PVLDB Reference Format:", + "text_level": 0, + "page_idx": 0, + "pdf_id": 6, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Shu Wang, Yingli Zhou, and Yixiang Fang. BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents. PVLDB, 19(1): XXX-XXX, 2025. doi:XX.XX/XXX.XX", + "text_level": -1, + "page_idx": 0, + "pdf_id": 7, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "PVLDB Artifact Availability:", + "text_level": 0, + "page_idx": 0, + "pdf_id": 8, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "The source code, data, and/or other artifacts have been made available at https://github.com/sam234990/BookRAG.", + "text_level": -1, + "page_idx": 0, + "pdf_id": 9, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "1 INTRODUCTION", + "text_level": 0, + "page_idx": 0, + "pdf_id": 10, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Large Language Models (LLMs) such as Qwen 3 [60] and Gemini 2.5 [13] have revolutionized the Question Answering (QA) system [15, 61, 65]. The industry has increasingly adopted LLMs to build QA systems that assist users and reduce manual effort in", + "text_level": -1, + "page_idx": 0, + "pdf_id": 11, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "This work is licensed under the Creative Commons BY-NC-ND 4.0 International License. Visit https://creativecommons.org/licenses/by-nc-nd/4.0/ to view a copy of this license. For any use beyond those covered by this license, obtain permission by emailing info@vldb.org. Copyright is held by the owner/author(s). Publication rights licensed to the VLDB Endowment.", + "text_level": -1, + "page_idx": 0, + "pdf_id": 12, + "middle_json": { + "docling_label": "footnote" + } + }, + { + "type": "text", + "text": "Proceedings of the VLDB Endowment, Vol. 19, No. 1 ISSN 2150-8097. doi:XX.XX/XXX.XX", + "text_level": -1, + "page_idx": 0, + "pdf_id": 13, + "middle_json": { + "docling_label": "footnote" + } + }, + { + "type": "text", + "text": "Figure 1: Comparison of existing methods and BookRAG for complex document QA.", + "text_level": -1, + "page_idx": 0, + "pdf_id": 14, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "image", + "text": "", + "text_level": -1, + "page_idx": 0, + "pdf_id": 15, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-1.png", + "image_caption": [ + "cref='#/texts/14'" + ], + "image_footnote": [], + "middle_json": { + "docling_label": "picture" + } + }, + { + "type": "text", + "text": "many applications [65, 67], such as financial auditing [29, 37], legal compliance [8], and scientific discovery [56]. However, directly relying on LLMs may lead to missing domain knowledge and generating outdated or unsupported information. To address these issues, Retrieval-Augmented Generation (RAG) has been widely adopted [17, 22] by retrieving relevant domain knowledge from external sources and using it to guide the LLM during response generation. On the other hand, in real-world enterprise scenarios, domain knowledge is often stored in long-form documents, such as technical handbooks, API reference manuals, and operational guidebooks [49]. A notable feature of such documents is that they follow the structure of books, characterized by intricate layouts and rigorous logical hierarchies (e.g., explicit tables of contents, nested chapters, and multi-level sections). In this paper, we aim to design an effective RAG system for QA over long and highly structured documents.", + "text_level": -1, + "page_idx": 0, + "pdf_id": 16, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· Prior works. The existing RAG approaches for documentlevel QA generally fall into two paradigms, as illustrated in Figure 1. The first paradigm relies on OCR (Optical Character Recognition) to convert the document into plain text, after which any text-based RAG method can be directly applied. Among text-based RAG methods, state-of-the-art approaches increasingly adopt graph-based RAG [6, 62, 66], where graph data serves as an external knowledge source because it captures rich semantic information and the", + "text_level": -1, + "page_idx": 0, + "pdf_id": 17, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "Table 1: Comparison of representative methods and our BookRAG.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 18, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 1, + "pdf_id": 19, + "img_path": "", + "table_caption": [ + "cref='#/texts/17'" + ], + "table_footnote": [], + "table_body": "| Type | Representative Method | Core Feature | Multi-hop Reasoning | Document Parsing | Query Workflow |\n|------------------|---------------------------|--------------------------------------------------------------|-----------------------|--------------------|------------------|\n| Graph-based | RAPTOR [45] GraphRAG [16] | Recursive summarization | | | Static |\n| Layout segmented | MM-Vanilla | Global community detection | | | Static |\n| Layout segmented | DocETL [47] | Multi-modal retrieval LLM-based document processing pipeline | | | Static Manual |\n| Doc-Native | BookRAG (Ours) | Structure-award Index & Agent-based retrieval | | | Dynamic |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "text", + "text": "relational structure between entities. As shown in Table 1, two representative methods are GraphRAG [16] and RAPTOR [45]. Specifically, GraphRAG first constructs a knowledge graph (KG) from the textual corpus, and then applies the Leiden community detection algorithm [51] to obtain hierarchical clusters. Summaries are generated for each community, providing a comprehensive, global overview of the entire corpus. RAPTOR builds a recursive tree structure by iteratively clustering document chunks and summarizing them at each level, enabling the model to capture both fine-grained and high-level semantic information across the corpus.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 20, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "In contrast, the second paradigm, layout-aware segmentation [5, 52], first parses the document into structured blocks that preserve the original layout and information of the document, such as paragraphs, tables, figures, or equations. By doing so, it not only avoids the fixed chunk size used in the first paradigm, which often leads to fragmented information, but also retains document-native structural information. These blocks often exhibit multimodal characteristics, and a typical approach is to apply multimodal retrieval to obtain relevant content for answering queries. Recently, a state-ofthe-art method in this category, DocETL [47], provides a declarative interface that allows users to manually define LLM-based processing pipelines to analyze the retrieved blocks. These pipelines consist of LLM-powered operations combined with task-specific optimizations.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 21, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· Limitations of existing works. However, these methods suffer from two fundamental limitations ( L for short): L1: Failure to capture the deep connection of document structure and semantics. Text-based approaches cannot capture the structural layout of the document, resulting in the loss of important relationships stored in the hierarchical blocks, such as tables nested within a specific section. While layout-segmented methods preserve document structure, they cannot capture the relationships between different blocks in the document, which limits their capability for multi-hop reasoning across these blocks and ultimately affects their overall performance. L2: Static of query workflows. In real-world QA scenarios, user queries are highly heterogeneous, ranging from simple keyword lookups to complex multi-hop questions that require synthesizing evidence scattered across different parts of the document. Applying a uniform strategy, such as static or manually predefined workflows, to diverse needs is inefficient; for example, complex queries often require question decomposition, whereas simple queries do not.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 22, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· Our technical contributions. To bridge this gap, we introduce BookRAG , the first retrieval-augmented generation method built upon a document-native BookIndex , designed to document", + "text_level": -1, + "page_idx": 1, + "pdf_id": 23, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "QA tasks. Specifically, to capture the deep connection of the relation in the document, BookIndex organizes information through two complementary structures. First, to preserve the document's native logical hierarchy, we organize the parsed content blocks into a hierarchical tree structure, which serves as the role of its table of contents. Second, to capture the intricate relations within these blocks, we construct a KG containing fine-grained entities. Finally, we unify these two structures by mapping the KG entities to their corresponding tree nodes.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 24, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "However, effective multi-hop reasoning on the graph relies on a high-quality KG [62, 66], which is often compromised by entity ambiguity (e.g., distinct entities with names like 'LLM' and 'Large Language Model'). To address this, we propose a novel gradient-based entity resolution method that analyzes the similarity distribution of candidate entities. By identifying sharp drops in similarity scores, we can efficiently distinguish and merge coreferent entities, thereby ensuring graph connectivity and enhancing reasoning capabilities.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 25, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Building upon the BookIndex, we address the static of query workflows ( L2 ) by implementing an agent-based retrieval . Specifically, our agent first classifies user queries based on their intent and complexity, and then dynamically generates tailored retrieval workflows. Grounded in Information Foraging Theory [42], our retrieval process mimics foraging by using Selector to narrow down the search space via information scents and Reasoner to locate highly relevant evidence.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 26, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "We conduct extensive experiments on three widely adopted datasets to validate the effectiveness and efficiency of our BookRAG, comparing it against several state-of-the-art baselines. The experimental results demonstrate that BookRAG consistently achieves superior performance in both retrieval recall and QA accuracy across all datasets. Furthermore, our detailed analysis validates the critical contributions of our key features, such as the high-quality KG and the agent-based retrieval mechanism.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 27, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "We summarize our contributions as:", + "text_level": -1, + "page_idx": 1, + "pdf_id": 28, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· We introduce BookRAG , a novel method that constructs a document-native BookIndex by integrating a hierarchical tree of document layout blocks with a KG storing finegrained entity relations.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 29, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· We propose an Agent-based Retrieval approach inspired by Information Foraging Theory, which dynamically classifies queries and configures optimal retrieval workflows to locate highly relevant evidence within documents.", + "text_level": -1, + "page_idx": 1, + "pdf_id": 30, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· Extensive experiments on multiple benchmarks show that BookRAG significantly outperforms existing baselines, attaining state-of-the-art performance in solving complex", + "text_level": -1, + "page_idx": 1, + "pdf_id": 31, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "2", + "text_level": -1, + "page_idx": 1, + "pdf_id": 32, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "document QA tasks while maintaining competitive efficiency.", + "text_level": -1, + "page_idx": 2, + "pdf_id": 33, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Outline. We review related work in Section 2. Section 3 introduces the problem formulation, IFT, and RAG workflow. In Section 4, we present the structure of our BookIndex and its construction. Section 5 presents our agent-based retrieval, elaborating on the query classification and operators used in the structured execution of BookRAG. We present the experimental results and detailed analysis in Section 6, and conclude the paper in Section 7.", + "text_level": -1, + "page_idx": 2, + "pdf_id": 34, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "2 RELATED WORK", + "text_level": 0, + "page_idx": 2, + "pdf_id": 35, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "In this section, we review the related works, including LLM in document analysis and the modern representative RAG approaches.", + "text_level": -1, + "page_idx": 2, + "pdf_id": 36, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· LLM in document analysis. Recent advances in LLMs have offered opportunities to leverage LLMs in document data analysis. Due to the robust semantic reasoning capabilities of LLMs, there is an increasing number of works focusing on transferring unstructured documents (e.g., HTML, PDFs, and raw text) into structured formats, such as relational tables [1, 7, 25, 38]. For example, Evaporate [1] utilizes LLMs to synthesize extraction code, enabling cost-effective conversion of semi-structured web documents into structured databases without heavy manual annotation. In addition, several LLM-based document analysis systems have been proposed to equip standard data pipelines with semantic understanding [28, 40, 47, 53]. For instance, LOTUS [40] extends the relational model with semantic operators, allowing users to execute SQL-like queries with LLM-powered predicates (e.g., filter, join) over unstructured text corpora. Similarly, DocETL [47] introduces an agentic framework to optimize complex information extraction tasks. Furthermore, another line of research proposes to directly analyze or parse documents by viewing the document pages as images, thereby preserving critical layout and visual information [26, 31, 54].", + "text_level": -1, + "page_idx": 2, + "pdf_id": 37, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· RAG approaches. RAG has been proven to excel in many tasks, including open-ended question answering [24, 48], programming context [9, 10], SQL rewrite [30, 50], and data cleaning [35, 36, 43]. The naive RAG technique relies on retrieving query-relevant contexts from external knowledge bases to mitigate the 'hallucination' of LLMs. Recently, many RAG approaches [16, 18, 19, 21, 27, 32, 32, 45, 55, 58, 66] have adopted graph structures to organize the information and relationships within documents, achieving improved overall retrieval performance. For more details, please refer to the recent survey of graph-based RAG methods [41]. Besides, the Agentic RAG paradigm has been widely studied, employing autonomous agents to dynamically orchestrate and refine the RAG pipeline, thus significantly boosting the reasoning robustness and generation fidelity [2, 23, 59].", + "text_level": -1, + "page_idx": 2, + "pdf_id": 38, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "3 PRELIMINARIES", + "text_level": 0, + "page_idx": 2, + "pdf_id": 39, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "This section formalizes the research problem of complex document QA, introduces the foundational Information Foraging Theory (IFT), and briefly reviews the general workflow of RAG systems", + "text_level": -1, + "page_idx": 2, + "pdf_id": 40, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "3.1 Problem Formulation", + "text_level": 0, + "page_idx": 2, + "pdf_id": 41, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "We study the problem of Question Answering (QA) over complex documents, which aims to answer user queries based on long-form", + "text_level": -1, + "page_idx": 2, + "pdf_id": 42, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "3", + "text_level": -1, + "page_idx": 2, + "pdf_id": 43, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "documents [5, 11, 33]. Formally, a document 𝐷 is represented as a sequence of 𝑁 pages, 𝐷 = { 𝑃 𝑖 } 𝑁 𝑖 = 1 . These pages collectively contain a sequence of content blocks B = { 𝑏 𝑗 } 𝑀 𝑗 = 1 , where each block 𝑏 𝑗 represents a distinct element (e.g., text segment, section header, table, or image) organized within a logical chapter hierarchy. Given a user query 𝑞 , the goal is to generate an accurate answer 𝐴 , ideally grounded in a specific set of evidence blocks 𝐸 ⊂ B . The task is formulated as developing a method S that maps the structured document and the query to the final answer:", + "text_level": -1, + "page_idx": 2, + "pdf_id": 44, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "𝐴 = S( 𝐷,𝑞 ) (1)", + "text_level": -1, + "page_idx": 2, + "pdf_id": 45, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "where S should navigate both the sequential page content and the logical hierarchy of 𝐷 to synthesize the response.", + "text_level": -1, + "page_idx": 2, + "pdf_id": 46, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "3.2 Information Foraging Theory", + "text_level": 0, + "page_idx": 2, + "pdf_id": 47, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Information Foraging Theory (IFT) [42] provides a framework for understanding information access as a process analogous to animal foraging. It suggests that users follow cues, known as information scent (e.g., keywords or icons), to navigate between clusters of content, known as information patches (e.g., sections in handbooks). The goal is to maximize the rate of valuable information gain while minimizing effort, guiding the decision to either stay within a patch or seek a new one.", + "text_level": -1, + "page_idx": 2, + "pdf_id": 48, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Consider experts seeking a solution to a specific problem within a large technical handbook. They first extract key terms related to the problem, which act as information scent. This scent guides them to navigate towards one or more promising sections (the information patches). Within these patches, they analyze the diverse content to extract the precise knowledge required to formulate a final answer", + "text_level": -1, + "page_idx": 2, + "pdf_id": 49, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "3.3 RAG workflow", + "text_level": 0, + "page_idx": 2, + "pdf_id": 50, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Retrieval-Augmented Generation (RAG) systems typically operate in a two-phase framework [6, 16, 41]. In the Offline Indexing phase, unstructured corpus data is organized into a structured index, which can take various forms such as vector databases or KG [66]. Subsequently, in the Online Retrieval phase, the system retrieves relevant components (e.g., text chunks or subgraphs) based on the user query 𝑞 to inform the LLM's generation. However, these general workflows often treat the index as a structure derived purely from content, potentially detaching it from the document's original logical hierarchy. In contrast, our approach seeks to deeply integrate these retrieval structures with the document's native tree topology.", + "text_level": -1, + "page_idx": 2, + "pdf_id": 51, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "4 BOOKINDEX", + "text_level": 0, + "page_idx": 2, + "pdf_id": 52, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "This section introduces our proposed BookIndex , a hierarchical structure-aware index designed to capture both the explicit logical hierarchy and the intricate entity relations within complex documents. We first formally define the structure of the BookIndex ( 𝐵 ). Subsequently, we elaborate on the sequential, two-stage construction process: (1) Tree Construction , which parses the document's layout to establish a hierarchical nodes, each categorized by type; and (2) Graph Construction , which extracts fine-grained entity knowledge from the tree nodes and refines it through a novel gradient-based entity resolution method.", + "text_level": -1, + "page_idx": 2, + "pdf_id": 53, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Figure 2: The BookIndex Construction process. This phase includes Tree Construction, derived from Layout Parsing and Section Filtering, and Graph Construction, which involves KG Construction and Gradient-based Entity Resolution.", + "text_level": -1, + "page_idx": 3, + "pdf_id": 54, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "image", + "text": "", + "text_level": -1, + "page_idx": 3, + "pdf_id": 55, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-2.png", + "image_caption": [ + "cref='#/texts/52'" + ], + "image_footnote": [], + "middle_json": { + "docling_label": "picture" + } + }, + { + "type": "text", + "text": "4.1 Overview of BookIndex", + "text_level": 0, + "page_idx": 3, + "pdf_id": 56, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "We formally define our BookIndex as a triplet 𝐵 = ( 𝑇,𝐺, 𝑀 ) . Here, 𝑇 = ( 𝑁, 𝐸 𝑇 ) represents a Tree structure where 𝑁 is the set of nodes derived from the document's explicit logical hierarchy (e.g., titles, sections, tables), and 𝐸 𝑇 denotes their nesting relationships. 𝐺 = ( 𝑉, 𝐸 𝐺 ) is a Knowledge Graph that captures fine-grained entities ( 𝑉 ) and their relations ( 𝐸 𝐺 ) scattered throughout the document. Finally, 𝑀 𝑉 : →P( 𝑁 ) is the Graph-Tree Link (GT-Link) , which links each entity in 𝑉 to the set of specific tree nodes in 𝑁 from which it was extracted. These links are crucial for capturing the intricate, cross-sectional relations within the document. The hierarchical tree nodes in 𝑇 serve as the document's native information patches , providing structured contexts for information seeking. Meanwhile, the entities and relations in 𝐺 , connected via 𝑀 , act as the rich information scent that guides navigation between and within these patches.", + "text_level": -1, + "page_idx": 3, + "pdf_id": 57, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Figure 2 provides an example of our BookIndex. The Tree component, positioned at the top, organizes the document into a hierarchical structure, where content blocks such as text, tables, and images serve as leaf nodes nested within section nodes. The Graph component is composed of entities and relations extracted from these nodes. The GT-Link, illustrated by the blue dotted lines, explicitly connects these entities back to their corresponding tree nodes, thereby grounding the semantic entities within the document's logical hierarchy.", + "text_level": -1, + "page_idx": 3, + "pdf_id": 58, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "4.2 Tree Construction", + "text_level": 0, + "page_idx": 3, + "pdf_id": 59, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "The first stage transforms the raw document into a structured hierarchical tree 𝑇 . This involves two key steps: robust layout parsing and intelligent section filtering.", + "text_level": -1, + "page_idx": 3, + "pdf_id": 60, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "4.2.1 Layout Parsing. The Layout Parsing phase processes the input document 𝐷 (a collection of pages) using layout analysis and recognition models. This step identifies, extracts, and organizes diverse blocks (e.g., text, tables, images) from the document pages.", + "text_level": -1, + "page_idx": 3, + "pdf_id": 61, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "The output is a sequence of primitive blocks, B = { 𝑏 , 𝑏 1 2 , · · · , 𝑏 𝑘 } , where each block 𝑏 𝑖 = ( 𝑐 , 𝜏 , 𝑓 𝑖 𝑖 𝑖 ) is defined as a triplet. Here, 𝑐 𝑖 is the raw content (e.g., text, image data), 𝜏 𝑖 is the initial layout-based type (e.g., Title, Text, Table, Image ), and 𝑓 𝑖 is a vector of associated layout features (e.g., 'FontSize', bounding box).", + "text_level": -1, + "page_idx": 3, + "pdf_id": 62, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "4.2.2 Section Filtering. Next, the Section Filtering phase processes this initial sequence to identify the document's logically hierarchical structure. Layout Parsing identifies blocks as Title but does not assign their hierarchical level. Therefore, we select the candidate subset B title ⊂ B (where 𝜏 𝑖 = Title ) for an LLM-based analysis. To handle extremely long documents, this analysis is performed in batches, where each batch retains a contextual window of high-level section information (with 𝑙 = 1 as the root). The LLM analyzes the content 𝑐 𝑖 and layout features 𝑓 𝑖 of the candidates to determine two key properties: their actual hierarchical level 𝑙 𝑖 ∈ { 1 2 , , ... } and final node type 𝜏 ' 𝑖 (e.g., re-classifying an erroneous Title as Text if its level is 'None'). This step is crucial for preserving the document's logical hierarchy by correcting blocks erroneously parsed as Title , such as descriptive text within images or borderless table headers.", + "text_level": -1, + "page_idx": 3, + "pdf_id": 63, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Finally, the definitive tree 𝑇 = ( 𝑁, 𝐸 𝑇 ) is constructed. The node set 𝑁 is composed of all blocks from the filtering and re-classification process, where each node 𝑛 ∈ 𝑁 retains its content ( 𝑐 𝑖 ) and its final node type ( 𝜏 ' 𝑖 ) (e.g., Text , Section , Table , and Image ). The edge set 𝐸 𝑇 , representing the parent-child nesting relationships, is then established. Parent-child relationships are inferred by sequentially traversing the nodes, using both the determined hierarchical levels ( 𝑙 𝑖 ) of Section nodes and the overall document order to assemble the complete tree structure.", + "text_level": -1, + "page_idx": 3, + "pdf_id": 64, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "As an example shown in Figure 2, the Layout Parsing phase identifies diverse blocks, typing them as Title Text Table , , , and Image . During the Section Filtering phase, the Title candidates (e.g., \"Method\", \"Experiment\", and \"MOE Layer\") are analyzed by the LLM. The blocks 'Method' and 'Experiment' (both with 'FontSize: 14') are correctly identified as Section nodes at 'Level: 2'. Conversely,", + "text_level": -1, + "page_idx": 3, + "pdf_id": 65, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "4", + "text_level": -1, + "page_idx": 3, + "pdf_id": 66, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "the 'MOE Layer' block ('FontSize: 20'), which was erroneously tagged as Title by the parser, is re-classified by the LLM as a Text node with 'Level: None'. This correction is crucial for preserving the document's logical hierarchy. Following this process, all filtered and classified nodes are assembled into the final tree structure based on their determined levels and document order.", + "text_level": -1, + "page_idx": 4, + "pdf_id": 67, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "4.3 Graph Construction", + "text_level": 0, + "page_idx": 4, + "pdf_id": 68, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Once the tree 𝑇 is established, we proceed to populate the Knowledge Graph 𝐺 by extracting and refining entities from the tree nodes.", + "text_level": -1, + "page_idx": 4, + "pdf_id": 69, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "4.3.1 KG Construction. We iterate each node 𝑛 𝑖 ∈ 𝑁 from the previously constructed tree 𝑇 . For each node 𝑛 𝑖 , we extract a subgraph 𝑔 𝑖 = ( 𝑉 , 𝐸 𝑖 𝑅𝑖 ) based on its content 𝑐 𝑖 and final node type 𝜏 ' 𝑖 . This extraction is modality-dependent: if the node is text-only, an LLM is prompted to extract entities and relations, while for nodes containing visual elements (e.g., 𝜏 ' 𝑖 = Image ), a Vision Language Model (VLM) is employed to extract visual knowledge. Crucially, for every entity 𝑣 ∈ 𝑉 𝑖 extracted, its origin tree node 𝑛 𝑖 is recorded, which is vital for constructing the final mapping 𝑀 .", + "text_level": -1, + "page_idx": 4, + "pdf_id": 70, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Furthermore, to preserve structural semantics for specific logical types (e.g., Table , Formula ), our process first creates a distinct, typed entity (e.g., 𝑣 table representing the table itself). The other extracted entities from the specific node's content are linked to this primary vertex. For Table nodes specifically, row and column headers are also explicitly extracted as distinct entities and linked to 𝑣 table via a 'ContainedIn' relationship.", + "text_level": -1, + "page_idx": 4, + "pdf_id": 71, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "4.3.2 Gradient-based Entity Resolution. As shown in the literature [62, 66], a well-constructed KG is essential for document question answering. A common challenge in the extraction process is that the same conceptual entity is often fragmented into multiple distinct entities due to abbreviations, co-references, or its varied occurrences across different document sections. This necessitates a robust Entity Resolution (ER) process, which identifies and merges these fragmented entities to refine the raw KG.", + "text_level": -1, + "page_idx": 4, + "pdf_id": 72, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "However, conventional ER methods are computationally expensive. They are often designed for batch processing across multiple data sources (commonly referred to as dirty ER), aiming to ensure accurate entity resolution by finding all possible matching pairs [12]. This process typically requires finding the transitive closure of all detected matches. That is, to definitively merge multiple entities (e.g., A, B, and C) as the same concept, the system must ideally compare all possible pairs ('A-B', 'A-C', and 'B-C') to confirm their equivalence. This can lead to a quadratic ( 𝑂 𝑛 ( 2 ) ) number of pairwise comparisons, a process that becomes prohibitively slow and computationally expensive when relying on LLMs for high-accuracy judgments.", + "text_level": -1, + "page_idx": 4, + "pdf_id": 73, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "To address this, we employ a gradient-based ER method, operating on a single document (simplified as the clean ER), which performs ER incrementally as each new entity 𝑣 𝑛 is extracted. This transforms the quadratic batch problem into a simpler, repeated lookup task: determining where the single new entity 𝑣 𝑛 fits among the already-processed entities in the database. This incremental process yields two distinct, observable scoring patterns when 𝑣 𝑛 is reranked against its 𝑡𝑜𝑝 _ 𝑘 most relevant candidates:", + "text_level": -1, + "page_idx": 4, + "pdf_id": 74, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "5", + "text_level": -1, + "page_idx": 4, + "pdf_id": 75, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "Algorithm 1: Gradient-based entity resolution", + "text_level": 0, + "page_idx": 4, + "pdf_id": 76, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Input: KG 𝐺 , New entity 𝑣 𝑛 , Rerank model R , Entity vector database 𝐷𝐵 , Vector search number 𝑡𝑜𝑝 _ 𝑘 , threshold of gradient 𝑔", + "text_level": -1, + "page_idx": 4, + "pdf_id": 77, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "// Vector Search 𝑡𝑜𝑝 _ 𝑘 relevant entities in 𝐷𝐵 . 1 𝐸 𝑐 ← Search( 𝐷𝐵, 𝑣 𝑛 , 𝑡𝑜𝑝 _ 𝑘 ); 2 S ← R( 𝐸 , 𝑣 𝑐 𝑛 ) ; // Sort all candidate entities by rerank scores. 3 Sort( 𝐸 , 𝑐 S ); 4 𝑠𝑐𝑜𝑟𝑒 ← S[ ] 0 , 𝑆𝑒𝑙 ← 𝐸 𝑐 [ 0 ; ] // Gradient select similar entities. 5 for each remain entity 𝑣 𝑐 ∈ 𝐸 𝑐 \\ { 𝐸 𝑐 [ 0 ] } do 6 if S[ 𝑣 𝑐 ] > 𝑠𝑐𝑜𝑟𝑒 / 𝑔 then 7 𝑆𝑒𝑙 ← 𝑆𝑒𝑙 ∪ { 𝑣 𝑐 } , 𝑠𝑐𝑜𝑟𝑒 ← S[ 𝑣 𝑐 ] ; 8 else break; // Merge entity or add new entity. 9 if length( 𝑆𝑒𝑙 ) = length( 𝐸 𝑐 ) then 10 𝐺 ← AddNewEntity( 𝐺, 𝑣 𝑛 ), 𝐷𝐵 ← AddNew( 𝐷𝐵, 𝑣 𝑛 ); 11 else 12 if length( 𝑆𝑒𝑙 ) = 1 then 𝑣 𝑠𝑒𝑙 ← 𝑆𝑒𝑙 [ 0 ; ] 13 else 𝑣 𝑠𝑒𝑙 ← LLMSelect( 𝑆𝑒𝑙 ); 14 𝐺 ← MergeEntity( 𝐺, 𝑣 𝑛 , 𝑣 𝑠𝑒𝑙 ), 𝐷𝐵 ← Update( 𝐷𝐵, 𝑣 𝑠𝑒𝑙 , 𝑣 𝑛 ); 15 return 𝐺,𝐷𝐵 ;", + "text_level": -1, + "page_idx": 4, + "pdf_id": 78, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· Case A: New Entity. If 𝑣 𝑛 is a new conceptual entity, its relevance scores against all existing entities will be uniformly low, showing no significant gradient or discriminative pattern.", + "text_level": -1, + "page_idx": 4, + "pdf_id": 79, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· Case B: Existing Entity. If 𝑣 𝑛 is an alias of an existing entity, its scores will show a high relevance to the true match (or a small set of equivalent aliases). Due to the reranker's inherent discriminative limitations, this initial high-relevance set might occasionally contain multiple similar entities. This high-relevance set is then typically followed by a sharp decline (a large 'gradient') before transitioning to a gradual slope of irrelevant entities.", + "text_level": -1, + "page_idx": 4, + "pdf_id": 80, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "Our Gradient-based ER algorithm is designed precisely to detect this sharp decline (characteristic of Case B), allowing us to efficiently isolate the high-relevance set. Subsequently, an LLM is utilized for finer-grained distinction when multiple similar entities are identified within this set, differentiating it from the 'no gradient' scenario (Case A) without quadratic comparisons.", + "text_level": -1, + "page_idx": 4, + "pdf_id": 81, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Algorithm 1 shows the above entity resolution process. For a new entity 𝑣 𝑛 , we first retrieve its 𝑡𝑜𝑝 _ 𝑘 candidates 𝐸 𝑐 from the vector database 𝐷𝐵 , which are then reranked by R against 𝑣 𝑛 and sorted based on their scores S (Lines 1-3). We initialize the selection set 𝑆𝑒𝑙 with the top-scoring candidate 𝐸 𝑐 [ 0 ] and set the initial score to S[ ] 0 (Line 4). We then iterate through the remaining sorted candidates (Lines 5-8). The core logic checks if the current score S[ 𝑣 𝑐 ] is still within the gradient threshold 𝑔 of the previous score (i.e., S[ 𝑣 𝑐 ] > score / 𝑔 ). If the score drop is gentle (passes the check), the candidate 𝑣 𝑐 is added to 𝑆𝑒𝑙 , and score is updated (Lines 7-8); otherwise, the loop breaks (Line 8) as soon as a sharp score drop is detected. Finally, the algorithm makes its decision (Lines 9-14). If the selection set 𝑆𝑒𝑙 is identical to 𝐸 𝑐 , this indicates that all candidates passed the gradient check. This corresponds to Case A , where the scores lacked discriminative power (i.e., 𝑣 𝑛 is equally dissimilar to", + "text_level": -1, + "page_idx": 4, + "pdf_id": 82, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "all candidates), so 𝑣 𝑛 is added as a new entity (Line 9-10). Conversely, if a gradient was found (i.e., 𝑙𝑒𝑛𝑔𝑡ℎ 𝑆𝑒𝑙 ( ) < 𝑙𝑒𝑛𝑔𝑡ℎ ( 𝐸 𝑐 ) ), this signals Case B . We then select the canonical entity 𝑣 𝑠𝑒𝑙 from 𝑆𝑒𝑙 , using an LLM (Line 13) if the reranker identifies multiple aliases, and merge 𝑣 𝑛 with it (Lines 12-14). The updated 𝐺 and 𝐷𝐵 are then returned (Line 15).", + "text_level": -1, + "page_idx": 5, + "pdf_id": 83, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "For instance, considering the example in Figure 2, when the new entity 𝑒 9 is processed, it is first compared with existing entities in the KG. As depicted in the similarity curve (orange line), 𝑒 9 shows high similarity with 𝑒 7, followed by a sharp decline in similarity with other entities like 𝑒 6, 𝑒 8, and 𝑒 5. Our gradient-based selection process identifies 𝑒 7 as the unique, high-confidence match for 𝑒 9. Consequently, 𝑒 9 is merged with 𝑒 7, enriching the KG with consolidated information as shown in the final merged entity 𝑒 ' 7 .", + "text_level": -1, + "page_idx": 5, + "pdf_id": 84, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Graph-Tree Link (GT-Link). The GT-Link 𝑀 is formalized to complete the BookIndex 𝐵 = ( 𝑇,𝐺, 𝑀 ) . As described in the KG Construction phase, the origin tree node 𝑛 𝑖 is recorded for every newly extracted entity 𝑣 𝑖 . GT-Link is then refined during entity resolution: when an entity 𝑣 𝑛 is merged into a canonical entity 𝑣 𝑠𝑒𝑙 , the origin node set of 𝑣 𝑠𝑒𝑙 is updated to include all origin nodes previously associated with 𝑣 𝑛 . This aggregation process creates the final mapping 𝑀 : 𝑉 → P( 𝑁 ) , which bi-directionally links the entities in 𝐺 to the set of their structural locations (nodes) in 𝑇 .", + "text_level": -1, + "page_idx": 5, + "pdf_id": 85, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "5 AGENT-BASED RETRIEVAL", + "text_level": 0, + "page_idx": 5, + "pdf_id": 86, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Real-world document queries are often complex, necessitating operations like modal type filtering, semantic selection, and multi-hop reasoning. To address this, we propose an agent-based approach in BookRAG, which intelligently plans and executes operations on the BookIndex. We first introduce the overall workflow and present two core mechanisms: Agent-based Planning , which formulates the strategy, and the Structured Execution , which includes the retrieval process under the principles of IFT and generation.", + "text_level": -1, + "page_idx": 5, + "pdf_id": 87, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "5.1 Overall Workflow", + "text_level": 0, + "page_idx": 5, + "pdf_id": 88, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "The overall workflow of agent-based retrieval, illustrated in Figure 3, follows a three-stage pipeline designed to address users' queries systematically.", + "text_level": -1, + "page_idx": 5, + "pdf_id": 89, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "1. Agent-based Planning. BookRAG first performs Classification & Plan . This stage aims to distinguish simple keyword-based queries from reasoning questions that require decomposition and analysis. For instance, a query like 'How does Transformer differ from RNNs in handling long-range dependencies?' cannot be", + "text_level": -1, + "page_idx": 5, + "pdf_id": 90, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "Figure 3: The general workflow of agent-based retrieval in BookRAG, which contains agent-based planning, retrieval, and generation processes.", + "text_level": -1, + "page_idx": 5, + "pdf_id": 91, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "image", + "text": "", + "text_level": -1, + "page_idx": 5, + "pdf_id": 92, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-3.png", + "image_caption": [ + "cref='#/texts/89'" + ], + "image_footnote": [], + "middle_json": { + "docling_label": "picture" + } + }, + { + "type": "text", + "text": "solved by retrieving from a single keyword. Therefore, the planning stage first performs query classification . Based on this classification and a predefined set of operators designed for the BookIndex, it generates a specific operators plan that effectively guides the retrieval and generation strategies.", + "text_level": -1, + "page_idx": 5, + "pdf_id": 93, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "2. Retrieval Process. Guided by the operator plan, the retrieval process executes Scent/Filter-based Retrieval . This stage navigates the BookIndex 𝐵 = ( 𝑇,𝐺, 𝑀 ) , either utilizing a scent-based retrieval principle (e.g., following relevant entities in 𝐺 ) to find information, or employing various filters (e.g., modal type) to refine the selection. After reasoning, BookRAG gets the retrieval set of highly relevant information blocks from the BookIndex.", + "text_level": -1, + "page_idx": 5, + "pdf_id": 94, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "3. Generation Process. Finally, all retrieved information enters the generation stage for Analysis & Merging . This stage synthesizes these (often fragmented) pieces of evidence, performs final analysis, and formulates a coherent response.", + "text_level": -1, + "page_idx": 5, + "pdf_id": 95, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "5.2 Agent-based Planning", + "text_level": 0, + "page_idx": 5, + "pdf_id": 96, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "The planning stage is the core of BookRAG, designed to intelligently navigate our BookIndex 𝐵 = ( 𝑇,𝐺, 𝑀 ) . To support flexible retrieval, we define four types of operators: Formulator, Selector, Reasoner, and Synthesizer. These operators can be arbitrarily combined to form tailored execution pipelines, each with adjustable parameters. BookRAG dynamically configures and assembles these operators to adapt to the specific requirements of different query categories. This process involves two sequential steps: first, the agent performs", + "text_level": -1, + "page_idx": 5, + "pdf_id": 97, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Table 2: Three common query categories addressed in BookRAG.", + "text_level": -1, + "page_idx": 5, + "pdf_id": 98, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 5, + "pdf_id": 99, + "img_path": "", + "table_caption": [ + "cref='#/texts/95'" + ], + "table_footnote": [], + "table_body": "| Query Category | Description | Core Task | Example Query |\n|--------------------|-------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|\n| Single-hop | Queries with a single, distinct information target. | Scent-based Retrieval : Retrieve content related to a specific entity or section. | What is the definition of Information Scent? |\n| Multi-hop | Queries that require synthesizing information from multiple blocks, often by decomposing into sub-problems. | Decomposing & Merging : Decompose into sub-problems, retrieve for each, and synthesize the final answer. | How does Transformer differ from RNNs in handling long-range dependencies? |\n| Global Aggregation | Queries that require filtering across the entire document and performing calculations. | Filter & Aggregation : Apply filters across the document & perform aggregation operations (e.g., Count, Sum). | How many figures related to IFT are in Section 4? |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "text", + "text": "6", + "text_level": -1, + "page_idx": 5, + "pdf_id": 100, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "(a) Operator Set", + "text_level": 0, + "page_idx": 6, + "pdf_id": 101, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Figure 4: The BookRAG Operator Library and an Execution Example from MMLongBench dataset: (a) a visual depiction of the four operator types (Formulator, Selector, Reasoner, and Synthesizer) and (b) an execution trace for a 'Single-hop' query, demonstrating the agent-based planning and step-by-step operator execution.", + "text_level": -1, + "page_idx": 6, + "pdf_id": 102, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "image", + "text": "", + "text_level": -1, + "page_idx": 6, + "pdf_id": 103, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-4.png", + "image_caption": [ + "cref='#/texts/98'" + ], + "image_footnote": [], + "middle_json": { + "docling_label": "picture" + } + }, + { + "type": "text", + "text": "Query Classification to determine the appropriate solution strategy, then generates a specific Operator Plan .", + "text_level": -1, + "page_idx": 6, + "pdf_id": 104, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· Query Classification . To enable agent strategy selection, we focus on three representative query categories defined by their intrinsic complexity and operational demands (Table 2): Single-hop , Multi-hop , and Global Aggregation . This classification is crucial because each category requires a different solution strategy. For instance, a Single-hop query typically requires a single piece of information retrieved via a Scent-based Retrieval operation. In contrast, a Global Aggregation query often necessitates analyzing content under multiple filtering conditions, usually involving a sequence of Filter & Aggregation operations across various parts of the document. Furthermore, BookRAG is designed to be extensible, allowing for the resolution of a broader range of query types by integrating additional operators.", + "text_level": -1, + "page_idx": 6, + "pdf_id": 105, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· BookIndex Operators . To execute the strategies identified by classification, we designed a set of operators ( O ) tailored for the BookIndex 𝐵 = ( 𝑇,𝐺, 𝑀 ) . These operators, visually depicted in Figure 4(a) and detailed in Table 3, define the set of operations the agent can employ for diverse query categories. We group them into four types, which we describe in sequence:", + "text_level": -1, + "page_idx": 6, + "pdf_id": 106, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "❶ Formulator. These are LLM-based operators that prepare the query for execution. This category includes Decompose , which breaks a Complex query into a set of simpler, actionable sub-queries 𝑄 𝑠 . It also includes Extract , which employs an LLM to identify key entities 𝐸 𝑞 from the query text and link them to corresponding entities in the KG, 𝐺 :", + "text_level": -1, + "page_idx": 6, + "pdf_id": 107, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "equation", + "text": "𝑄 𝑠 = LLM ( 𝑃 𝐷𝑒𝑐 , 𝑞 ) = { 𝑞 , 𝑞 1 2 , . . . , 𝑞 𝑘 } (2)", + "text_level": -1, + "page_idx": 6, + "pdf_id": 108, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "equation", + "text": "𝐸 𝑞 = LLM ( 𝑃 𝐸𝑥𝑡 , 𝑞 ) = { 𝑒 1 , 𝑒 2 , . . . , 𝑒 𝑚 } (3)", + "text_level": -1, + "page_idx": 6, + "pdf_id": 109, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "Here, 𝑞 is the original user query, while 𝑃 𝐷𝑒𝑐 and 𝑃 𝐸𝑥𝑡 represent the prompts used to guide the LLM for the decomposition and extraction tasks, respectively.", + "text_level": -1, + "page_idx": 6, + "pdf_id": 110, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "❷ Selector. These operators filter or select specific content ranges from the BookIndex. Filter_Modal and Filter_Range directly apply the explicit constraints 𝐶 (e.g., modal types, page ranges) generated during the plan. Operating on the Tree 𝑇 = ( 𝑁, 𝐸 𝑇 ) , these operators produce a filtered subset 𝑁 𝑓 where the predicate 𝐶 𝑛 ( ) holds true for each node:", + "text_level": -1, + "page_idx": 6, + "pdf_id": 111, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "equation", + "text": "𝑁 𝑓 = { 𝑛 ∈ 𝑁 | 𝐶 𝑛 ( )} (4)", + "text_level": -1, + "page_idx": 6, + "pdf_id": 112, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "In contrast, Select_by_Entity and Select_by_Section target contiguous document segments by retrieving subtrees rooted at specific section nodes. This process first identifies a set of target section nodes 𝑆 target ⊂ 𝑁 at a specified depth, where 𝑆 target consists of sections either linked to entities 𝐸 𝑞 via the GT-Link 𝑀 or selected by the LLM. It then retrieves all descendants of these targets to form the selected node set 𝑁 𝑠 :", + "text_level": -1, + "page_idx": 6, + "pdf_id": 113, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "𝑁 𝑠 = GLYPH<216> 𝑠 ∈ 𝑆 target Subtree ( 𝑠 ) (5)", + "text_level": -1, + "page_idx": 6, + "pdf_id": 114, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "❸ Reasoner. These operators analyze and refine selected tree nodes. Graph_Reasoning performs multi-hop inference on a subgraph 𝐺 ' ( 𝑉 , 𝐸 ' ' ) (extracted from selected nodes 𝑁 𝑠 ) starting from entity 𝑒 . Starting from the retrieved entities, it computes an entity importance vector 𝐼 𝐺 ∈ R | 𝑉 ' | over the subgraph 𝐺 ' using the PageRank algorithm [20]. These entity scores are then mapped to the tree nodes via the GT-Link matrix 𝑀 to derive the final tree node importance scores vector 𝑆 𝐺 ∈ R | 𝑁 𝑠 | :", + "text_level": -1, + "page_idx": 6, + "pdf_id": 115, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "𝐼 𝐺 = PageRank ( 𝐺 , 𝑒 ' ) (6)", + "text_level": -1, + "page_idx": 6, + "pdf_id": 116, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "equation", + "text": "𝑆 𝐺 = 𝐼 𝐺 × 𝑀 (7)", + "text_level": -1, + "page_idx": 6, + "pdf_id": 117, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "Text_Ranker evaluates the semantic relevance of the tree node's content to the query 𝑞 , assigning a relevance score 𝑆 𝑇 to each node. Skyline_Ranker employs the Skyline operator to filter nodes based on these multiple criteria (e.g., 𝑆 𝐺 and 𝑆 𝑇 ), retaining only", + "text_level": -1, + "page_idx": 6, + "pdf_id": 118, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "7", + "text_level": -1, + "page_idx": 6, + "pdf_id": 119, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "those nodes that are not dominated by any others in terms of the specified scoring dimensions.", + "text_level": -1, + "page_idx": 7, + "pdf_id": 120, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "❹ Synthesizer. These operators are responsible for content generation. Map performs analysis on specific retrieved information segments to generate partial responses. Reduce synthesizes a final coherent answer by aggregating information from multiple sources, such as partial answers or a collection of retrieved evidence.", + "text_level": -1, + "page_idx": 7, + "pdf_id": 121, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· Operator Plan . After classifying the query ( 𝑞 ) into its category ( 𝑐 ), the agent's final task is to generate an executable plan 𝑃 . This plan is a specific sequence of operators ⟨ 𝑜 , . . . , 𝑜 1 𝑛 ⟩ selected from our library O with parameters dynamically instantiated based on 𝑞 . This process is formulated as:", + "text_level": -1, + "page_idx": 7, + "pdf_id": 122, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "equation", + "text": "𝑃 = Agent Plan ( 𝑞, 𝑐, O) (8)", + "text_level": -1, + "page_idx": 7, + "pdf_id": 123, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "The plan follows a structured workflow tailored to each category:", + "text_level": -1, + "page_idx": 7, + "pdf_id": 124, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· Single-hop : The agent first attempts to Extract an entity. If successful, it executes a 'scent-based' selection; otherwise, it falls back to a section-based strategy. Both paths then proceed to standard reasoning and generation, denoted as 𝑃 std .", + "text_level": -1, + "page_idx": 7, + "pdf_id": 125, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "equation", + "text": "𝑃 s = ( Extract success - - - - -→ Select_by_Entity → 𝑃 std Extract fail - -→ Select_by_Section → 𝑃 std (9)", + "text_level": -1, + "page_idx": 7, + "pdf_id": 126, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "equation", + "text": "𝑃 std = ( Graph ∥ Text ) → Skyline → Reduce (10)", + "text_level": -1, + "page_idx": 7, + "pdf_id": 127, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "· Complex : The agent first decomposes the problem, applies the Single-hop workflow 𝑃 s to each sub-problem, and finally synthesizes the results.", + "text_level": -1, + "page_idx": 7, + "pdf_id": 128, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "equation", + "text": "𝑃 complex = Decompose → 𝑃 s → Map → Reduce (11)", + "text_level": -1, + "page_idx": 7, + "pdf_id": 129, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "· Global Aggregation : The workflow involves applying a sequence of filters followed by synthesis.", + "text_level": -1, + "page_idx": 7, + "pdf_id": 130, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "equation", + "text": "𝑃 global = GLYPH<214> ( Filter_Modal | Filter_Range ) → Map → Reduce (12)", + "text_level": -1, + "page_idx": 7, + "pdf_id": 131, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "Here, the symbol ˛ denotes the nested composition of filters, applying either a modal or range filter at each step.", + "text_level": -1, + "page_idx": 7, + "pdf_id": 132, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "5.3 Structured Execution", + "text_level": 0, + "page_idx": 7, + "pdf_id": 133, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Following the planning stage, BookRAG executes the generated workflow 𝑃 . This execution phase embodies the cognitive principles of Information Foraging Theory (IFT), effectively translating abstract textual queries into concrete operations. Specifically, the Selector operators mirror the act of 'navigating to information patches,' narrowing the vast document space down to relevant scopes. Subsequently, the Reasoner operators perform 'sensemaking within patches,' where they analyze and refine the information within these focused scopes. Finally, the Synthesizer generates the answer based on the processed evidence. This design minimizes the cost of attention by ensuring computational resources are focused solely on high-value data patches.", + "text_level": -1, + "page_idx": 7, + "pdf_id": 134, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Scent/Filter-based Retrieval. The execution begins by narrowing the scope. Aligning with IFT, Selector operators identify relevant 'patches' by following 'information scents' (e.g., key entities in question) or applying explicit filter constraints. This process reduces the full node set 𝑁 to a focused node subset 𝑁 𝑠 :", + "text_level": -1, + "page_idx": 7, + "pdf_id": 135, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "𝑁 𝑠 = Selector ( 𝑁, params sel ) (13)", + "text_level": -1, + "page_idx": 7, + "pdf_id": 136, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "This pre-selection minimizes noise and ensures that subsequent reasoning is applied only to highly relevant contexts, optimizing the foraging cost. Subsequently, within this focused scope, Reasoner operators evaluate nodes using multiple dimensions, such as graph topology and semantic relevance. We then employ the Skyline_Ranker to get the final retrieval set. Unlike fixed top𝑘 retrieval, the Skyline operator retains the Pareto frontier of nodes, retaining nodes that are valuable in at least one dimension while discarding dominated ones:", + "text_level": -1, + "page_idx": 7, + "pdf_id": 137, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "𝑁 𝑅 = Skyline_Ranker ({ 𝑆 𝐺 ( 𝑛 , 𝑆 ) 𝑇 ( 𝑛 ) | 𝑛 ∈ 𝑁 𝑠 }) (14)", + "text_level": -1, + "page_idx": 7, + "pdf_id": 138, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "Analysis & Merging Generation. In the final stage, the Synthesizer operator generates the coherent answer by aggregating the refined evidence:", + "text_level": -1, + "page_idx": 7, + "pdf_id": 139, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "𝐴 = Synthesizer ( 𝑞, 𝑁 𝑅 ) (15)", + "text_level": -1, + "page_idx": 7, + "pdf_id": 140, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "Table 3: Operators utilized in our BookRAG, categorized by their function.", + "text_level": -1, + "page_idx": 7, + "pdf_id": 141, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 7, + "pdf_id": 142, + "img_path": "", + "table_caption": [ + "cref='#/texts/136'" + ], + "table_footnote": [], + "table_body": "| Operator | Type | Description | Parameters |\n|-------------------------------|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------|\n| Decompose | Formulator Formulator | Decompose a complex query into simpler, actionable sub-queries. Identify and extract key entities from the query (links to 𝐺 ). | (Self-contained) (Self-contained) |\n| Extract Filter_Modal | Selector | Filter retrieved nodes by their modal type (e.g., Table, Figure). | modal_type: str |\n| Filter_Range | Selector | Filter nodes based on a specified range (e.g., pages, section). | range: (start, end) |\n| Select_by_Entity | Selector | Selects all tree nodes ( 𝑁 ) in sections linked to a given entity ( 𝑉 ). | entity_name: str |\n| Select_by_Section | Selector | Uses an LLM to select relevant sections and selects all tree nodes ( 𝑁 ) within them. | query: str, sections: List[str] |\n| Graph_Reasoning | Reasoner | Performs multi-hop reasoning on subgraph ( 𝐺 ' ) and score tree nodes ( 𝑁 ) using graph importance and GT-links. Rerank retrieved tree nodes ( 𝑁 ) based on the relevance. | start_entity: str, subgraph: 𝐺 ' query: str |\n| Text_Reasoning Skyline_Ranker | Reasoner Reasoner | | criteria: List[str] |\n| | | Rerank nodes based on multiple criteria. | (Input: List[str]) |\n| Map | Synthesizer | Uses partially retrieved information to generate a partial answer. | |\n| Reduce | Synthesizer | Synthesizes the final answer from partial information or all sub-problem answers. | (Input: List[str]) |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "text", + "text": "8", + "text_level": -1, + "page_idx": 7, + "pdf_id": 143, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "The Map operator performs fine-grained analysis on individual evidence blocks or sub-problems (from Decompose ) to generate intermediate insights. The Reduce operator then aggregates these partial results, such as answers to decomposed sub-queries or statistical counts from a global filter, to construct the final response. This separation ensures that the system can handle both detailed content extraction and high-level reasoning synthesis effectively.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 144, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "To illustrate this end-to-end process, Figure 4(b) presents an execution trace for a 'Single-hop' query: 'What is the type of car in the Ranking Prompt example?'. In the planning phase, the agent classifies the query and generates a specific workflow. Subsequently, it identifies key entities (e.g., 'car') via Extract , retrieves relevant nodes via Select_by_Entity , refines them through reasoning and Skyline filtering, and finally synthesizes the answer using Reduce .", + "text_level": -1, + "page_idx": 8, + "pdf_id": 145, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "6 EXPERIMENTS", + "text_level": 0, + "page_idx": 8, + "pdf_id": 146, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "In our experiments, we evaluate BookRAG against several strong baseline methods, with an in-depth comparison of their efficiency and accuracy on document QA tasks.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 147, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "6.1 Setup", + "text_level": 0, + "page_idx": 8, + "pdf_id": 148, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Table 4: Datasets used in our experiments. EM and F1 denote Exact Match and F1-score, respectively.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 149, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 8, + "pdf_id": 150, + "img_path": "", + "table_caption": [ + "cref='#/texts/143'" + ], + "table_footnote": [], + "table_body": "| Dataset | MMLongBench | M3DocVQA | Qasper |\n|-------------|---------------|------------|--------------|\n| Questions | 669 | 633 | 640 |\n| Documents | 85 | 500 | 192 |\n| Avg. Pages | 42.16 | 8.52 | 10.95 |\n| Avg. Images | 25.92 | 3.51 | 3.43 |\n| Tokens | 2,816,155 | 3,553,774 | 2,265,349 |\n| Metrics | EM, F1 | EM, F1 | Accuracy, F1 |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "text", + "text": "Datasets & Question Synthesis. We use three widely adopted benchmarking datasets for complex document QA tasks: MMLongBench [33], M3DocVQA [11], and Qasper [14]. MMLongBench is a comprehensive benchmark designed to evaluate QA capabilities on long-form documents, covering diverse categories such as guidebooks, financial reports, and industry files. M3DocVQA is an open-domain benchmark designed to test RAG systems on a diverse collection of HTML-type documents sourced from Wikipedia pages 1 . Qasper is a QA dataset focused on scientific papers, where questions require retrieving evidence from the entire document. We filtered the datasets to remove documents with low clarity or incoherent structures. To address the scarcity of global-level questions in the original benchmarks, we synthesize additional QA pairs by having an LLM generate global questions from selected document elements (e.g., tables or figures). These questions are then answered and meticulously refined by human annotators via an outsourcing process, with this additional QA pairs constituting less than 20% of our final QA pairs. The statistics of these datasets are presented in Table 4.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 151, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "1 https://www.wikipedia.org/", + "text_level": -1, + "page_idx": 8, + "pdf_id": 152, + "middle_json": { + "docling_label": "footnote" + } + }, + { + "type": "text", + "text": "9", + "text_level": -1, + "page_idx": 8, + "pdf_id": 153, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "Metrics. Weadheretotheofficial metrics specified by each dataset for QA. Our primary evaluation relies on Exact Match (EM), accuracy, and token-based F1-score. To assess efficiency, we also measure time cost and token usage during the response phase. Additionally, for methods including PDF parsing, we also evaluate retrieval recall. To establish the ground truth for this, we manually label the specific PDF blocks (e.g., texts, titles, tables, images, and formulas) required to answer each question. This labeling process is guided by the metadata of ground-truth evidence provided in each dataset; we filter candidate blocks using the given modality (all datasets), page numbers (MMLongBench), and evidence statements (Qasper). Any blocks that remained non-unique after this filtering process are manually annotated. In cases where a PDF parsing error made the ground-truth item unavailable, the retrieval recall for that query is recorded as 0.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 154, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Baselines. Our experiments consider three model configurations:", + "text_level": -1, + "page_idx": 8, + "pdf_id": 155, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· Conventional RAG: These methods are the most common pipeline for document analysis, where the raw text is first extracted and then chunked into segments of a specified size. We select strong and widely used retrieval models: BM25 [44] and Vanilla RAG. We also implement Layout+Vanilla, a variant that uses document layout analysis for semantic chunking.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 156, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· Graph-based RAG: These methods first extract textual content from documents and then leverage graph data during retrieval. We select RAPTOR [45] and GraphRAG [16]. Specifically, GraphRAG has two versions: GraphRAG-Global and GraphRAG-Local, which employ global and local search methods, respectively.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 157, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· LayoutsegmentedRAG: This category encompasses methods that utilize layout analysis to segment document content into discrete structural units. We include: MM-Vanilla, which utilizes multi-modal embeddings for visual and textual content; a tree-based method inspired by PageIndex [39], denoted as TreeTraverse, where an LLM navigates the document's tree structure; DocETL [47], a declarative system for complex document processing; and GraphRanker, a graphbased method extended from HippoRAG [19] that applies Personalized PageRank [20] to rank the relevant nodes.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 158, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "Implementation details. For a fair comparison, both BookRAG and all baseline methods are powered by a unified set of state-of-theart (SOTA) and widely adopted backbone models from the Qwen family [4, 60, 63, 64]. We employ MinerU [52] for robust document layout parsing. We set the threshold of gradient 𝑔 as 0 6, and more . details are provided in the appendix of our technical report [57]. Our source code, prompts, and detailed configurations are available at github.com/sam234990/BookRAG.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 159, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "6.2 Overall results", + "text_level": 0, + "page_idx": 8, + "pdf_id": 160, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "In this section, we present a comprehensive evaluation of BookRAG, analyzing its complex QA performance, retrieval effectiveness, and query efficiency compared to state-of-the-art baselines.", + "text_level": -1, + "page_idx": 8, + "pdf_id": 161, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· QA Performance of BookRAG . We compare the QA performance of BookRAG against three categories of baselines, as shown in Table 5. The results indicate that BookRAG achieves", + "text_level": -1, + "page_idx": 8, + "pdf_id": 162, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "Table 5: Performance comparison of different methods across various datasets for solving complex document QA tasks. The best and second-best results are marked in bold and underlined, respectively.", + "text_level": -1, + "page_idx": 9, + "pdf_id": 163, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 9, + "pdf_id": 164, + "img_path": "", + "table_caption": [ + "cref='#/texts/156'" + ], + "table_footnote": [], + "table_body": "| Baseline Type | Method | MMLongBench | MMLongBench | M3DocVQA | M3DocVQA | Qasper | Qasper |\n|----------------------|------------------|---------------|---------------|---------------|------------|------------|------------|\n| | Method | (Exact Match) | (F1-score) | (Exact Match) | (F1-score) | (Accuracy) | (F1-score) |\n| Conventional RAG | BM25 | 18.3 | 20.2 | 34.6 | 37.8 | 38.1 | 42.5 |\n| Conventional RAG | Vanilla RAG | 16.5 | 18.0 | 36.5 | 40.2 | 40.6 | 44.4 |\n| | Layout + Vanilla | 18.1 | 19.8 | 36.9 | 40.2 | 40.7 | 44.6 |\n| Graph-based RAG | RAPTOR | 21.3 | 21.8 | 34.3 | 37.3 | 39.4 | 44.1 |\n| Graph-based RAG | GraphRAG-Local | 7.7 | 8.5 | 23.7 | 25.6 | 35.9 | 39.2 |\n| Graph-based RAG | GraphRAG-Global | 5.3 | 5.6 | 20.2 | 22.0 | 24.0 | 24.1 |\n| Layout segmented RAG | MM-Vanilla | 6.8 | 8.4 | 25.1 | 27.7 | 27.9 | 29.3 |\n| Layout segmented RAG | Tree-Traverse | 12.7 | 14.4 | 33.3 | 36.2 | 27.3 | 32.1 |\n| Layout segmented RAG | GraphRanker | 21.2 | 22.7 | 43.0 | 47.8 | 32.9 | 37.6 |\n| Layout segmented RAG | DocETL | 27.5 | 28.6 | 40.9 | 43.3 | 42.3 | 50.4 |\n| Our proposed | BookRAG | 43.8 | 44.9 | 61.0 | 66.2 | 55.2 | 61.1 |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "text", + "text": "state-of-the-art performance across all datasets, substantially outperforming the top-performing baseline by 18.0% in Exact Match on M3DocVQA. Layout + Vanilla consistently outperforms Vanilla RAG, confirming that layout parsing preserves essential structural information for better retrieval. Besides, the suboptimal results of Tree-Traverse and GraphRanker highlight the limitations of relying solely on hierarchical navigation or graph-based reasoning, which often miss cross-sectional context or drift into irrelevant scopes. In contrast, BookRAG's superiority stems from the synergy of its unified Tree-Graph BookIndex and Agent-based Planning. By effectively classifying queries and configuring optimal workflows, our BookRAG overcomes limitations of context fragmentation and static query workflow within existing baselines, ensuring precise evidence retrieval and accurate generation.", + "text_level": -1, + "page_idx": 9, + "pdf_id": 165, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Table 6: Retrieval recall comparison among layout-based methods. The best and second-best results are marked in bold and underlined, respectively.", + "text_level": -1, + "page_idx": 9, + "pdf_id": 166, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 9, + "pdf_id": 167, + "img_path": "", + "table_caption": [ + "cref='#/texts/158'" + ], + "table_footnote": [], + "table_body": "| Method | MMLongBench | M3DocVQA | Qasper |\n|------------------|---------------|------------|----------|\n| Layout + Vanilla | 26.3 | 33.8 | 33.5 |\n| MM-Vanilla | 7.5 | 19.7 | 14.9 |\n| Tree-Traverse | 11.2 | 19.5 | 14.5 |\n| GraphRanker | 26.4 | 44.5 | 28.6 |\n| BookRAG | 57.6 | 71.2 | 63.5 |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "text", + "text": "· Retrieval performance of BookRAG. To validate our retrieval design, we evaluate the retrieval recall of BookRAG against other layout-based baselines on the ground-truth layout blocks. The experimental results demonstrate that BookRAG achieves the highest recall across all datasets, notably reaching 71.2% on M3DocVQA and significantly outperforming the next best baseline (GraphRanker, max44.5%). This performance advantage stems from our IFT-inspired Selector → Reasoner workflow: the Agent-based Planning first classifies the query, enabling the Selector to narrow the search to a precise information patch , followed by the Reasoner's analysis. Crucially, after the Skyline_Ranker process, the average number of retained nodes is 9.87, 6.86, and 8.6 across the three datasets,", + "text_level": -1, + "page_idx": 9, + "pdf_id": 168, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "which is comparable to the standard top𝑘 ( 𝑘 = 10) setting, ensuring high-quality retrieval without inflating the candidate size.", + "text_level": -1, + "page_idx": 9, + "pdf_id": 169, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Figure 5: Comparison of query efficiency.", + "text_level": -1, + "page_idx": 9, + "pdf_id": 170, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "image", + "text": "", + "text_level": -1, + "page_idx": 9, + "pdf_id": 171, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-5.png", + "image_caption": [ + "cref='#/texts/161'" + ], + "image_footnote": [], + "middle_json": { + "docling_label": "picture" + } + }, + { + "type": "text", + "text": "· Efficiency of BookRAG. Wefurther evaluate the efficiency in terms of query time and token consumption, as illustrated in Figure 5. Overall, BookRAG maintains time and token costs comparable to existing Graph-based RAG methods. While purely text-based RAG approaches generally exhibit lower latency and token usage due to the absence of VLM processing for images, BookRAG maintains a balanced efficiency among multi-modal methods. In terms of token usage, BookRAG reduces consumption by an order of magnitude compared to the strongest baseline, DocETL. Notably,", + "text_level": -1, + "page_idx": 9, + "pdf_id": 172, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "10", + "text_level": -1, + "page_idx": 9, + "pdf_id": 173, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "on the MMLongBench dataset, DocETL consumes over 53 million tokens, whereas BookRAG requires less than 5 million. Regarding the query latency, our method also achieves a speedup of up to 2 × compared to DocETL.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 174, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "6.3 Detailed Analysis", + "text_level": 0, + "page_idx": 10, + "pdf_id": 175, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "In this section, we provide a more in-depth examination of our BookRAG. We first conduct an ablation study to validate the contribution of each component, followed by an experiment on the impact of gradient-based ER and QA performance across different query types. Furthermore, we perform a comprehensive error analysis, compare the effectiveness of our entity resolution method, and present a case study.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 176, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· Ablation study. To evaluate the contribution of each core component in BookRAG, we design several variants by removing specific components:", + "text_level": -1, + "page_idx": 10, + "pdf_id": 177, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· w/o Gradient ER: Replaces the gradient-based entity resolution with a Basic ER by merging the same-name entities.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 178, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· w/o Planning: Removes the Agent-based Planning, defaulting to a static, standard workflow for all queries.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 179, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· w/o Selector : Removes the Selector operators, forcing Reasoners to score all candidate nodes.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 180, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· w/o Graph_Reasoning : Removes the Graph_Reasoning operator. Consequently, the Skyline_Ranker is also disabled as scoring becomes single-dimensional.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 181, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· w/o Text_Reasoning : Removes the Text_Reasoning operator. Similarly, the Skyline_Ranker is disabled, relying solely on graph-based scores.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 182, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "Table 7: Comparing the QA performance of different variants of BookRAG. EM and F1 denote Exact Match and F1-score, respectively.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 183, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 10, + "pdf_id": 184, + "img_path": "", + "table_caption": [ + "cref='#/texts/220'" + ], + "table_footnote": [], + "table_body": "| Method variants | MMLongBench | MMLongBench | Qasper | Qasper |\n|---------------------|---------------|---------------|----------|----------|\n| | EM | F1 | Accuracy | F1 |\n| BookRAG (Full) | 43.8 | 44.9 | 55.2 | 61.1 |\n| w/o gradient ER | 40.1 | 42.8 | 48.9 | 57.3 |\n| w/o Planning | 30.8 | 33.2 | 40.9 | 48.5 |\n| w/o Selector | 42.5 | 43.1 | 52.5 | 59.1 |\n| w/o Graph_Reasoning | 39.8 | 41.5 | 51.4 | 58.4 |\n| w/o Text_Reasoning | 39.0 | 40.3 | 47.2 | 52.5 |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "text", + "text": "The first variant evaluates the impact of KG quality on retrieval performance. The second and third variants assess the necessity of our Agent-based Planning and IFT-inspired selection mechanism, respectively. Finally, the last two variants validate the effectiveness of our multi-dimensional reasoning and dynamic Skyline filtering strategy. As shown in Table 7, the performance degradation across all variants confirms the essential role of each module in BookRAG. Specifically, the performance drop in the w/o Gradient ER variant highlights the critical role of a high-quality, connectivity-rich KG in supporting effective reasoning. Removing the Planning mechanism results in the most significant performance loss, confirming that a static workflow is insufficient for handling diverse types of queries. The w/o Selector variant, while maintaining competitive accuracy, incurs a prohibitive computational cost ( > 2 × tokens on Qasper),", + "text_level": -1, + "page_idx": 10, + "pdf_id": 185, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "11", + "text_level": -1, + "page_idx": 10, + "pdf_id": 186, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "validating the efficiency of our IFT-inspired \"narrow-then-reason\" strategy.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 187, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Figure 6: Comparison of graph statistics. Values are normalized to the Basic setting (Baseline=1.0). Absolute values for Basic are annotated. Note that density values are abbreviated (e.g., 3.6E-3 denotes 3 6 . × 10 -3 ).", + "text_level": -1, + "page_idx": 10, + "pdf_id": 188, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "image", + "text": "", + "text_level": -1, + "page_idx": 10, + "pdf_id": 189, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-6.png", + "image_caption": [ + "cref='#/texts/224'" + ], + "image_footnote": [], + "middle_json": { + "docling_label": "picture" + } + }, + { + "type": "text", + "text": "· Impact of Gradient-based Entity Resolution. To evaluate the quality of our constructed KG, we compare the graph statistics of our Gradient-based ER against a Basic KG construction. The Basic setting employs simple exact name matching for entity merging, which is standard practice in many graph-based methods. Figure 6 presents the comparative results, normalizing the metrics (Entity count, Density, Diameter of the Largest Connected Component, and Number of Connected Components) against the Basic baseline. The results demonstrate that our Gradient-based ER significantly optimizes KG. Specifically, it reduces the number of entities (by 12%) while substantially boosting graph density (by over 20% across datasets). This structural shift indicates that our ER module effectively identifies the same conceptual entities that possess different names. Consequently, the resulting graphs are more compact and cohesive, as evidenced by the reduced diameter and fewer connected components, which mitigates graph fragmentation and facilitates better connectivity for graph reasoning.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 190, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Figure 7: QA performance breakdown by different query types (Single-hop, Multi-hop, and Global). The blue bars represent Exact Match (EM) for MMLongBench and Accuracy for Qasper, while the red bars represent the F1-score.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 191, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "image", + "text": "", + "text_level": -1, + "page_idx": 10, + "pdf_id": 192, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-7.png", + "image_caption": [ + "cref='#/texts/259'" + ], + "image_footnote": [], + "middle_json": { + "docling_label": "picture" + } + }, + { + "type": "text", + "text": "· QA performance under different query types. Figure 7 breaks down the performance of BookRAG across Single-hop, Multihop, and Global aggregation query types. We observe that Multihop queries generally present a greater challenge compared to Single-hop ones, resulting in a slight performance decrease. This trend reflects the inherent difficulty of retrieving and reasoning over disjoint pieces of evidence. It further validates our agent-based planning strategy, which handles different query types separately.", + "text_level": -1, + "page_idx": 10, + "pdf_id": 193, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "· Error Response analysis. To diagnose the performance bottlenecks of BookRAG, we conduct a fine-grained error analysis on 200 sampled queries from each dataset, tracing the error propagation as shown in Figure 9. We categorize failures into four types:", + "text_level": -1, + "page_idx": 10, + "pdf_id": 194, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "Figure 8: Case study of responses across different query types from MMLongBench and Qasper. CYAN TEXT highlights correct content generated by BookRAG. GRAY TEXT describes the internal process, and marks omitted irrelevant parts.", + "text_level": -1, + "page_idx": 11, + "pdf_id": 195, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "image", + "text": "", + "text_level": -1, + "page_idx": 11, + "pdf_id": 196, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-8.png", + "image_caption": [ + "cref='#/texts/282'" + ], + "image_footnote": [], + "middle_json": { + "docling_label": "picture" + } + }, + { + "type": "text", + "text": "Figure 9: Error analysis on 200 sampled queries from MMLongBench and Qasper datasets.", + "text_level": -1, + "page_idx": 11, + "pdf_id": 197, + "middle_json": { + "docling_label": "caption" + } + }, + { + "type": "image", + "text": "", + "text_level": -1, + "page_idx": 11, + "pdf_id": 198, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-9.png", + "image_caption": [ + "cref='#/texts/348'" + ], + "image_footnote": [], + "middle_json": { + "docling_label": "picture" + } + }, + { + "type": "text", + "text": "PDF Parsing, Plan, Retrieval, and Generation errors. The results identify Retrieval Error as the dominant failure mode, followed by Generation Error, reflecting the persistent challenge of locating and synthesizing multimodal evidence. Regarding Plan Error, our qualitative analysis reveals a specific failure pattern: the planner tends to over-decompose detailed single-hop queries into unnecessary multi-hop sub-tasks. This fragmentation leads to disjointed retrieval paths, effectively preventing the model from synthesizing a cohesive final answer from the scattered sub-responses.", + "text_level": -1, + "page_idx": 11, + "pdf_id": 199, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "· Case study. Figure 8 illustrates BookRAG's answering workflow across Single-hop, Multi-hop, and Global queries. The results demonstrate that by leveraging specific operators ( Select , Decompose , and Filter ), BookRAG effectively prunes search spaces. For example, in the Single-hop case, the reasoning space is significantly reduced from 134 to 24 nodes. This capability allows the system to efficiently isolate relevant evidence from noise, ensuring precise answer generation.", + "text_level": -1, + "page_idx": 11, + "pdf_id": 200, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "7 CONCLUSION", + "text_level": 0, + "page_idx": 11, + "pdf_id": 201, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "In this paper, we propose BookRAG, a novel method built upon Book Index, a document-native, structured Tree-Graph index specifically designed to capture the intricate relations of structural documents. By employing an agent-based method to dynamically configure retrieval and reasoning operators, our approach achieves state-ofthe-art performance on multiple benchmarks, demonstrating significant superiority over existing baselines in both retrieval precision and answer accuracy. In the future, we will explore an integrated document-native database system that supports data formatting, knowledge extraction, and intelligent querying.", + "text_level": -1, + "page_idx": 11, + "pdf_id": 202, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "12", + "text_level": -1, + "page_idx": 11, + "pdf_id": 203, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "REFERENCES", + "text_level": 0, + "page_idx": 12, + "pdf_id": 204, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "[1] Simran Arora, Brandon Yang, Sabri Eyuboglu, Avanika Narayan, Andrew Hojel, Immanuel Trummer, and Christopher Ré. 2023. Language Models Enable Simple Systems for Generating Structured Views of Heterogeneous Data Lakes. Proceedings of the VLDB Endowment 17, 2 (2023), 92-105.", + "text_level": -1, + "page_idx": 12, + "pdf_id": 205, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[2] Akari Asai, Zeqiu Wu, Yizhong Wang, et al. 2024. Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection. In International Conference on Learning Representations (ICLR) .", + "text_level": -1, + "page_idx": 12, + "pdf_id": 206, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[3] Akari Asai, Zeqiu Wu, Yizhong Wang, Avirup Sil, and Hannaneh Hajishirzi. 2023. Self-rag: Learning to retrieve, generate, and critique through self-reflection. arXiv preprint arXiv:2310.11511 (2023).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 207, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[4] Shuai Bai, Keqin Chen, Xuejing Liu, Jialin Wang, Wenbin Ge, Sibo Song, Kai Dang, Peng Wang, Shijie Wang, Jun Tang, et al. 2025. Qwen2.5-vl technical report. arXiv preprint arXiv:2502.13923 (2025).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 208, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[5] Camille Barboule, Benjamin Piwowarski, and Yoan Chabot. 2025. Survey on Question Answering over Visually Rich Documents: Methods, Challenges, and Trends. arXiv preprint arXiv:2501.02235 (2025).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 209, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[6] Yukun Cao, Zengyi Gao, Zhiyang Li, Xike Xie, S. Kevin Zhou, and Jianliang Xu. 2025. LEGO-GraphRAG: Modularizing Graph-Based Retrieval-Augmented Generation for Design Space Exploration. Proc. VLDB Endow. 18, 10 (June 2025), 3269-3283. https://doi.org/10.14778/3748191.3748194", + "text_level": -1, + "page_idx": 12, + "pdf_id": 210, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[7] Chengliang Chai, Jiajun Li, Yuhao Deng, Yuanhao Zhong, Ye Yuan, Guoren Wang, and Lei Cao. 2025. Doctopus: Budget-aware structural table extraction from unstructured documents. Proceedings of the VLDB Endowment 18, 11 (2025), 3695-3707.", + "text_level": -1, + "page_idx": 12, + "pdf_id": 211, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[8] Ilias Chalkidis, Manos Fergadiotis, Prodromos Malakasiotis, Nikolaos Aletras, and Ion Androutsopoulos. 2020. LEGAL-BERT: The muppets straight out of law school. arXiv preprint arXiv:2010.02559 (2020).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 212, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[9] Sibei Chen, Yeye He, Weiwei Cui, Ju Fan, Song Ge, Haidong Zhang, Dongmei Zhang, and Surajit Chaudhuri. 2024. Auto-Formula: Recommend Formulas in Spreadsheets using Contrastive Learning for Table Representations. Proceedings of the ACM on Management of Data 2, 3 (2024), 1-27.", + "text_level": -1, + "page_idx": 12, + "pdf_id": 213, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[10] Sibei Chen, Nan Tang, Ju Fan, Xuemi Yan, Chengliang Chai, Guoliang Li, and Xiaoyong Du. 2023. Haipipe: Combining human-generated and machine-generated pipelines for data preparation. Proceedings of the ACM on Management of Data 1, 1 (2023), 1-26.", + "text_level": -1, + "page_idx": 12, + "pdf_id": 214, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[11] Jaemin Cho, Debanjan Mahata, Ozan Irsoy, Yujie He, and Mohit Bansal. 2024. M3docrag: Multi-modal retrieval is what you need for multi-page multidocument understanding. arXiv preprint arXiv:2411.04952 (2024).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 215, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[12] Vassilis Christophides, Vasilis Efthymiou, Themis Palpanas, George Papadakis, and Kostas Stefanidis. 2020. An overview of end-to-end entity resolution for big data. ACM Computing Surveys (CSUR) 53, 6 (2020), 1-42.", + "text_level": -1, + "page_idx": 12, + "pdf_id": 216, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[13] Gheorghe Comanici, Eric Bieber, Mike Schaekermann, Ice Pasupat, Noveen Sachdeva, Inderjit Dhillon, Marcel Blistein, Ori Ram, Dan Zhang, Evan Rosen, et al. 2025. Gemini 2.5: Pushing the frontier with advanced reasoning, multimodality, long context, and next generation agentic capabilities. arXiv preprint arXiv:2507.06261 (2025).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 217, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[14] Pradeep Dasigi, Kyle Lo, Iz Beltagy, Arman Cohan, Noah A Smith, and Matt Gardner. 2021. A dataset of information-seeking questions and answers anchored in research papers. arXiv preprint arXiv:2105.03011 (2021).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 218, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[15] Xavier Daull, Patrice Bellot, Emmanuel Bruno, Vincent Martin, and Elisabeth Murisasco. 2023. Complex QA and language models hybrid architectures, Survey. arXiv preprint arXiv:2302.09051 (2023).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 219, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[16] Darren Edge, Ha Trinh, Newman Cheng, Joshua Bradley, Alex Chao, Apurva Mody, Steven Truitt, and Jonathan Larson. 2024. From local to global: A graph rag approach to query-focused summarization. arXiv preprint arXiv:2404.16130 (2024).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 220, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[17] Yunfan Gao, Yun Xiong, Xinyu Gao, Kangxiang Jia, Jinliu Pan, Yuxi Bi, Yi Dai, Jiawei Sun, and Haofen Wang. 2023. Retrieval-augmented generation for large language models: A survey. arXiv preprint arXiv:2312.10997 (2023).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 221, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[18] Zirui Guo, Lianghao Xia, Yanhua Yu, Tu Ao, and Chao Huang. 2024. LightRAG: Simple and Fast Retrieval-Augmented Generation. arXiv e-prints (2024), arXiv2410.", + "text_level": -1, + "page_idx": 12, + "pdf_id": 222, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[19] Bernal Jiménez Gutiérrez, Yiheng Shu, Yu Gu, Michihiro Yasunaga, and Yu Su. 2024. HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models. arXiv preprint arXiv:2405.14831 (2024).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 223, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[20] Taher H Haveliwala. 2002. Topic-sensitive pagerank. In Proceedings of the 11th international conference on World Wide Web . 517-526.", + "text_level": -1, + "page_idx": 12, + "pdf_id": 224, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[21] Xiaoxin He, Yijun Tian, Yifei Sun, Nitesh V Chawla, Thomas Laurent, Yann LeCun, Xavier Bresson, and Bryan Hooi. 2024. G-retriever: Retrieval-augmented generation for textual graph understanding and question answering. arXiv preprint arXiv:2402.07630 (2024).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 225, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[22] Yucheng Hu and Yuxing Lu. 2024. Rag and rau: A survey on retrieval-augmented language model in natural language processing. arXiv preprint arXiv:2404.19543 (2024).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 226, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "[23] Soyeong Jeong, Jinheon Baek, et al. 2024. Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity. arXiv preprint arXiv:2403.14403 (2024).", + "text_level": -1, + "page_idx": 12, + "pdf_id": 227, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "13", + "text_level": -1, + "page_idx": 12, + "pdf_id": 228, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 12, + "pdf_id": 229, + "img_path": "", + "table_caption": [], + "table_footnote": [], + "table_body": "| [24] | Soyeong Jeong, Jinheon Baek, Sukmin Cho, Sung Ju Hwang, and Jong C Park. 2024. Adaptive-rag: Learning to adapt retrieval-augmented large language mod- |\n|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [25] | els through question complexity. arXiv preprint arXiv:2403.14403 (2024). Tengjun Jin, Yuxuan Zhu, and Daniel Kang. 2025. ELT-Bench: An End-to- End Benchmark for Evaluating AI Agents on ELT Pipelines. arXiv preprint |\n| [26] | arXiv:2504.04808 (2025). Geewook Kim, Teakgyu Hong, Moonbin Yim, JeongYeon Nam, Jinyoung Park, Jinyeong Yim, Wonseok Hwang, Sangdoo Yun, Dongyoon Han, and Seunghyun Park. 2022. Ocr-free document understanding transformer. In European Confer- |\n| [27] | ence on Computer Vision . Springer, 498-517. Dawei Li, Shu Yang, Zhen Tan, Jae Young Baik, Sukwon Yun, Joseph Lee, Aaron Chacko, Bojian Hou, Duy Duong-Tran, Ying Ding, et al. 2024. DALK: Dynamic Co-Augmentation of LLMs and KG to answer Alzheimer's Disease Questions with Scientific Literature. arXiv preprint arXiv:2405.04819 (2024). |\n| [28] | Guoliang Li, Jiayi Wang, Chenyang Zhang, and Jiannan Wang. 2025. Data+ AI: LLM4Data and Data4LLM. In Companion of the 2025 International Conference on |\n| [29] | Management of Data . 837-843. Yinheng Li, Shaofei Wang, Han Ding, and Hang Chen. 2023. Large language models in finance: A survey. In Proceedings of the fourth ACM international conference on AI in finance . 374-382. |\n| [30] | Zhaodonghui Li, Haitao Yuan, Huiming Wang, Gao Cong, and Lidong Bing. 2025. LLM-R2: A Large Language Model Enhanced Rule-based Rewrite System for Boosting Query Efficiency. Proceedings of the VLDB Endowment 1, 18 (2025), 53-65. |\n| [31] | Haoyu Lu, Wen Liu, Bo Zhang, et al. 2024. DeepSeek-VL: Towards Real-World Vision-Language Understanding. arXiv preprint arXiv:2403.05525 (2024). |\n| [32] | Shengjie Ma, Chengjin Xu, Xuhui Jiang, Muzhi Li, Huaren Qu, Cehao Yang, Jiaxin Mao, and Jian Guo. 2024. Think-on-Graph 2.0: Deep and Faithful Large Language Model Reasoning with Knowledge-guided Retrieval Augmented Generation. arXiv preprint arXiv:2407.10805 (2024). |\n| [33] | Yubo Ma, Yuhang Zang, Liangyu Chen, Meiqi Chen, Yizhu Jiao, Xinze Li, Xinyuan Lu, Ziyu Liu, Yan Ma, Xiaoyi Dong, et al. 2024. Mmlongbench-doc: Benchmarking long-context document understanding with visualizations. Advances in Neural Information Processing Systems 37 (2024), 95963-96010. |\n| [34] | Alex Mallen, Akari Asai, Victor Zhong, Rajarshi Das, Daniel Khashabi, and Hannaneh Hajishirzi. 2022. When not to trust language models: Investigat- ing effectiveness of parametric and non-parametric memories. arXiv preprint arXiv:2212.10511 (2022). |\n| [35] | Zan Ahmad Naeem, Mohammad Shahmeer Ahmad, Mohamed Eltabakh, Mourad Ouzzani, and Nan Tang. 2024. RetClean: Retrieval-Based Data Cleaning Using LLMs and Data Lakes. Proceedings of the VLDB Endowment 17, 12 (2024), 4421- 4424. |\n| [36] | Avanika Narayan, Ines Chami, Laurel Orr, and Christopher Ré. 2022. Can Foun- dation Models Wrangle Your Data? Proceedings of the VLDB Endowment 16, 4 (2022), 738-746. |\n| [37] | Yuqi Nie, Yaxuan Kong, Xiaowen Dong, John M Mulvey, H Vincent Poor, Qing- song Wen, and Stefan Zohren. 2024. A Survey of Large Language Models for Financial Applications: Progress, Prospects and Challenges. arXiv preprint |\n| [38] | arXiv:2406.11903 (2024). Arash Dargahi Nobari and Davood Rafiei. 2024. TabulaX: Leveraging Large Language Models for Multi-Class Table Transformations. arXiv preprint arXiv:2411.17110 (2024). |\n| [39] | PageIndex. 2025. PageIndex: Next-Generation Reasoning-based RAG. https: //pageindex.ai/. |\n| [40] | Liana Patel, Siddharth Jha, Melissa Pan, Harshit Gupta, Parth Asawa, Carlos Guestrin, and Matei Zaharia. 2025. Semantic Operators and Their Optimization: Enabling LLM-Based Data Processing with Accuracy Guarantees in LOTUS. |\n| [41] | Proceedings of the VLDB Endowment 18, 11 (2025), 4171-4184. Boci Peng, Yun Zhu, Yongchao Liu, Xiaohe Bo, Haizhou Shi, Chuntao Hong, Yan Zhang, and Siliang Tang. 2024. Graph retrieval-augmented generation: A survey. |\n| [42] | arXiv preprint arXiv:2408.08921 (2024). Peter Pirolli and Stuart Card. 1995. Information foraging in information access environments. In Proceedings of the SIGCHI conference on Human factors in computing systems . 51-58. |\n| [43] | Yichen Qian, Yongyi He, Rong Zhu, Jintao Huang, Zhijian Ma, Haibin Wang, Framework for Data Manipulation with Large Language Models. |\n| | Yaohua Wang, Xiuyu Sun, Defu Lian, Bolin Ding, et al. 2024. UniDM: A Unified Proceedings of Machine Learning and Systems 6 (2024), 465-482. |\n| [44] | Stephen E Robertson and Steve Walker. 1994. Some simple effective approxi- mations to the 2-poisson model for probabilistic weighted retrieval. In SIGIR'94: Proceedings of the Seventeenth Annual International ACM-SIGIR Conference on Research and Development in Information Retrieval, organised by Dublin City |\n| [45] | University . Springer, 232-241. Parth Sarthi, Salman Abdullah, Aditi Tuli, Shubh Khanna, Anna Goldie, and Christopher D Manning. 2024. Raptor: Recursive abstractive processing for |\n| | tree-organized retrieval. arXiv preprint arXiv:2401.18059 (2024). |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "text", + "text": "[46] Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Eric Hambro, Luke Zettlemoyer, Nicola Cancedda, and Thomas Scialom. 2024.", + "text_level": -1, + "page_idx": 12, + "pdf_id": 230, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 13, + "pdf_id": 231, + "img_path": "", + "table_caption": [], + "table_footnote": [], + "table_body": "| | Toolformer: Language models can teach themselves to use tools. Advances in Neural Information Processing Systems 36 (2024). |\n|------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [47] | Shreya Shankar, Tristan Chambers, Tarak Shah, Aditya G Parameswaran, and Eugene Wu. 2024. Docetl: Agentic query rewriting and evaluation for complex document processing. arXiv preprint arXiv:2410.12189 (2024). |\n| [48] | Shamane Siriwardhana, Rivindu Weerasekera, Elliott Wen, Tharindu Kalu- arachchi, Rajib Rana, and Suranga Nanayakkara. 2023. Improving the domain adaptation of retrieval augmented generation (RAG) models for open domain question answering. Transactions of the Association for Computational Linguistics 11 (2023), 1-17. |\n| [49] | Solutions Review Editors. 2019. 80 Percent of Your Data Will Be Unstructured in Five Years. https://solutionsreview.com/data-management/80-percent-of-your- datawill-be-unstructured-in-five-years/. Accessed: 2023-10-27. |\n| [50] | Zhaoyan Sun, Xuanhe Zhou, and Guoliang Li. 2024. R-Bot: An LLM-based Query |\n| [51] | Rewrite System. arXiv preprint arXiv:2412.01661 (2024). Vincent A Traag, Ludo Waltman, and Nees Jan Van Eck. 2019. From Louvain to Leiden: guaranteeing well-connected communities. Scientific reports 9, 1 (2019), 1-12. |\n| [52] | Bin Wang, Chao Xu, Xiaomeng Zhao, Linke Ouyang, Fan Wu, Zhiyuan Zhao, Rui Xu, Kaiwen Liu, Yuan Qu, Fukai Shang, et al. 2024. Mineru: An open-source solution for precise document content extraction. arXiv preprint arXiv:2409.18839 (2024). |\n| [53] | Jiayi Wang and Guoliang Li. 2025. Aop: Automated and interactive llm pipeline orchestration for answering complex queries. CIDR. |\n| [54] | Peng Wang, Shuai Bai, Sinan Tan, Shijie Wang, Zhihao Fan, Jinze Bai, Keqin Chen, Xuejing Liu, Jialin Wang, Wenbin Ge, et al. 2024. Qwen2-vl: Enhancing vision-language model's perception of the world at any resolution. arXiv preprint arXiv:2409.12191 (2024). |\n| [55] | Shu Wang, Yixiang Fang, Yingli Zhou, Xilin Liu, and Yuchi Ma. 2025. ArchRAG: Attributed Community-based Hierarchical Retrieval-Augmented Generation. arXiv preprint arXiv:2502.09891 (2025). |\n| [56] | Shen Wang, Tianlong Xu, Hang Li, Chaoli Zhang, Joleen Liang, Jiliang Tang, Philip S Yu, and Qingsong Wen. 2024. Large language models for education: A survey and outlook. arXiv preprint arXiv:2403.18105 (2024). |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "table", + "text": "", + "text_level": -1, + "page_idx": 13, + "pdf_id": 232, + "img_path": "", + "table_caption": [], + "table_footnote": [], + "table_body": "| [57] | Shu Wang, Yingli Zhou, and Yixiang Fang. [n. d.]. BookRAG: A Hierarchical Structure-aware Index-based Approach for Complex Document Question An- swering. https://github.com/sam234990/BookRAG. |\n|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [58] | Yu Wang, Nedim Lipka, Ryan A Rossi, Alexa Siu, Ruiyi Zhang, and Tyler Derr. 2024. Knowledge graph prompting for multi-document question answering. In Proceedings of the AAAI Conference on Artificial Intelligence , Vol. 38. 19206-19214. |\n| [59] | Shi-Qi Yan, Jia-Chen Gu, Yun Zhu, and Zhen-Hua Ling. 2024. Corrective Retrieval Augmented Generation. arXiv preprint arXiv:2401.15884 (2024). |\n| [60] | An Yang, Anfeng Li, Baosong Yang, Beichen Zhang, Binyuan Hui, Bo Zheng, Bowen Yu, Chang Gao, Chengen Huang, Chenxu Lv, et al. 2025. Qwen3 technical report. arXiv preprint arXiv:2505.09388 (2025). |\n| [61] | Murong Yue. 2025. A survey of large language model agents for question an- swering. arXiv preprint arXiv:2503.19213 (2025). |\n| [62] | Qinggang Zhang, Shengyuan Chen, Yuanchen Bei, Zheng Yuan, Huachi Zhou, Zijin Hong, Hao Chen, Yilin Xiao, Chuang Zhou, Junnan Dong, et al. 2025. A survey of graph retrieval-augmented generation for customized large language models. arXiv preprint arXiv:2501.13958 (2025). |\n| [63] | Xin Zhang, Yanzhao Zhang, Wen Xie, Mingxin Li, Ziqi Dai, Dingkun Long, Pengjun Xie, Meishan Zhang, Wenjie Li, and Min Zhang. 2024. GME: Im- proving Universal Multimodal Retrieval by Multimodal LLMs. arXiv preprint |\n| [64] | Yanzhao Zhang, Mingxin Li, Dingkun Long, Xin Zhang, Huan Lin, Baosong Yang, Pengjun Xie, An Yang, Dayiheng Liu, Junyang Lin, et al. 2025. Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models. arXiv preprint arXiv:2506.05176 (2025). |\n| [65] | Wayne Xin Zhao, Kun Zhou, Junyi Li, Tianyi Tang, Xiaolei Wang, Yupeng Hou, Yingqian Min, Beichen Zhang, Junjie Zhang, Zican Dong, et al. 2023. A survey of large language models. arXiv preprint arXiv:2303.18223 1, 2 (2023). |\n| [66] | Yingli Zhou, Yaodong Su, Youran Sun, Shu Wang, Taotao Wang, Runyuan He, Yongwei Zhang, Sicong Liang, Xilin Liu, Yuchi Ma, et al. 2025. In-depth Analysis of Graph-based RAG in a Unified Framework. arXiv preprint arXiv:2503.04338 (2025). |\n| [67] | Yutao Zhu, Huaying Yuan, Shuting Wang, Jiongnan Liu, Wenhan Liu, Chenlong Deng, Haonan Chen, Zheng Liu, Zhicheng Dou, and Ji-Rong Wen. 2023. Large language models for information retrieval: A survey. ACM Transactions on Information Systems (2023). |", + "middle_json": { + "docling_label": "table" + } + }, + { + "type": "text", + "text": "14", + "text_level": -1, + "page_idx": 13, + "pdf_id": 233, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "A EXPERIMENTAL DETAILS", + "text_level": 0, + "page_idx": 14, + "pdf_id": 234, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "A.1 Evaluation Metrics", + "text_level": 0, + "page_idx": 14, + "pdf_id": 235, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "In this section, we provide the detailed definitions and calculation procedures for the metrics used in our main experiments.", + "text_level": -1, + "page_idx": 14, + "pdf_id": 236, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "A.1.1 Answer Extraction and Normalization. Standard RAG models typically generate free-form natural language responses, which may contain extraneous conversational text (e.g., 'The answer is...'). Directly comparing these raw outputs with concise ground truth labels (e.g., 'Option A' or '12.5') can lead to false negatives.", + "text_level": -1, + "page_idx": 14, + "pdf_id": 237, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Following official evaluation protocols, we employ an LLM-based extraction step to align the model output with the ground truth format before calculation. Let 𝑦 𝑟𝑎𝑤 denote the raw response generated by the RAG system and 𝑦 𝑔𝑜𝑙𝑑 denote the ground truth. We define the extracted answer ˆ as: 𝑦", + "text_level": -1, + "page_idx": 14, + "pdf_id": 238, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "ˆ 𝑦 = LLMextract ( 𝑦 𝑟𝑎𝑤 , Instruction ) (16)", + "text_level": -1, + "page_idx": 14, + "pdf_id": 239, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "where LLMextract extracts the key information (e.g., the key entity for span extraction) from 𝑦 𝑟𝑎𝑤 . We further apply standard normalization N(·) (e.g., lowercasing, removing punctuation) to both ˆ 𝑦 and 𝑦 𝑔𝑜𝑙𝑑 .", + "text_level": -1, + "page_idx": 14, + "pdf_id": 240, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "A.1.2 QA Performance Metrics. Based on the ground truth 𝑦 𝑔𝑜𝑙𝑑 and the model's response (either raw 𝑦 𝑟𝑎𝑤 or extracted ˆ), we com𝑦 pute the following metrics:", + "text_level": -1, + "page_idx": 14, + "pdf_id": 241, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Accuracy (Inclusion-based). Following prior works [3, 34, 46], we utilize accuracy as a soft-match metric. We consider a prediction correct if the normalized gold answer is included in the model's generated response, rather than requiring a strict exact match. This accounts for the uncontrollable nature of LLM generation.", + "text_level": -1, + "page_idx": 14, + "pdf_id": 242, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "Accuracy = 1 𝑁 𝑁 ∑︁ 𝑖 = 1 I (N( 𝑦 𝑔𝑜𝑙𝑑,𝑖 ) ⊆ N( 𝑦 𝑟𝑎𝑤,𝑖 )) (17)", + "text_level": -1, + "page_idx": 14, + "pdf_id": 243, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "where ⊆ denotes the substring inclusion relation.", + "text_level": -1, + "page_idx": 14, + "pdf_id": 244, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Exact Match (EM).. Unlike accuracy, Exact Match is a strict metric. It measures whether the normalized extracted answer ˆ is character𝑦 for-character identical to the ground truth.", + "text_level": -1, + "page_idx": 14, + "pdf_id": 245, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "EM = 1 𝑁 𝑁 ∑︁ 𝑖 = 1 I (N( ˆ 𝑦 𝑖 ) = N( 𝑦 𝑔𝑜𝑙𝑑,𝑖 )) (18)", + "text_level": -1, + "page_idx": 14, + "pdf_id": 246, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "F1-score. For questions requiring text span answers, we utilize the token-level F1-score between the extracted answer ˆ and the 𝑦 ground truth 𝑦 𝑔𝑜𝑙𝑑 . Treating them as bags of tokens 𝑇 ˆ 𝑦 and 𝑇 𝑔𝑜𝑙𝑑 :", + "text_level": -1, + "page_idx": 14, + "pdf_id": 247, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "𝑃 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 ˆ 𝑦 | , 𝑅 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 𝑔𝑜𝑙𝑑 | , F1 = 2 · 𝑃 · 𝑅 𝑃 + 𝑅 (19)", + "text_level": -1, + "page_idx": 14, + "pdf_id": 248, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "15", + "text_level": -1, + "page_idx": 14, + "pdf_id": 249, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "A.1.3 Retrieval Recall. As described in the main text, we evaluate retrieval quality based on the granularity of parsed PDF blocks (e.g., paragraphs, tables, images). For a given query 𝑞 , let B 𝑔𝑜𝑙𝑑 be the set of manually labeled ground-truth blocks required to answer 𝑞 , and B 𝑟𝑒𝑡 be the set of unique blocks retrieved by the system. The Retrieval Recall is defined as:", + "text_level": -1, + "page_idx": 14, + "pdf_id": 250, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "equation", + "text": "Recall 𝑟𝑒𝑡 = ( 0 if parsing error occurs on B 𝑔𝑜𝑙𝑑 | B 𝑟𝑒𝑡 ∩B 𝑔𝑜𝑙𝑑 | | B 𝑔𝑜𝑙𝑑 | otherwise (20)", + "text_level": -1, + "page_idx": 14, + "pdf_id": 251, + "middle_json": { + "docling_label": "formula" + } + }, + { + "type": "text", + "text": "Specifically, if a ground-truth block is lost due to PDF parsing failures (i.e., it does not exist in the candidate pool), it is considered strictly unretrievable, resulting in a recall contribution of 0 for that specific block.", + "text_level": -1, + "page_idx": 14, + "pdf_id": 252, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "A.2 Implementation details", + "text_level": 0, + "page_idx": 14, + "pdf_id": 253, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Weimplement BookRAG in Python, utilizing MinerU [52] for robust document layout parsing. For a fair comparison, both BookRAG and all baseline methods are powered by a unified set of state-of-theart (SOTA) and widely adopted backbone models from the Qwen family [4, 60, 63, 64], including LLM, vision-language model (VLM), and embedding models. Specifically, we utilize Qwen3-8B [60] as the default LLM, Qwen2.5VL-30B [4] as the vision-language model (VLM), Qwen3-Embedding-0.6B [64] for text embedding, gme-Qwen2-VL-2B-Instruct [63] for multi-modal embedding, and Qwen3-Reranker-4B [64] for reranking. We primarily select models under the 10B parameter scale to balance efficiency and effectiveness. However, for the VLM, we adopt the 30B version, as the 8B counterpart exhibited significant performance deficits, frequently failing to answer correctly even when provided with ground-truth images. All experiments were conducted on a Linux operating system running on a high-performance server equipped with an Intel Xeon 2.0GHz CPU, 1024GB of memory, and 8 NVIDIA GeForce RTX A5000 GPUs, each with 24 GB of VRAM. Specifically, to ensure a fair comparison of efficiency, all methods were executed serially, and the reported time costs reflect this sequential processing mode. For methods involving document chunking and retrieval ranking, we standardize the chunk size at 500 tokens and set the retrieval top𝑘 to 10 to ensure consistent candidate pool sizes across baselines. For further reproducibility, our source code and detailed implementation configurations are publicly available at our repository: https://github.com/sam234990/BookRAG.", + "text_level": -1, + "page_idx": 14, + "pdf_id": 254, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "A.3 Prompts", + "text_level": 0, + "page_idx": 14, + "pdf_id": 255, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Specifically, we present the prompts designed for agent-based query classification (Figure 10), question decomposition (Figure 11), and filter operator generation (Figure 12). Additionally, we illustrate the prompt employed for entity resolution judgment (Figure 13) during the graph construction phase.", + "text_level": -1, + "page_idx": 14, + "pdf_id": 256, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "You are an expert query analyzer. Your only task is to classify the user's question into one of three categories: \"simple\", \"complex\", or \"global\". Respond only with the specified JSON object.", + "text_level": -1, + "page_idx": 15, + "pdf_id": 257, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Category Definitions:", + "text_level": 0, + "page_idx": 15, + "pdf_id": 258, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "1. single-hop: The question can be fully answered by retrieving information from a SINGLE, contiguous location in the document (e.g., one specific paragraph, one complete table, or one figure).", + "text_level": -1, + "page_idx": 15, + "pdf_id": 259, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "-This includes questions that require reasoning or comparison, as long as all the necessary data is present within that single retrieved location.", + "text_level": -1, + "page_idx": 15, + "pdf_id": 260, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "-Example: \"What is the title of Figure 2?\"", + "text_level": -1, + "page_idx": 15, + "pdf_id": 261, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "-Example: \"How do 5% of the Latinos see economic upward mobility for their children?\" -> This is SIMPLE because the answer can be found by looking at a single chart or paragraph.", + "text_level": -1, + "page_idx": 15, + "pdf_id": 262, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "2. multi-hop: The question requires decomposition into multiple simple sub-questions, where each sub-question must be answered by a separate retrieval action.", + "text_level": -1, + "page_idx": 15, + "pdf_id": 263, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "-It often contains a nested or indirect constraint that requires a preliminary step to resolve before the main question can be answered.", + "text_level": -1, + "page_idx": 15, + "pdf_id": 264, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "-Example: \"What is the color of the personality vector...?\" -> This is COMPLEX because it requires two separate retrieval actions.", + "text_level": -1, + "page_idx": 15, + "pdf_id": 265, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "3. global: The question requires an aggregation operation (e.g., counting, listing, summarizing) over a set of items that are identified by a clear structural filter.", + "text_level": -1, + "page_idx": 15, + "pdf_id": 266, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "-Example: \"How many tables are in the document?\" -> This is GLOBAL because the process is to filter for all items of type 'table'.", + "text_level": -1, + "page_idx": 15, + "pdf_id": 267, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "User Query: query", + "text_level": -1, + "page_idx": 15, + "pdf_id": 268, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Figure 10: The prompt for query classification.", + "text_level": -1, + "page_idx": 15, + "pdf_id": 269, + "middle_json": { + "docling_label": "paragraph" + } + }, + { + "type": "text", + "text": "16", + "text_level": -1, + "page_idx": 15, + "pdf_id": 270, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "You are a query decomposition expert. You have been given a \"complex\" question. Your task is to break it down into a series of simple, atomic sub-questions and classify each one by type. **Crucial Instructions:** 1. Each ' retrieval ' sub-question MUST be a direct information retrieval task that can be answered independently by looking up a specific fact, number, or value in the document. 2. ** ' retrieval ' sub-questions MUST NOT depend on the answer of another sub-question.** They should be parallelizable. All logic for combining their results must be placed in a final ' synthesis ' question. 3. A ' synthesis ' question requires comparing, calculating, or combining the answers of the previous ' retrieval ' questions. It does **NOT** require a new lookup in the document. You MUST provide your response in a JSON object with a single key 'sub_questions', which contains a list of objects. Each object must have a 'question' (string) and a 'type' (string: \"retrieval\" or \"synthesis\"). ---EXAMPLE 1 (Correct Decomposition with Independent Lookups) ---Complex Query: \"What is the color of the personality vector in the soft-labled personality embedding matrix that with the highest Receptiviti score for User A2GBIFL43U1LKJ?\" Expected JSON Output: {{ \"sub_questions\": [ {{\"question\": \"What are all the Receptiviti scores for each personality vector for User A2GBIFL43U1LKJ?\", \"type\": \"retrieval\"}}, {{\"question\": \"What is the mapping of personality vectors to their colors in the soft-labled personality embedding matrix?\", \"type\": \"retrieval\"}}, {{\"question\": \"From the gathered scores, identify the personality vector with the highest score, and then find its corresponding color from the vector-to-color mapping.\", \"type\": \"synthesis\"}} ] }} ---END EXAMPLE 1 ------EXAMPLE 2 (Decomposition with retrieval and synthesis steps) ---Complex Query: \"According to the report, which one is greater in population in the survey? Foreign born Latinos, or the Latinos interviewed by cellphone?\" Expected JSON Output: {{ \"sub_questions\": [ {{\"question\": \"According to the report, what is the population of foreign born Latinos in the survey?\", \"type\": \"retrieval\"}}, {{\"question\": \"According to the report, what is the population of Latinos interviewed by cellphone in the survey?\", \"type\": \"retrieval\"}}, {{\"question\": \"Which of the two population counts is greater?\", \"type\": \"synthesis\"}} ] }} ---END EXAMPLE 2 --Now, perform the decomposition for the following query. User Query: query", + "text_level": -1, + "page_idx": 16, + "pdf_id": 271, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "Figure 11: The prompt for query decomposition.", + "text_level": -1, + "page_idx": 16, + "pdf_id": 272, + "middle_json": { + "docling_label": "paragraph" + } + }, + { + "type": "text", + "text": "17", + "text_level": -1, + "page_idx": 16, + "pdf_id": 273, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "You are a highly specialized AI assistant. Your only function is to analyze a \"Global Query\" and return a single, valid JSON object that specifies both the filtering steps and the final aggregation operation. You MUST NOT output any other text or explanation. ### INSTRUCTIONS \\& DEFINITIONS ### 1. **Filters**: You MUST determine the list of ' filters ' to apply. Even if the filter is for the whole document (e.g., all tables), the ' filters ' list must be present. -' filter_type ' : One of [\"section\", \"image\", \"table\", \"page\"]. -' section ' : Use for structural parts like chapters, sections, appendices, or references. -' image ' : Use for visual elements like figures, images, pictures, or plots. -' table ' : Use for tabular data. -' page ' : Use for specific page numbers or ranges. -' filter_value ' : (Optional) Can be provided for \"section\" (e.g., a section title) or \"page\" (e.g., '3-10' or '5'). **For \"image\" or \"table\", this value MUST be null.** 2. **Operation**: Determine the final aggregation operation. -' operation ' : One of [\"COUNT\", \"LIST\", \"SUMMARIZE\", \"ANALYZE\"]. ### EXAMPLES OF YOUR TASK ### User: \"How many figures are in this paper from Page 3 to Page 10?\" Assistant: {{\"filters\": [{{\"filter_type\": \"page\", \"filter_value\": \"3-10\"}}, {{\"filter_type\": \"image\"}}], \"operation\": \"COUNT\"}} User: \"Summarize the discussion about 'data augmentation' in the 'Methodology' section.\" Assistant: {{\"filters\": [{{\"filter_type\": \"section\", \"filter_value\": \"Methodology\"}}], \"operation\": \"SUMMARIZE\"}} User: \"How many chapters are in this report?\" Assistant: {{\"filters\": [{{\"filter_type\": \"section\"}}], \"operation\": \"COUNT\"}} ### YOUR CURRENT TASK ### User: \"{query}\" User Query: query", + "text_level": -1, + "page_idx": 17, + "pdf_id": 274, + "middle_json": { + "docling_label": "code" + } + }, + { + "type": "text", + "text": "Figure 12: The prompt for Filter operator generation.", + "text_level": -1, + "page_idx": 17, + "pdf_id": 275, + "middle_json": { + "docling_label": "paragraph" + } + }, + { + "type": "text", + "text": "18", + "text_level": -1, + "page_idx": 17, + "pdf_id": 276, + "middle_json": { + "docling_label": "page_footer" + } + }, + { + "type": "text", + "text": "-Goal-", + "text_level": 0, + "page_idx": 18, + "pdf_id": 277, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "You are an expert Entity Resolution Adjudicator. Your task is to determine if a \"New Entity\" refers to the exact same real-world concept as one of the \"Candidate Entities\" provided from a knowledge graph. Your output must be a JSON object containing the ID of the matching candidate (or -1) and a brief explanation for your decision. -Context-", + "text_level": -1, + "page_idx": 18, + "pdf_id": 278, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "You will be given one \"New Entity\" recently extracted from a text. You will also be given a list of \"Candidate Entities\" that are semantically similar, retrieved from an existing knowledge base. Each candidate has a unique ' id ' for you to reference.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 279, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "---", + "text_level": -1, + "page_idx": 18, + "pdf_id": 280, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "-Core Task & Rules-", + "text_level": 0, + "page_idx": 18, + "pdf_id": 281, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "1. **Analyze the \"New Entity\"**: Carefully read its name, type, and description to understand what it is.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 282, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "2. **Field-by-Field Adjudication**: To determine a match, you must evaluate each field with a specific focus:", + "text_level": -1, + "page_idx": 18, + "pdf_id": 283, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "* ** ' entity_name ' (High Importance):** The names must be extremely similar, a direct abbreviation (e.g., \"LLM\" vs. \"Large Language Model\"), or a well-known alias. **If the names represent distinct, parallel concepts (like \"Event Detection\" and \"Named Entity Recognition\"), they are NOT a match, even if their descriptions are very similar.**", + "text_level": -1, + "page_idx": 18, + "pdf_id": 284, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "* ** ' entity_type ' (Medium Importance):** The types do not need to be identical, but they must be closely related and compatible (e.g., ' COMPANY ' and ' ORGANIZATION ' could describe the same entity).", + "text_level": -1, + "page_idx": 18, + "pdf_id": 285, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "* ** ' description ' (Contextual Importance):** The descriptions may differ as they are often extracted from different parts of a document. Your task is to look past surface-level text similarity and determine if they fundamentally describe the **same underlying object or concept**.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 286, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "3. **Be Strict and Conservative**: Your standard for a match must be very high. An incorrect merge can corrupt the knowledge graph. A missed merge is less harmful.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 287, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "* Surface-level similarities are not enough. The underlying concepts must be identical.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 288, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "* For example, \"Apple\" (the fruit) and \"Apple Inc.\" (the company) are NOT a match.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 289, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "* **When in doubt, you MUST output -1.**", + "text_level": -1, + "page_idx": 18, + "pdf_id": 290, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "* **Assume No Match by Default**: In a large knowledge graph, most new entities are genuinely new. You should start with the assumption that the \"New Entity\" is unique. You must find **strong, convincing evidence** across all fields, especially the ' entity_name ' , to overturn this assumption and declare a match.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 291, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "4. **Format the Output**: **You must provide your answer in a valid JSON format. The JSON object should contain two keys:**", + "text_level": -1, + "page_idx": 18, + "pdf_id": 292, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "* ' select_id ' : An integer. The ' id ' of the candidate you've determined to be an exact match. If no exact match is", + "text_level": -1, + "page_idx": 18, + "pdf_id": 293, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "found, this value MUST be ' -1 ' .", + "text_level": -1, + "page_idx": 18, + "pdf_id": 294, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "* ' explanation ' : A brief, one-sentence string explaining your reasoning. For a match, explain why they are the same entity. For no match, explain the key difference.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 295, + "middle_json": { + "docling_label": "list_item" + } + }, + { + "type": "text", + "text": "---", + "text_level": -1, + "page_idx": 18, + "pdf_id": 296, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "-Output Schema & Format-", + "text_level": 0, + "page_idx": 18, + "pdf_id": 297, + "middle_json": { + "docling_label": "section_header" + } + }, + { + "type": "text", + "text": "Your response MUST be a single, valid JSON object that adheres to the following schema. Do not include any other text, explanation, or markdown formatting like ''' json.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 298, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "''' json {{ \"select_id\": \"integer\", \"explanation\": \"string\" }} ''' ----Example-### Example 1: Match Found ### Example 2: No Match Found -----Task Execution-", + "text_level": -1, + "page_idx": 18, + "pdf_id": 299, + "middle_json": { + "docling_label": "code" + } + }, + { + "type": "text", + "text": "Now, perform the selection task based on the following data. Remember to output only a single integer.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 300, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "-Input Data -", + "text_level": -1, + "page_idx": 18, + "pdf_id": 301, + "middle_json": { + "docling_label": "text" + } + }, + { + "type": "text", + "text": "Figure 13: The prompt for entity resolution judgement, examples are omitted due to lack of space.", + "text_level": -1, + "page_idx": 18, + "pdf_id": 302, + "middle_json": { + "docling_label": "paragraph" + } + }, + { + "type": "text", + "text": "19", + "text_level": -1, + "page_idx": 18, + "pdf_id": 303, + "middle_json": { + "docling_label": "page_footer" + } + } +] \ No newline at end of file diff --git a/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-1.png b/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa629a4120db354ae88205008eed204b62357bf GIT binary patch literal 141141 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

0!dn$uS2q&1@AQ&74@$#PeRXqLQ>wp)opo$>~ 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 BCcFRu literal 0 HcmV?d00001 diff --git a/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-4.png b/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-4.png new file mode 100644 index 0000000000000000000000000000000000000000..d868fa20270a78e5db33370348b7813b7f1a449b GIT binary patch literal 244581 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≠>VtC)*4+SX+FU`%T8`%BBSslxy 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%0DdA9HqRVAvJHd2d(3B+zx{2z6kR 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 literal 0 HcmV?d00001 diff --git a/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-5.png b/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-5.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bfa76813dc8aa6cffffcb792f66de04cc0353f GIT binary patch literal 80113 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≧153^oeA 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%0APaZq}qVd@8LI0W6_#_HQnpJ7o$Q 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 u=lMc=jv^iPz7ct9r(bv^R*cLV7{-9e)s`&_k|Q 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 literal 0 HcmV?d00001 diff --git a/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-9.png b/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-9.png new file mode 100644 index 0000000000000000000000000000000000000000..59fb5d6e564e88ba17943a0b9808b8a065643873 GIT binary patch literal 37899 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 SpD2`=SePxCebIDP(EkA%=vyQJ literal 0 HcmV?d00001 diff --git a/e2e_test_output/graph_data_basic.json b/e2e_test_output/graph_data_basic.json new file mode 100644 index 0000000..3d28299 --- /dev/null +++ b/e2e_test_output/graph_data_basic.json @@ -0,0 +1,45216 @@ +{ + "graph": { + "directed": false, + "multigraph": false, + "graph": {}, + "nodes": [ + { + "entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "entity_type": "SECTION_TITLE", + "description": "As the primary title of the document, this section introduces BookRAG, a novel approach designed to handle complex documents by utilizing hierarchical structure awareness and index-based mechanisms within a Retrieval-Augmented Generation framework.", + "source_ids": [ + 1 + ], + "id": "Name: bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents\nType: SECTION_TITLE" + }, + { + "entity_name": "bookrag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The specific name of the proposed model or architecture introduced in the document.", + "source_ids": [ + 1 + ], + "id": "Name: bookrag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "hierarchical structure-aware index-based approach", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The core methodology employed by BookRAG, focusing on leveraging document hierarchy and indexing strategies.", + "source_ids": [ + 1 + ], + "id": "Name: hierarchical structure-aware index-based approach\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "retrieval-augmented generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "The broader AI task domain addressed by the proposed approach, involving combining retrieval systems with generative models.", + "source_ids": [ + 1 + ], + "id": "Name: retrieval-augmented generation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "complex documents", + "entity_type": "DATASET_OR_CORPUS", + "description": "The target data type or corpus category that the system is specifically designed to process.", + "source_ids": [ + 1 + ], + "id": "Name: complex documents\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "shu wang", + "entity_type": "PERSON", + "description": "Shu Wang is an author affiliated with the Chinese University of Hong Kong Shenzhen and is one of the authors of the paper titled \"Bookrag\".", + "source_ids": [ + 2, + 5 + ], + "id": "Name: shu wang\nType: PERSON" + }, + { + "entity_name": "yingli zhou", + "entity_type": "PERSON", + "description": "Yingli Zhou is an author affiliated with the Chinese University of Hong Kong Shenzhen and is one of the authors of the paper titled \"Bookrag\".", + "source_ids": [ + 2, + 5 + ], + "id": "Name: yingli zhou\nType: PERSON" + }, + { + "entity_name": "yixiang fang", + "entity_type": "PERSON", + "description": "Yixiang Fang is an author affiliated with the Chinese University of Hong Kong Shenzhen and is one of the authors of the paper titled \"Bookrag\".", + "source_ids": [ + 2, + 5 + ], + "id": "Name: yixiang fang\nType: PERSON" + }, + { + "entity_name": "the chinese university of hong kong shenzhen", + "entity_type": "ORGANIZATION", + "description": "the chinese university of hong kong shenzhen is the institution where the authors are affiliated", + "source_ids": [ + 2 + ], + "id": "Name: the chinese university of hong kong shenzhen\nType: ORGANIZATION" + }, + { + "entity_name": "large language models", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "large language models are the models whose performance is being boosted by the proposed method", + "source_ids": [ + 2 + ], + "id": "Name: large language models\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "retrievalaugmented generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "retrievalaugmented generation is a method that queries external documents to boost llm performance", + "source_ids": [ + 2 + ], + "id": "Name: retrievalaugmented generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "bookrag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Bookrag is a novel method and rag approach specifically designed for documents with hierarchical structures, such as books. It constructs a document-native bookindex to optimize retrieval for book content, distinguishing it as a specialized RAG system tailored for this type of material.", + "source_ids": [ + 25, + 2, + 159 + ], + "id": "Name: bookrag\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "bookindex", + "entity_type": "SOFTWARE", + "description": "bookindex is a novel index structure built by extracting a hierarchical tree from documents", + "source_ids": [ + 2 + ], + "id": "Name: bookindex\nType: SOFTWARE" + }, + { + "entity_name": "information foraging theory", + "entity_type": "SCIENTIFIC_THEORY", + "description": "Information foraging theory (IFT) is a foundational theoretical framework that explains how individuals seek information efficiently by treating information access as a process analogous to animal foraging. Serving as the conceptual basis for the system's design discussed in section 3.2, it provides the theoretical inspiration behind the proposed agent-based retrieval approach and the agent-based query method described in section 5. Furthermore, IFT is the cognitive principle embodied by BookRag's execution phase and grounds the retrieval process detailed in the text.", + "source_ids": [ + 2, + 35, + 41, + 42, + 78, + 22, + 26, + 124 + ], + "id": "Name: information foraging theory\nType: SCIENTIFIC_THEORY" + }, + { + "entity_name": "question answering", + "entity_type": "TASK_OR_PROBLEM", + "description": "Question answering is a task aimed at answering user queries based on long form documents, which has been revolutionized by large language models. It is the specific task addressed by the G Retriever model and the survey over visually rich documents, where proposed methods aim to improve performance.", + "source_ids": [ + 2, + 195, + 37, + 9, + 211 + ], + "id": "Name: question answering\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "books", + "entity_type": "BOOK", + "description": "books are examples of real world documents with hierarchical structures", + "source_ids": [ + 2 + ], + "id": "Name: books\nType: BOOK" + }, + { + "entity_name": "booklets", + "entity_type": "BOOK", + "description": "booklets are examples of real world documents with hierarchical structures", + "source_ids": [ + 2 + ], + "id": "Name: booklets\nType: BOOK" + }, + { + "entity_name": "handbooks", + "entity_type": "BOOK", + "description": "handbooks are examples of real world documents with hierarchical structures", + "source_ids": [ + 2 + ], + "id": "Name: handbooks\nType: BOOK" + }, + { + "entity_name": "three widely adopted benchmarks", + "entity_type": "BENCHMARK", + "description": "three widely adopted benchmarks were used to demonstrate the performance of bookrag", + "source_ids": [ + 2 + ], + "id": "Name: three widely adopted benchmarks\nType: BENCHMARK" + }, + { + "entity_name": "industry", + "entity_type": "ORGANIZATION", + "description": "The industry is a sector that has attracted attention to retrieval-augmented generation, referring to the collective group of organizations increasingly adopting large language models for question-answering systems.", + "source_ids": [ + 9, + 2 + ], + "id": "Name: industry\nType: ORGANIZATION" + }, + { + "entity_name": "academia", + "entity_type": "ORGANIZATION", + "description": "academia is a sector that has attracted attention to retrievalaugmented generation", + "source_ids": [ + 2 + ], + "id": "Name: academia\nType: ORGANIZATION" + }, + { + "entity_name": "graph", + "entity_type": "SOFTWARE", + "description": "a graph is used to capture intricate relationships between entities in the bookindex", + "source_ids": [ + 2 + ], + "id": "Name: graph\nType: SOFTWARE" + }, + { + "entity_name": "tree", + "entity_type": "SOFTWARE", + "description": "a hierarchical tree is extracted from documents to serve as the role of a table of contents", + "source_ids": [ + 2 + ], + "id": "Name: tree\nType: SOFTWARE" + }, + { + "entity_name": "table of contents", + "entity_type": "SOFTWARE", + "description": "the table of contents is the role served by the hierarchical tree in the bookindex", + "source_ids": [ + 2 + ], + "id": "Name: table of contents\nType: SOFTWARE" + }, + { + "entity_name": "retrieval recall", + "entity_type": "EVALUATION_METRIC", + "description": "Retrieval recall is an evaluation metric used to measure the performance of systems, particularly for evaluating methods such as PDF parsing and comparing layout-based approaches. It serves as the specific performance metric employed to compare BookRag against other baselines, where BookRag has been shown to significantly outperform these alternatives.", + "source_ids": [ + 2, + 144, + 23, + 155, + 157 + ], + "id": "Name: retrieval recall\nType: EVALUATION_METRIC" + }, + { + "entity_name": "qa accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "QA accuracy is a metric used to measure the performance of a system, where BookRAG has been shown to significantly outperform baselines.", + "source_ids": [ + 2, + 23 + ], + "id": "Name: qa accuracy\nType: EVALUATION_METRIC" + }, + { + "entity_name": "efficiency", + "entity_type": "EVALUATION_METRIC", + "description": "Efficiency is a metric used to evaluate the performance of BookRag and baseline methods, where BookRag maintains competitive performance.", + "source_ids": [ + 137, + 2 + ], + "id": "Name: efficiency\nType: EVALUATION_METRIC" + }, + { + "entity_name": "baselines", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "baselines are existing methods that bookrag outperforms in retrieval recall and qa accuracy", + "source_ids": [ + 2 + ], + "id": "Name: baselines\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "abstract", + "entity_type": "SECTION_TITLE", + "description": "As the opening section of the paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section provides a concise summary of the research problem, the proposed BookRAG solution involving hierarchical indexing and agent-based querying, and the reported state-of-the-art experimental results.", + "source_ids": [ + 3 + ], + "id": "Name: abstract\nType: SECTION_TITLE" + }, + { + "entity_name": "pvldb", + "entity_type": "PUBLICATION_VENUE", + "description": "PVldb is a publication venue referenced for its reference format, where a paper was published in 2025, and it is also mentioned in the context of artifact availability.", + "source_ids": [ + 4, + 5, + 6 + ], + "id": "Name: pvldb\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "reference format", + "entity_type": "SECTION_TITLE", + "description": "reference format is a section or concept mentioned in the context of pvldb", + "source_ids": [ + 4 + ], + "id": "Name: reference format\nType: SECTION_TITLE" + }, + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "BookRag is a novel, hierarchical structure-aware retrieval system designed for retrieval-augmented generation on complex documents. Implemented in Python for robust document layout parsing, it intelligently navigates a book index to adapt to query requirements and addresses three common query categories. The system utilizes various operators categorized by function to answer queries and prune search spaces, involving a structured execution process that includes query classification. BookRag has been extensively evaluated through experiments, ablation studies, and error analysis to assess its effectiveness, efficiency, and performance bottlenecks across different query types. It significantly outperforms existing baselines, achieving state-of-the-art performance in complex document question answering while demonstrating efficiency in terms of query time and token consumption.", + "source_ids": [ + 131, + 5, + 137, + 12, + 16, + 149, + 23, + 152, + 151, + 27, + 29, + 157, + 160, + 163, + 164, + 170, + 172, + 179, + 180, + 186, + 188, + 88, + 89, + 238 + ], + "id": "Name: bookrag\nType: PRODUCT" + }, + { + "entity_name": "2025", + "entity_type": "DATE", + "description": "2025 is the year associated with the publication of several works, including a paper in PVLDB, the Qwen2.5 VL technical report, and a survey paper. It marks the year these publications were released, as well as the year linked to the authors' work and the volume and issue numbers of the respective journals.", + "source_ids": [ + 194, + 195, + 196, + 197, + 5, + 203 + ], + "id": "Name: 2025\nType: DATE" + }, + { + "entity_name": "19", + "entity_type": "MEASUREMENT", + "description": "19 is the volume number of the pvldb publication where the paper appeared", + "source_ids": [ + 5 + ], + "id": "Name: 19\nType: MEASUREMENT" + }, + { + "entity_name": "1", + "entity_type": "MEASUREMENT", + "description": "1 is the issue number of the pvldb publication where the paper appeared, the value assigned to the root level in the hierarchical structure, and refers to the page count or a specific metric mentioned in the context of the publication details.", + "source_ids": [ + 200, + 57, + 5 + ], + "id": "Name: 1\nType: MEASUREMENT" + }, + { + "entity_name": "xxx xxx", + "entity_type": "MEASUREMENT", + "description": "xxx xxx represents the page range of the paper in the publication", + "source_ids": [ + 5 + ], + "id": "Name: xxx xxx\nType: MEASUREMENT" + }, + { + "entity_name": "xx xx xxx xx", + "entity_type": "MEASUREMENT", + "description": "xx xx xxx xx is the doi identifier for the paper", + "source_ids": [ + 5 + ], + "id": "Name: xx xx xxx xx\nType: MEASUREMENT" + }, + { + "entity_name": "retrieval augmented generation", + "entity_type": "TECHNOLOGY", + "description": "Retrieval augmented generation is a technology domain addressed by the BookRAG approach, the specific technology discussed in the survey, and the technology category that LightRAG belongs to as described in the text.", + "source_ids": [ + 208, + 5, + 207 + ], + "id": "Name: retrieval augmented generation\nType: TECHNOLOGY" + }, + { + "entity_name": "hierarchical structure aware index based approach", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "hierarchical structure aware index based approach is the specific method used by bookrag", + "source_ids": [ + 5 + ], + "id": "Name: hierarchical structure aware index based approach\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "complex documents", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex documents are the type of documents that the bookrag approach is designed to handle", + "source_ids": [ + 5 + ], + "id": "Name: complex documents\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "artifact availability", + "entity_type": "TASK_OR_PROBLEM", + "description": "artifact availability refers to the status or process of making artifacts available as discussed in the text", + "source_ids": [ + 6 + ], + "id": "Name: artifact availability\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "bookrag", + "entity_type": "SOFTWARE", + "description": "Bookrag is a software project hosted on GitHub that employs an agent-based approach to address complex document queries through planning and execution on a book index. This extensible system performs classification and planning stages to handle queries, utilizing agent-based planning, retrieval, and generation processes. After reasoning, Bookrag obtains a retrieval set of highly relevant information blocks and executes a generated workflow that embodies cognitive principles of information foraging theory. The system is designed to resolve a broader range of query types and can generate correct content, which is highlighted in cyan text.", + "source_ids": [ + 96, + 7, + 79, + 82, + 83, + 85, + 181, + 124 + ], + "id": "Name: bookrag\nType: SOFTWARE" + }, + { + "entity_name": "github", + "entity_type": "ORGANIZATION", + "description": "github is the platform where the source code and data for bookrag are made available", + "source_ids": [ + 7 + ], + "id": "Name: github\nType: ORGANIZATION" + }, + { + "entity_name": "sam234990", + "entity_type": "PERSON", + "description": "sam234990 is the username associated with the BookRAG repository on GitHub, where the source code is hosted.", + "source_ids": [ + 238, + 7 + ], + "id": "Name: sam234990\nType: PERSON" + }, + { + "entity_name": "source code", + "entity_type": "PRODUCT", + "description": "Source code is a digital artifact made available as part of the BookRag project, referring specifically to the implementation files of BookRag that are provided for download.", + "source_ids": [ + 238, + 7 + ], + "id": "Name: source code\nType: PRODUCT" + }, + { + "entity_name": "data", + "entity_type": "PRODUCT", + "description": "data is a digital artifact made available as part of the bookrag project", + "source_ids": [ + 7 + ], + "id": "Name: data\nType: PRODUCT" + }, + { + "entity_name": "artifacts", + "entity_type": "PRODUCT", + "description": "artifacts are items made available alongside the source code and data for the bookrag project", + "source_ids": [ + 7 + ], + "id": "Name: artifacts\nType: PRODUCT" + }, + { + "entity_name": "1 introduction", + "entity_type": "SECTION_TITLE", + "description": "As the opening section of the paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section introduces the motivation behind Retrieval-Augmented Generation (RAG), highlights limitations in existing approaches regarding hierarchical documents, and presents the proposed BookRAG framework and its key components like BookIndex.", + "source_ids": [ + 8 + ], + "id": "Name: 1 introduction\nType: SECTION_TITLE" + }, + { + "entity_name": "large language models", + "entity_type": "TECHNOLOGY", + "description": "Large language models are a type of technology that has revolutionized question answering systems and serve as the subject of surveys and the technology being augmented.", + "source_ids": [ + 9, + 207 + ], + "id": "Name: large language models\nType: TECHNOLOGY" + }, + { + "entity_name": "qwen 3", + "entity_type": "PRODUCT", + "description": "qwen 3 is a specific large language model mentioned as an example", + "source_ids": [ + 9 + ], + "id": "Name: qwen 3\nType: PRODUCT" + }, + { + "entity_name": "gemini 2 5", + "entity_type": "PRODUCT", + "description": "Gemini 2.5 is a specific large language model product that pushes the frontier with advanced reasoning, multimodality, long context, and next-generation agentic capabilities.", + "source_ids": [ + 9, + 203 + ], + "id": "Name: gemini 2 5\nType: PRODUCT" + }, + { + "entity_name": "qa system", + "entity_type": "PRODUCT", + "description": "qa system is a product built using llms to assist users and reduce manual effort", + "source_ids": [ + 9 + ], + "id": "Name: qa system\nType: PRODUCT" + }, + { + "entity_name": "users", + "entity_type": "PERSON", + "description": "users are the individuals who are assisted by the qa systems built by the industry", + "source_ids": [ + 9 + ], + "id": "Name: users\nType: PERSON" + }, + { + "entity_name": "creative commons by nc nd 4 0 international license", + "entity_type": "LAW", + "description": "creative commons by nc nd 4 0 international license is the specific license under which this work is distributed", + "source_ids": [ + 10 + ], + "id": "Name: creative commons by nc nd 4 0 international license\nType: LAW" + }, + { + "entity_name": "vldb endowment", + "entity_type": "ORGANIZATION", + "description": "The VLDB Endowment is the organization that holds the publication rights for this work and is associated with the publication venue.", + "source_ids": [ + 10, + 191 + ], + "id": "Name: vldb endowment\nType: ORGANIZATION" + }, + { + "entity_name": "info vldb org", + "entity_type": "EMAIL", + "description": "info vldb org is the email address provided for obtaining permission for uses beyond the license", + "source_ids": [ + 10 + ], + "id": "Name: info vldb org\nType: EMAIL" + }, + { + "entity_name": "creative commons", + "entity_type": "ORGANIZATION", + "description": "creative commons is the organization that created the by nc nd 4 0 international license", + "source_ids": [ + 10 + ], + "id": "Name: creative commons\nType: ORGANIZATION" + }, + { + "entity_name": "owner author s", + "entity_type": "PERSON", + "description": "owner author s refers to the individuals or entities holding the copyright for the work", + "source_ids": [ + 10 + ], + "id": "Name: owner author s\nType: PERSON" + }, + { + "entity_name": "proceedings of the vldb endowment", + "entity_type": "PUBLICATION_VENUE", + "description": "Proceedings of the VLDB Endowment is the publication venue where the paper appeared and was published in 2025.", + "source_ids": [ + 11, + 197, + 191 + ], + "id": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "vol 19", + "entity_type": "MEASUREMENT", + "description": "vol 19 refers to the volume number of the publication", + "source_ids": [ + 11 + ], + "id": "Name: vol 19\nType: MEASUREMENT" + }, + { + "entity_name": "no 1", + "entity_type": "MEASUREMENT", + "description": "no 1 refers to the issue number of the publication", + "source_ids": [ + 11 + ], + "id": "Name: no 1\nType: MEASUREMENT" + }, + { + "entity_name": "issn 2150 8097", + "entity_type": "MEASUREMENT", + "description": "issn 2150 8097 is the international standard serial number assigned to the publication", + "source_ids": [ + 11 + ], + "id": "Name: issn 2150 8097\nType: MEASUREMENT" + }, + { + "entity_name": "doi xx xx xxx xx", + "entity_type": "MEASUREMENT", + "description": "doi xx xx xxx xx is the digital object identifier assigned to the document", + "source_ids": [ + 11 + ], + "id": "Name: doi xx xx xxx xx\nType: MEASUREMENT" + }, + { + "entity_name": "figure 1", + "entity_type": "IMAGE", + "description": "Figure 1 is an image that presents a comparison of existing methods and BookRAG for complex document QA, while also illustrating the two paradigms of existing RAG approaches for document-level QA.", + "source_ids": [ + 12, + 15 + ], + "id": "Name: figure 1\nType: IMAGE" + }, + { + "entity_name": "existing methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "existing methods refers to current techniques used for complex document qa which are being compared to bookrag", + "source_ids": [ + 12 + ], + "id": "Name: existing methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "complex document qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "Complex document QA is a specific task and research problem domain that involves the challenge of answering questions based on complex documents. It serves as the core research problem formalized in section 3.1 and is the context in which comparisons between methods and BookRags are conducted.", + "source_ids": [ + 35, + 12, + 36 + ], + "id": "Name: complex document qa\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "cref='#/texts/14'", + "entity_type": "IMAGE", + "description": "A diagram comparing three RAG (Retrieval-Augmented Generation) architectures: Text-Only RAG, Layout Segmented RAG, and BookRAG.", + "source_ids": [ + 13 + ], + "id": "Name: cref='#/texts/14'\nType: IMAGE" + }, + { + "entity_name": "complex query", + "entity_type": "TASK_OR_PROBLEM", + "description": "A complex query is a type of query that the decompose method breaks down into simpler sub queries, often represented by a user icon with a question mark to signify the initiation of the process.", + "source_ids": [ + 98, + 13 + ], + "id": "Name: complex query\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "complex multi-page document", + "entity_type": "PRODUCT", + "description": "The source document containing multiple pages that serves as the input data.", + "source_ids": [ + 13 + ], + "id": "Name: complex multi-page document\nType: PRODUCT" + }, + { + "entity_name": "text-only rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Section (a) of the diagram illustrating a Retrieval-Augmented Generation approach using plain text extraction.", + "source_ids": [ + 13 + ], + "id": "Name: text-only rag\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "plain text extraction (ocr)", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The first step in Text-Only RAG where text is extracted from the document images.", + "source_ids": [ + 13 + ], + "id": "Name: plain text extraction (ocr)\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "unstructured chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "The output of OCR processing, representing fragmented text segments without structural context.", + "source_ids": [ + 13 + ], + "id": "Name: unstructured chunks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "text index (vector/graph/tree)", + "entity_type": "SYSTEM_COMPONENT", + "description": "The indexing structure created to store and organize the unstructured chunks for retrieval.", + "source_ids": [ + 13 + ], + "id": "Name: text index (vector/graph/tree)\nType: SYSTEM_COMPONENT" + }, + { + "entity_name": "fixed/ graph retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The retrieval mechanism used to find relevant information from the index.", + "source_ids": [ + 13 + ], + "id": "Name: fixed/ graph retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "llm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The Large Language Model (LLM), depicted as a robot head, is a type of model within the Qwen family used in various experiments and processing pipelines. It generates final answers based on retrieved information and is guided by prompts for decomposition and extraction tasks. The LLM analyzes retrieved blocks to determine hierarchical levels and node types of document candidates, reclassifies blocks by analyzing title candidates, and generates global questions from selected document elements.", + "source_ids": [ + 101, + 13, + 141, + 238, + 18, + 57, + 59 + ], + "id": "Name: llm\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "fails on structural dependencies", + "entity_type": "TASK_OR_PROBLEM", + "description": "A limitation identified in the Text-Only RAG approach regarding its inability to handle complex structures.", + "source_ids": [ + 13 + ], + "id": "Name: fails on structural dependencies\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "layout segmented rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Section (b) of the diagram illustrating a RAG approach that segments content based on layout analysis.", + "source_ids": [ + 13 + ], + "id": "Name: layout segmented rag\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "layout analysis & parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The initial step in this section where the document's visual layout is analyzed and parsed.", + "source_ids": [ + 13 + ], + "id": "Name: layout analysis & parsing\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "flattened chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "Chunks derived from layout analysis but flattened, losing some hierarchical relationships.", + "source_ids": [ + 13 + ], + "id": "Name: flattened chunks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "flattened vector index", + "entity_type": "SYSTEM_COMPONENT", + "description": "An index built upon the flattened chunks.", + "source_ids": [ + 13 + ], + "id": "Name: flattened vector index\nType: SYSTEM_COMPONENT" + }, + { + "entity_name": "fixed retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The retrieval method used in the Layout Segmented RAG pipeline.", + "source_ids": [ + 13 + ], + "id": "Name: fixed retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "loses complex relationships", + "entity_type": "TASK_OR_PROBLEM", + "description": "A drawback noted for the Layout Segmented RAG approach due to flattening the data.", + "source_ids": [ + 13 + ], + "id": "Name: loses complex relationships\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "bookrag (natively structure-aware)", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Section (c) of the diagram presenting the proposed solution, a structure-aware RAG architecture.", + "source_ids": [ + 13 + ], + "id": "Name: bookrag (natively structure-aware)\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "hierarchical chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "Chunks that preserve the hierarchical structure of the document.", + "source_ids": [ + 13 + ], + "id": "Name: hierarchical chunks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "bookindex", + "entity_type": "SYSTEM_COMPONENT", + "description": "A graph-based index representing the hierarchical relationships between chunks.", + "source_ids": [ + 13 + ], + "id": "Name: bookindex\nType: SYSTEM_COMPONENT" + }, + { + "entity_name": "agent-based retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A retrieval strategy utilizing an agent to navigate the BookIndex graph effectively.", + "source_ids": [ + 13 + ], + "id": "Name: agent-based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "accurate, structured-grounded", + "entity_type": "EVALUATION_METRIC", + "description": "The positive outcome achieved by the BookRAG system, indicating high accuracy and structural awareness.", + "source_ids": [ + 13 + ], + "id": "Name: accurate, structured-grounded\nType: EVALUATION_METRIC" + }, + { + "entity_name": "financial auditing", + "entity_type": "TASK_OR_PROBLEM", + "description": "financial auditing is a task where llms are applied but may face challenges with domain knowledge", + "source_ids": [ + 14 + ], + "id": "Name: financial auditing\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "legal compliance", + "entity_type": "TASK_OR_PROBLEM", + "description": "legal compliance is a task where llms are applied but may face challenges with domain knowledge", + "source_ids": [ + 14 + ], + "id": "Name: legal compliance\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "scientific discovery", + "entity_type": "TASK_OR_PROBLEM", + "description": "scientific discovery is a task where llms are applied but may face challenges with domain knowledge", + "source_ids": [ + 14 + ], + "id": "Name: scientific discovery\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "llms", + "entity_type": "TECHNOLOGY", + "description": "LLMs are large language models used for high accuracy judgments in entity resolution, though they may lead to missing domain knowledge and generating outdated information; however, their hallucination can be mitigated by the naive RAG technique.", + "source_ids": [ + 33, + 66, + 14 + ], + "id": "Name: llms\nType: TECHNOLOGY" + }, + { + "entity_name": "retrieval augmented generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Retrieval augmented generation, often abbreviated as RAG, is a method adopted to address the limitations of large language models by retrieving relevant domain knowledge. Additionally, it is the technique used by G Retriever for textual graph understanding.", + "source_ids": [ + 211, + 14 + ], + "id": "Name: retrieval augmented generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "RAG, an abbreviation for retrieval augmented generation, is a method or technique introduced in section 3 alongside problem formulation and IFT. It is designed to guide large language models (LLMs) during response generation and has been proven to excel in various tasks, including question answering and data cleaning.", + "source_ids": [ + 33, + 29, + 14 + ], + "id": "Name: rag\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "enterprise scenarios", + "entity_type": "LOCATION", + "description": "enterprise scenarios are real world contexts where domain knowledge is stored in long form documents", + "source_ids": [ + 14 + ], + "id": "Name: enterprise scenarios\nType: LOCATION" + }, + { + "entity_name": "technical handbooks", + "entity_type": "PRODUCT", + "description": "technical handbooks are long form documents where domain knowledge is often stored", + "source_ids": [ + 14 + ], + "id": "Name: technical handbooks\nType: PRODUCT" + }, + { + "entity_name": "api reference manuals", + "entity_type": "PRODUCT", + "description": "api reference manuals are long form documents where domain knowledge is often stored", + "source_ids": [ + 14 + ], + "id": "Name: api reference manuals\nType: PRODUCT" + }, + { + "entity_name": "operational guidebooks", + "entity_type": "PRODUCT", + "description": "operational guidebooks are long form documents where domain knowledge is often stored", + "source_ids": [ + 14 + ], + "id": "Name: operational guidebooks\nType: PRODUCT" + }, + { + "entity_name": "books", + "entity_type": "PRODUCT", + "description": "books are a structure followed by long form documents characterized by intricate layouts and logical hierarchies", + "source_ids": [ + 14 + ], + "id": "Name: books\nType: PRODUCT" + }, + { + "entity_name": "tables of contents", + "entity_type": "PRODUCT", + "description": "tables of contents are explicit structural elements found in long form documents", + "source_ids": [ + 14 + ], + "id": "Name: tables of contents\nType: PRODUCT" + }, + { + "entity_name": "nested chapters", + "entity_type": "PRODUCT", + "description": "nested chapters are structural elements found in long form documents", + "source_ids": [ + 14 + ], + "id": "Name: nested chapters\nType: PRODUCT" + }, + { + "entity_name": "multi level sections", + "entity_type": "PRODUCT", + "description": "multi level sections are structural elements found in long form documents", + "source_ids": [ + 14 + ], + "id": "Name: multi level sections\nType: PRODUCT" + }, + { + "entity_name": "rag system", + "entity_type": "SOFTWARE", + "description": "a rag system is designed in this paper for qa over long and highly structured documents", + "source_ids": [ + 14 + ], + "id": "Name: rag system\nType: SOFTWARE" + }, + { + "entity_name": "qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "QA refers to the question answering task, which is the specific problem the RAG system is designed for, the task for which official metrics are specified by each dataset, and the task being evaluated for performance in both the text and the figure.", + "source_ids": [ + 170, + 14, + 144, + 177, + 151 + ], + "id": "Name: qa\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "external sources", + "entity_type": "LOCATION", + "description": "external sources are referenced as the origin of relevant domain knowledge retrieved by rag", + "source_ids": [ + 14 + ], + "id": "Name: external sources\nType: LOCATION" + }, + { + "entity_name": "response generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "response generation is the process guided by rag to produce answers", + "source_ids": [ + 14 + ], + "id": "Name: response generation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "domain knowledge", + "entity_type": "CONCEPT", + "description": "domain knowledge is the specific information retrieved from external sources to guide llms", + "source_ids": [ + 14 + ], + "id": "Name: domain knowledge\nType: CONCEPT" + }, + { + "entity_name": "long form documents", + "entity_type": "PRODUCT", + "description": "long form documents are the type of storage for domain knowledge in enterprise scenarios", + "source_ids": [ + 14 + ], + "id": "Name: long form documents\nType: PRODUCT" + }, + { + "entity_name": "intricate layouts", + "entity_type": "SHAPE", + "description": "intricate layouts are a feature of the structure of long form documents", + "source_ids": [ + 14 + ], + "id": "Name: intricate layouts\nType: SHAPE" + }, + { + "entity_name": "logical hierarchies", + "entity_type": "CONCEPT", + "description": "logical hierarchies are a feature of the structure of long form documents", + "source_ids": [ + 14 + ], + "id": "Name: logical hierarchies\nType: CONCEPT" + }, + { + "entity_name": "this paper", + "entity_type": "BOOK", + "description": "this paper is the document where the authors aim to design an effective rag system", + "source_ids": [ + 14 + ], + "id": "Name: this paper\nType: BOOK" + }, + { + "entity_name": "rag", + "entity_type": "TECHNOLOGY", + "description": "rag refers to retrieval augmented generation approaches for document level qa mentioned in the text", + "source_ids": [ + 15 + ], + "id": "Name: rag\nType: TECHNOLOGY" + }, + { + "entity_name": "ocr", + "entity_type": "TECHNOLOGY", + "description": "ocr stands for optical character recognition a technology used to convert documents into plain text", + "source_ids": [ + 15 + ], + "id": "Name: ocr\nType: TECHNOLOGY" + }, + { + "entity_name": "graph based rag", + "entity_type": "TECHNOLOGY", + "description": "Graph based rag is a text-based retrieval-augmented generation method that extracts textual content from documents and leverages graph data as an external knowledge source during the retrieval process.", + "source_ids": [ + 147, + 15 + ], + "id": "Name: graph based rag\nType: TECHNOLOGY" + }, + { + "entity_name": "graphrag", + "entity_type": "PRODUCT", + "description": "graphrag is a representative method that constructs a knowledge graph from a textual corpus", + "source_ids": [ + 15 + ], + "id": "Name: graphrag\nType: PRODUCT" + }, + { + "entity_name": "raptor", + "entity_type": "PRODUCT", + "description": "raptor is a representative method that builds a recursive tree structure by clustering document chunks", + "source_ids": [ + 15 + ], + "id": "Name: raptor\nType: PRODUCT" + }, + { + "entity_name": "leiden community detection algorithm", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the leiden community detection algorithm is used by graphrag to obtain hierarchical clusters", + "source_ids": [ + 15 + ], + "id": "Name: leiden community detection algorithm\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "table 1", + "entity_type": "TABLE", + "description": "Table 1 is a section containing experimental results that compares representative methods, specifically GraphRAG and Raptor, alongside BookRAG.", + "source_ids": [ + 16, + 182, + 15 + ], + "id": "Name: table 1\nType: TABLE" + }, + { + "entity_name": "document level qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "document level qa is the specific task for which existing rag approaches are designed", + "source_ids": [ + 15 + ], + "id": "Name: document level qa\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "plain text", + "entity_type": "MATERIAL", + "description": "plain text is the output format produced by ocr when converting documents", + "source_ids": [ + 15 + ], + "id": "Name: plain text\nType: MATERIAL" + }, + { + "entity_name": "text based rag method", + "entity_type": "TECHNOLOGY", + "description": "text based rag methods are a category of approaches applied after ocr conversion", + "source_ids": [ + 15 + ], + "id": "Name: text based rag method\nType: TECHNOLOGY" + }, + { + "entity_name": "graph data", + "entity_type": "DATASET_OR_CORPUS", + "description": "graph data serves as an external knowledge source capturing semantic information and relational structures", + "source_ids": [ + 15 + ], + "id": "Name: graph data\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "knowledge graph", + "entity_type": "DATASET_OR_CORPUS", + "description": "A knowledge graph is a structured data repository constructed from a textual corpus by extracting entities and relations from document tree nodes.", + "source_ids": [ + 63, + 15 + ], + "id": "Name: knowledge graph\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "textual corpus", + "entity_type": "DATASET_OR_CORPUS", + "description": "a textual corpus is the source material from which graphrag constructs a knowledge graph", + "source_ids": [ + 15 + ], + "id": "Name: textual corpus\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "hierarchical clusters", + "entity_type": "TASK_OR_PROBLEM", + "description": "hierarchical clusters are the result of applying the leiden community detection algorithm", + "source_ids": [ + 15 + ], + "id": "Name: hierarchical clusters\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "summaries", + "entity_type": "PRODUCT", + "description": "summaries are generated for each community to provide a global overview of the corpus", + "source_ids": [ + 15 + ], + "id": "Name: summaries\nType: PRODUCT" + }, + { + "entity_name": "recursive tree structure", + "entity_type": "TASK_OR_PROBLEM", + "description": "a recursive tree structure is built by raptor through iterative clustering and summarization", + "source_ids": [ + 15 + ], + "id": "Name: recursive tree structure\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "document chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "document chunks are the units iteratively clustered by raptor", + "source_ids": [ + 15 + ], + "id": "Name: document chunks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "fine grained semantic information", + "entity_type": "CONCEPT", + "description": "fine grained semantic information is a type of data captured by raptor across the corpus", + "source_ids": [ + 15 + ], + "id": "Name: fine grained semantic information\nType: CONCEPT" + }, + { + "entity_name": "high level semantic information", + "entity_type": "CONCEPT", + "description": "high level semantic information is a type of data captured by raptor across the corpus", + "source_ids": [ + 15 + ], + "id": "Name: high level semantic information\nType: CONCEPT" + }, + { + "entity_name": "representative methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "representative methods are the existing techniques being compared against bookrag in the text", + "source_ids": [ + 16 + ], + "id": "Name: representative methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "table: cref='#/texts/17'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/17'", + "source_ids": [ + 17 + ], + "id": "Name: table: cref='#/texts/17'...\nType: TABLE" + }, + { + "entity_name": "texts reference", + "entity_type": "SECTION_TITLE", + "description": "A reference identifier pointing to a specific text location within a document structure, indicated by the cref attribute '#/texts/17'.", + "source_ids": [ + 17 + ], + "id": "Name: texts reference\nType: SECTION_TITLE" + }, + { + "entity_name": "layout aware segmentation", + "entity_type": "TASK_OR_PROBLEM", + "description": "layout aware segmentation is a paradigm that parses documents into structured blocks to preserve original layout and information", + "source_ids": [ + 18 + ], + "id": "Name: layout aware segmentation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "docetl", + "entity_type": "SOFTWARE", + "description": "Docetl is a state-of-the-art, declarative system designed for complex document processing and information extraction tasks. It provides a user-friendly interface for defining LLM-based processing pipelines and introduces an agentic framework to optimize these workflows, serving as a comprehensive Document Extraction, Transformation, and Loading tool.", + "source_ids": [ + 32, + 18, + 148, + 159 + ], + "id": "Name: docetl\nType: SOFTWARE" + }, + { + "entity_name": "multimodal retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "multimodal retrieval is a technique applied to obtain relevant content from blocks with multimodal characteristics", + "source_ids": [ + 18 + ], + "id": "Name: multimodal retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "paragraphs", + "entity_type": "TASK_OR_PROBLEM", + "description": "paragraphs are structural blocks within a document preserved by layout aware segmentation", + "source_ids": [ + 18 + ], + "id": "Name: paragraphs\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "tables", + "entity_type": "TASK_OR_PROBLEM", + "description": "tables are structural blocks within a document preserved by layout aware segmentation", + "source_ids": [ + 18 + ], + "id": "Name: tables\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "figures", + "entity_type": "TASK_OR_PROBLEM", + "description": "figures are structural blocks within a document preserved by layout aware segmentation", + "source_ids": [ + 18 + ], + "id": "Name: figures\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "equations", + "entity_type": "TASK_OR_PROBLEM", + "description": "equations are structural blocks within a document preserved by layout aware segmentation", + "source_ids": [ + 18 + ], + "id": "Name: equations\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "first paradigm", + "entity_type": "TASK_OR_PROBLEM", + "description": "the first paradigm is a method that uses fixed chunk sizes often leading to fragmented information", + "source_ids": [ + 18 + ], + "id": "Name: first paradigm\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "second paradigm", + "entity_type": "TASK_OR_PROBLEM", + "description": "the second paradigm refers to layout aware segmentation which preserves document structure", + "source_ids": [ + 18 + ], + "id": "Name: second paradigm\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "declarative interface", + "entity_type": "SOFTWARE", + "description": "the declarative interface is a feature provided by docetl that allows users to define processing pipelines", + "source_ids": [ + 18 + ], + "id": "Name: declarative interface\nType: SOFTWARE" + }, + { + "entity_name": "processing pipelines", + "entity_type": "TASK_OR_PROBLEM", + "description": "processing pipelines are sequences of operations defined by users to analyze retrieved blocks", + "source_ids": [ + 18 + ], + "id": "Name: processing pipelines\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "llm based processing pipelines", + "entity_type": "TASK_OR_PROBLEM", + "description": "llm based processing pipelines are pipelines that utilize large language models for analysis", + "source_ids": [ + 18 + ], + "id": "Name: llm based processing pipelines\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "llm powered operations", + "entity_type": "TASK_OR_PROBLEM", + "description": "llm powered operations are the specific tasks combined within the processing pipelines", + "source_ids": [ + 18 + ], + "id": "Name: llm powered operations\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "task specific optimizations", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "task specific optimizations are enhancements applied to the pipelines for specific tasks", + "source_ids": [ + 18 + ], + "id": "Name: task specific optimizations\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "fixed chunk size", + "entity_type": "MEASUREMENT", + "description": "fixed chunk size is a parameter used in the first paradigm that can cause information fragmentation", + "source_ids": [ + 18 + ], + "id": "Name: fixed chunk size\nType: MEASUREMENT" + }, + { + "entity_name": "document native structural information", + "entity_type": "CONCEPT", + "description": "document native structural information is the data retained by layout aware segmentation", + "source_ids": [ + 18 + ], + "id": "Name: document native structural information\nType: CONCEPT" + }, + { + "entity_name": "relevant content", + "entity_type": "CONCEPT", + "description": "relevant content is the information obtained through multimodal retrieval to answer queries", + "source_ids": [ + 18 + ], + "id": "Name: relevant content\nType: CONCEPT" + }, + { + "entity_name": "queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "Queries are the diverse types of tasks that the system is designed to handle, serving as the questions or requests for which relevant content is retrieved. They act as the inputs that the agent-based retrieval approach dynamically classifies and for which the workflow is applied, either with or without planning.", + "source_ids": [ + 18, + 26, + 172, + 166 + ], + "id": "Name: queries\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "l1", + "entity_type": "TASK_OR_PROBLEM", + "description": "l1 is a limitation of existing works described as the failure to capture the deep connection of document structure and semantics", + "source_ids": [ + 19 + ], + "id": "Name: l1\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "l2", + "entity_type": "TASK_OR_PROBLEM", + "description": "l2 is a limitation of existing works described as the static nature of query workflows", + "source_ids": [ + 19 + ], + "id": "Name: l2\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "text based approaches", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "text based approaches are methods that cannot capture the structural layout of the document", + "source_ids": [ + 19 + ], + "id": "Name: text based approaches\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "layout segmented methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "layout segmented methods are approaches that preserve document structure but fail to capture relationships between different blocks", + "source_ids": [ + 19 + ], + "id": "Name: layout segmented methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "real world qa scenarios", + "entity_type": "EVENT", + "description": "real world qa scenarios are contexts where user queries are highly heterogeneous", + "source_ids": [ + 19 + ], + "id": "Name: real world qa scenarios\nType: EVENT" + }, + { + "entity_name": "static or manually predefined workflows", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "static or manually predefined workflows are uniform strategies applied to diverse query needs", + "source_ids": [ + 19 + ], + "id": "Name: static or manually predefined workflows\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "question decomposition", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "question decomposition is a method required for complex queries", + "source_ids": [ + 19 + ], + "id": "Name: question decomposition\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "document", + "entity_type": "PRODUCT", + "description": "A document is the object whose structure and semantics are being analyzed, represented as a sequence of pages containing content blocks organized within a logical chapter hierarchy. It serves as the source material containing logical hierarchy, entities, and relations, and is the complex object within which the bookindex captures these logical structures and entity relations. Additionally, a document is the object being organized into a hierarchical structure by the tree component.", + "source_ids": [ + 37, + 47, + 19, + 51, + 52 + ], + "id": "Name: document\nType: PRODUCT" + }, + { + "entity_name": "tables", + "entity_type": "TABLE", + "description": "Tables are document elements that serve as examples of hierarchical blocks nested within specific sections of a document and function as nodes within the document's explicit logical hierarchy. They are specific PDF blocks labeled to establish ground truth and act as the source from which large language models generate global questions.", + "source_ids": [ + 144, + 51, + 19, + 141 + ], + "id": "Name: tables\nType: TABLE" + }, + { + "entity_name": "section", + "entity_type": "SECTION_TITLE", + "description": "A section is a structural part of a document, often used as a filter type for components like chapters, where tables may be nested and where the formalization and review described in the text are contained.", + "source_ids": [ + 19, + 258, + 35 + ], + "id": "Name: section\nType: SECTION_TITLE" + }, + { + "entity_name": "user queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "User queries are inputs in real-world QA scenarios that range from simple to complex, serving as the input items that an agent classifies based on intent and complexity.", + "source_ids": [ + 19, + 22 + ], + "id": "Name: user queries\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "keyword lookups", + "entity_type": "TASK_OR_PROBLEM", + "description": "keyword lookups are simple types of user queries mentioned in the text", + "source_ids": [ + 19 + ], + "id": "Name: keyword lookups\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "multi hop questions", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi hop questions are complex queries requiring evidence synthesis across different document parts", + "source_ids": [ + 19 + ], + "id": "Name: multi hop questions\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "evidence", + "entity_type": "CONCEPT", + "description": "Evidence refers to information scattered across different parts of a document that is needed for multi-hop reasoning, as well as the highly relevant information located by the reasoner.", + "source_ids": [ + 19, + 22 + ], + "id": "Name: evidence\nType: CONCEPT" + }, + { + "entity_name": "hierarchical blocks", + "entity_type": "CONCEPT", + "description": "hierarchical blocks are structural elements of a document containing relationships", + "source_ids": [ + 19 + ], + "id": "Name: hierarchical blocks\nType: CONCEPT" + }, + { + "entity_name": "multi hop reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "Multi hop reasoning is a task that relies on a high quality knowledge graph, yet its capability is limited by methods that cannot capture relationships between document blocks.", + "source_ids": [ + 19, + 21 + ], + "id": "Name: multi hop reasoning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "overall performance", + "entity_type": "EVALUATION_METRIC", + "description": "overall performance is the metric affected by the limitations of existing methods", + "source_ids": [ + 19 + ], + "id": "Name: overall performance\nType: EVALUATION_METRIC" + }, + { + "entity_name": "complex queries", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 19 + ], + "id": "Name: complex queries\nType: UNKNOWN" + }, + { + "entity_name": "simple queries", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 19 + ], + "id": "Name: simple queries\nType: UNKNOWN" + }, + { + "entity_name": "bookrag", + "entity_type": "TECHNOLOGY", + "description": "bookrag is a retrieval augmented generation method introduced to bridge a gap in document qa tasks", + "source_ids": [ + 20 + ], + "id": "Name: bookrag\nType: TECHNOLOGY" + }, + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "Bookindex is a document-native structure and product developed by BookRag to organize information within complex documents using hierarchical and graph-based methods. Defined as a formally specified triplet structure composed of a tree (t), a graph (g), and metadata (m), it serves as the foundation for an agent-based retrieval approach by capturing logical hierarchy and entity relations. Presented in section 4, this system illustrates a final output data structure that combines organized tree and graph representations, where the graph links help complete the overall structure. As a proposed hierarchical structure-aware index, bookindex acts as the source of content ranges that selector operators filter, with specific operators designed to manipulate the tuple (t, g, m) for effective information retrieval.", + "source_ids": [ + 97, + 102, + 77, + 47, + 49, + 51, + 20, + 52, + 22, + 25, + 29 + ], + "id": "Name: bookindex\nType: PRODUCT" + }, + { + "entity_name": "document qa tasks", + "entity_type": "TASK_OR_PROBLEM", + "description": "Document QA tasks are the specific problems that BookRag and BookIndex are designed to address, serving as the benchmark on which the efficiency and accuracy of BookRag and baseline methods are compared.", + "source_ids": [ + 137, + 20 + ], + "id": "Name: document qa tasks\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "hierarchical tree structure", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the hierarchical tree structure is a method used to preserve the document s native logical hierarchy by organizing parsed content blocks", + "source_ids": [ + 20 + ], + "id": "Name: hierarchical tree structure\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "kg", + "entity_type": "TECHNOLOGY", + "description": "kg refers to a knowledge graph constructed to capture intricate relations within document blocks", + "source_ids": [ + 20 + ], + "id": "Name: kg\nType: TECHNOLOGY" + }, + { + "entity_name": "table of contents", + "entity_type": "PRODUCT", + "description": "the table of contents is the role served by the hierarchical tree structure in organizing the document s logical hierarchy", + "source_ids": [ + 20 + ], + "id": "Name: table of contents\nType: PRODUCT" + }, + { + "entity_name": "parsed content blocks", + "entity_type": "MATERIAL", + "description": "parsed content blocks are the units of document content organized into a hierarchical tree structure", + "source_ids": [ + 20 + ], + "id": "Name: parsed content blocks\nType: MATERIAL" + }, + { + "entity_name": "fine grained entities", + "entity_type": "DATASET_OR_CORPUS", + "description": "fine grained entities are the specific data points contained within the document blocks that are captured by the knowledge graph", + "source_ids": [ + 20 + ], + "id": "Name: fine grained entities\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "relation", + "entity_type": "CONCEPT", + "description": "the relation refers to the deep connections within the document that the method aims to capture", + "source_ids": [ + 20 + ], + "id": "Name: relation\nType: CONCEPT" + }, + { + "entity_name": "tree nodes", + "entity_type": "PRODUCT", + "description": "tree nodes are the specific components of the hierarchical tree structure to which kg entities are mapped", + "source_ids": [ + 20 + ], + "id": "Name: tree nodes\nType: PRODUCT" + }, + { + "entity_name": "kg", + "entity_type": "CONCEPT", + "description": "kg refers to a knowledge graph which is a data structure used for multi hop reasoning", + "source_ids": [ + 21 + ], + "id": "Name: kg\nType: CONCEPT" + }, + { + "entity_name": "llm", + "entity_type": "PRODUCT", + "description": "llm is an example of a distinct entity name mentioned in the context of entity ambiguity", + "source_ids": [ + 21 + ], + "id": "Name: llm\nType: PRODUCT" + }, + { + "entity_name": "large language model", + "entity_type": "PRODUCT", + "description": "large language model is an example of a distinct entity name mentioned in the context of entity ambiguity", + "source_ids": [ + 21 + ], + "id": "Name: large language model\nType: PRODUCT" + }, + { + "entity_name": "gradient based entity resolution method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The gradient based entity resolution method is a novel approach proposed to address entity ambiguity by analyzing similarity distributions and is used to refine entity knowledge during graph construction.", + "source_ids": [ + 21, + 47 + ], + "id": "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "entity ambiguity", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity ambiguity is a problem where distinct entities share similar names compromising the knowledge graph", + "source_ids": [ + 21 + ], + "id": "Name: entity ambiguity\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "similarity distribution", + "entity_type": "CONCEPT", + "description": "similarity distribution is the data pattern analyzed by the proposed method to identify sharp drops in scores", + "source_ids": [ + 21 + ], + "id": "Name: similarity distribution\nType: CONCEPT" + }, + { + "entity_name": "candidate entities", + "entity_type": "CONCEPT", + "description": "candidate entities are the potential matches analyzed to distinguish and merge coreferent entities", + "source_ids": [ + 21 + ], + "id": "Name: candidate entities\nType: CONCEPT" + }, + { + "entity_name": "coreferent entities", + "entity_type": "CONCEPT", + "description": "coreferent entities are distinct entities that refer to the same real world object and need to be merged", + "source_ids": [ + 21 + ], + "id": "Name: coreferent entities\nType: CONCEPT" + }, + { + "entity_name": "graph connectivity", + "entity_type": "CONCEPT", + "description": "graph connectivity is a property of the knowledge graph that is ensured by the proposed method", + "source_ids": [ + 21 + ], + "id": "Name: graph connectivity\nType: CONCEPT" + }, + { + "entity_name": "reasoning capabilities", + "entity_type": "CONCEPT", + "description": "reasoning capabilities are the skills of the system that are enhanced by the proposed method", + "source_ids": [ + 21 + ], + "id": "Name: reasoning capabilities\nType: CONCEPT" + }, + { + "entity_name": "selector", + "entity_type": "SOFTWARE", + "description": "The selector is a software component and operator within BookRag designed to narrow the search space by utilizing information scents, effectively navigating to and refining the search to a precise information patch.", + "source_ids": [ + 124, + 157, + 22 + ], + "id": "Name: selector\nType: SOFTWARE" + }, + { + "entity_name": "reasoner", + "entity_type": "SOFTWARE", + "description": "The reasoner is a software component within BookRag that functions as an operator to perform sensemaking within information patches. It locates highly relevant evidence and conducts analysis on the selected information to support its operations.", + "source_ids": [ + 124, + 157, + 22 + ], + "id": "Name: reasoner\nType: SOFTWARE" + }, + { + "entity_name": "retrieval workflows", + "entity_type": "TASK_OR_PROBLEM", + "description": "Retrieval workflows are the static processes being addressed and dynamically generated by the agent, as well as the processes configured by the approach to locate evidence.", + "source_ids": [ + 26, + 22 + ], + "id": "Name: retrieval workflows\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "search space", + "entity_type": "TASK_OR_PROBLEM", + "description": "the search space is the area narrowed down by the selector component", + "source_ids": [ + 22 + ], + "id": "Name: search space\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "information scents", + "entity_type": "CONCEPT", + "description": "Information scents are signals used by a selector to narrow down the search space, described as cues such as key entities in a question followed by selector operators.", + "source_ids": [ + 125, + 22 + ], + "id": "Name: information scents\nType: CONCEPT" + }, + { + "entity_name": "agent", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 22 + ], + "id": "Name: agent\nType: UNKNOWN" + }, + { + "entity_name": "kg", + "entity_type": "PRODUCT", + "description": "kg refers to a high quality knowledge graph identified as a key feature contributing to the system s performance", + "source_ids": [ + 23 + ], + "id": "Name: kg\nType: PRODUCT" + }, + { + "entity_name": "agent based retrieval mechanism", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the agent based retrieval mechanism is a key feature of the system validated for its critical contributions", + "source_ids": [ + 23 + ], + "id": "Name: agent based retrieval mechanism\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "three widely adopted datasets", + "entity_type": "DATASET_OR_CORPUS", + "description": "three widely adopted datasets are the data sources used to conduct extensive experiments and validate the system", + "source_ids": [ + 23 + ], + "id": "Name: three widely adopted datasets\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "state of the art baselines", + "entity_type": "PRODUCT", + "description": "State of the art baselines are the existing systems used for comparison in the evaluation of Bookrag, serving as the reference against which Bookrag is compared in the experiments.", + "source_ids": [ + 151, + 23 + ], + "id": "Name: state of the art baselines\nType: PRODUCT" + }, + { + "entity_name": "our contributions", + "entity_type": "TASK_OR_PROBLEM", + "description": "our contributions refers to the summary of work or achievements presented in the text", + "source_ids": [ + 24 + ], + "id": "Name: our contributions\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "hierarchical tree", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "a hierarchical tree of document layout blocks is integrated by bookrag to construct the bookindex", + "source_ids": [ + 25 + ], + "id": "Name: hierarchical tree\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "kg", + "entity_type": "SOFTWARE", + "description": "kg is a knowledge graph that stores fine-grained entity relations and is used in the BookRAG method. It serves as a possible form of structured index during the offline indexing phase, where entities are linked together to form a cohesive network of information.", + "source_ids": [ + 25, + 98, + 45 + ], + "id": "Name: kg\nType: SOFTWARE" + }, + { + "entity_name": "document layout blocks", + "entity_type": "MATERIAL", + "description": "document layout blocks are the structural components of a document that are organized into a hierarchical tree", + "source_ids": [ + 25 + ], + "id": "Name: document layout blocks\nType: MATERIAL" + }, + { + "entity_name": "entity relations", + "entity_type": "CONCEPT", + "description": "Entity relations are the fine-grained connections between entities stored within a knowledge graph and also represent the intricate connections within complex documents that the bookindex is designed to capture.", + "source_ids": [ + 25, + 47 + ], + "id": "Name: entity relations\nType: CONCEPT" + }, + { + "entity_name": "agent based retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "Agent based retrieval is a proposed approach and workflow designed to address users' queries systematically by dynamically classifying queries and configuring retrieval workflows.", + "source_ids": [ + 81, + 26 + ], + "id": "Name: agent based retrieval\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "documents", + "entity_type": "DATASET_OR_CORPUS", + "description": "documents are the source material within which highly relevant evidence is located", + "source_ids": [ + 26 + ], + "id": "Name: documents\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "evidence", + "entity_type": "TASK_OR_PROBLEM", + "description": "evidence refers to the highly relevant information sought within the documents", + "source_ids": [ + 26 + ], + "id": "Name: evidence\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "existing baselines", + "entity_type": "PRODUCT", + "description": "Existing baselines are the current methods or systems that BookRag outperforms in experiments and performance, characterized by their susceptibility to context fragmentation and reliance on static query workflows.", + "source_ids": [ + 152, + 27, + 188 + ], + "id": "Name: existing baselines\nType: PRODUCT" + }, + { + "entity_name": "complex document qa tasks", + "entity_type": "TASK_OR_PROBLEM", + "description": "Complex document QA tasks are the specific problems that BookRag is designed to solve, representing the general category of problems addressed by the three benchmarks and the specific problems being solved by the methods in the comparison.", + "source_ids": [ + 153, + 27, + 141 + ], + "id": "Name: complex document qa tasks\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "extensive experiments", + "entity_type": "EVENT", + "description": "extensive experiments are the tests conducted to evaluate the performance of bookrag", + "source_ids": [ + 27 + ], + "id": "Name: extensive experiments\nType: EVENT" + }, + { + "entity_name": "multiple benchmarks", + "entity_type": "BENCHMARK", + "description": "multiple benchmarks are the evaluation standards used in the experiments to measure performance", + "source_ids": [ + 27 + ], + "id": "Name: multiple benchmarks\nType: BENCHMARK" + }, + { + "entity_name": "state of the art performance", + "entity_type": "EVALUATION_METRIC", + "description": "state of the art performance is the high level of achievement attained by bookrag in the tasks", + "source_ids": [ + 27 + ], + "id": "Name: state of the art performance\nType: EVALUATION_METRIC" + }, + { + "entity_name": "competitive efficiency", + "entity_type": "EVALUATION_METRIC", + "description": "competitive efficiency is a metric indicating that bookrag maintains good efficiency while performing well", + "source_ids": [ + 27 + ], + "id": "Name: competitive efficiency\nType: EVALUATION_METRIC" + }, + { + "entity_name": "2", + "entity_type": "NUMBER", + "description": "2 is a numerical value appearing in the text though its specific context or meaning is not defined", + "source_ids": [ + 28 + ], + "id": "Name: 2\nType: NUMBER" + }, + { + "entity_name": "section 2", + "entity_type": "SECTION_TITLE", + "description": "section 2 is the part of the text where related work is reviewed", + "source_ids": [ + 29 + ], + "id": "Name: section 2\nType: SECTION_TITLE" + }, + { + "entity_name": "section 3", + "entity_type": "SECTION_TITLE", + "description": "section 3 introduces the problem formulation ift and rag workflow", + "source_ids": [ + 29 + ], + "id": "Name: section 3\nType: SECTION_TITLE" + }, + { + "entity_name": "ift", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "IFT is a method or technique introduced in section 3 alongside problem formulation and the RAG workflow. It serves as a principle within the structured execution mechanism of BookRAG, ensuring that the execution aligns with its intended design.", + "source_ids": [ + 125, + 29, + 79 + ], + "id": "Name: ift\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "section 4", + "entity_type": "SECTION_TITLE", + "description": "section 4 presents the structure of bookindex and its construction", + "source_ids": [ + 29 + ], + "id": "Name: section 4\nType: SECTION_TITLE" + }, + { + "entity_name": "section 6", + "entity_type": "SECTION_TITLE", + "description": "section 6 presents experimental results and detailed analysis", + "source_ids": [ + 29 + ], + "id": "Name: section 6\nType: SECTION_TITLE" + }, + { + "entity_name": "section 7", + "entity_type": "SECTION_TITLE", + "description": "section 7 is where the paper concludes", + "source_ids": [ + 29 + ], + "id": "Name: section 7\nType: SECTION_TITLE" + }, + { + "entity_name": "section 5", + "entity_type": "SECTION_TITLE", + "description": "section 5 is the part of the text where agent based retrieval is presented", + "source_ids": [ + 29 + ], + "id": "Name: section 5\nType: SECTION_TITLE" + }, + { + "entity_name": "query classification", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Query classification is a component of the agent-based retrieval elaborated in section 5 and serves as a step within the classification plan stage that categorizes queries.", + "source_ids": [ + 82, + 29 + ], + "id": "Name: query classification\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "operators", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "operators are used in the structured execution of bookrag as described in section 5", + "source_ids": [ + 29 + ], + "id": "Name: operators\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "structured execution", + "entity_type": "TASK_OR_PROBLEM", + "description": "structured execution refers to the process in bookrag that utilizes query classification and operators", + "source_ids": [ + 29 + ], + "id": "Name: structured execution\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "related work", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 29 + ], + "id": "Name: related work\nType: UNKNOWN" + }, + { + "entity_name": "experimental results", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 29 + ], + "id": "Name: experimental results\nType: UNKNOWN" + }, + { + "entity_name": "conclusion", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 29 + ], + "id": "Name: conclusion\nType: UNKNOWN" + }, + { + "entity_name": "2 related work", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section provides a comprehensive review of existing literature, specifically focusing on Retrieval-Augmented Generation (RAG) methods and their limitations regarding hierarchical document structures.", + "source_ids": [ + 30 + ], + "id": "Name: 2 related work\nType: SECTION_TITLE" + }, + { + "entity_name": "retrieval-augmented generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the class of techniques discussed in section 2 that enhance Large Language Models by querying external information, serving as the primary context for the related work analysis.", + "source_ids": [ + 30 + ], + "id": "Name: retrieval-augmented generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "hierarchical document structures", + "entity_type": "TASK_OR_PROBLEM", + "description": "Refers to the specific structural characteristics of documents (e.g., books, handbooks) that existing RAG approaches often overlook, which is a key problem addressed in the literature review within section 2.", + "source_ids": [ + 30 + ], + "id": "Name: hierarchical document structures\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "llm", + "entity_type": "TECHNOLOGY", + "description": "LLM, which stands for large language model, is a technology primarily used in document analysis for robust semantic reasoning and finer-grained distinctions when identifying multiple similar entities. It functions as an operator within the formulator category and serves as a system to select specific sections in described processes. Additionally, LLM is utilized by treetraverse to navigate a document's tree structure and is noted for its generation nature, which is described as uncontrollable. The term is also recognized as an abbreviation for large language model in the context of entity name matching.", + "source_ids": [ + 32, + 98, + 227, + 104, + 74, + 267, + 148, + 31 + ], + "id": "Name: llm\nType: TECHNOLOGY" + }, + { + "entity_name": "rag approaches", + "entity_type": "TECHNOLOGY", + "description": "rag approaches are modern representative technologies reviewed in the text", + "source_ids": [ + 31 + ], + "id": "Name: rag approaches\nType: TECHNOLOGY" + }, + { + "entity_name": "document analysis", + "entity_type": "RESEARCH_FIELD", + "description": "document analysis is the field of study where llms and rag approaches are applied", + "source_ids": [ + 31 + ], + "id": "Name: document analysis\nType: RESEARCH_FIELD" + }, + { + "entity_name": "related works", + "entity_type": "SECTION_TITLE", + "description": "related works is the section of the text where the review of llm and rag approaches takes place", + "source_ids": [ + 31 + ], + "id": "Name: related works\nType: SECTION_TITLE" + }, + { + "entity_name": "html", + "entity_type": "FILE_TYPE", + "description": "html is an unstructured document format mentioned as a target for conversion into structured formats", + "source_ids": [ + 32 + ], + "id": "Name: html\nType: FILE_TYPE" + }, + { + "entity_name": "pdf", + "entity_type": "FILE_TYPE", + "description": "PDF is an unstructured document format that is often mentioned as a target for conversion into structured formats and is also referenced in the context of parsing failures.", + "source_ids": [ + 32, + 236 + ], + "id": "Name: pdf\nType: FILE_TYPE" + }, + { + "entity_name": "raw text", + "entity_type": "FILE_TYPE", + "description": "raw text is an unstructured document format mentioned as a target for conversion into structured formats", + "source_ids": [ + 32 + ], + "id": "Name: raw text\nType: FILE_TYPE" + }, + { + "entity_name": "relational tables", + "entity_type": "PRODUCT", + "description": "relational tables are structured formats that unstructured documents are converted into", + "source_ids": [ + 32 + ], + "id": "Name: relational tables\nType: PRODUCT" + }, + { + "entity_name": "evaporate", + "entity_type": "SOFTWARE", + "description": "evaporate is a system that utilizes llms to synthesize extraction code for converting semi structured web documents", + "source_ids": [ + 32 + ], + "id": "Name: evaporate\nType: SOFTWARE" + }, + { + "entity_name": "lotus", + "entity_type": "SOFTWARE", + "description": "lotus is a system that extends the relational model with semantic operators for querying unstructured text corpora", + "source_ids": [ + 32 + ], + "id": "Name: lotus\nType: SOFTWARE" + }, + { + "entity_name": "sql", + "entity_type": "PROGRAMMING_LANGUAGE", + "description": "sql is a query language referenced in the context of sql like queries executed by lotus", + "source_ids": [ + 32 + ], + "id": "Name: sql\nType: PROGRAMMING_LANGUAGE" + }, + { + "entity_name": "web documents", + "entity_type": "PRODUCT", + "description": "web documents are semi structured documents processed by systems like evaporate", + "source_ids": [ + 32 + ], + "id": "Name: web documents\nType: PRODUCT" + }, + { + "entity_name": "document pages", + "entity_type": "IMAGE", + "description": "document pages are viewed as images in research to preserve layout and visual information", + "source_ids": [ + 32 + ], + "id": "Name: document pages\nType: IMAGE" + }, + { + "entity_name": "semantic operators", + "entity_type": "TECHNOLOGY", + "description": "semantic operators are features added by lotus to extend the relational model", + "source_ids": [ + 32 + ], + "id": "Name: semantic operators\nType: TECHNOLOGY" + }, + { + "entity_name": "predicates", + "entity_type": "TECHNOLOGY", + "description": "predicates are llm powered functions like filter and join used in lotus", + "source_ids": [ + 32 + ], + "id": "Name: predicates\nType: TECHNOLOGY" + }, + { + "entity_name": "filter", + "entity_type": "TECHNOLOGY", + "description": "filter is an example of an llm powered predicate used in lotus", + "source_ids": [ + 32 + ], + "id": "Name: filter\nType: TECHNOLOGY" + }, + { + "entity_name": "join", + "entity_type": "TECHNOLOGY", + "description": "join is an example of an llm powered predicate used in lotus", + "source_ids": [ + 32 + ], + "id": "Name: join\nType: TECHNOLOGY" + }, + { + "entity_name": "agentic framework", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "an agentic framework is introduced by docetl to optimize information extraction", + "source_ids": [ + 32 + ], + "id": "Name: agentic framework\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "information extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "information extraction is the complex task optimized by docetl", + "source_ids": [ + 32 + ], + "id": "Name: information extraction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "layout", + "entity_type": "CONCEPT", + "description": "layout refers to the visual structure of documents preserved when viewing pages as images", + "source_ids": [ + 32 + ], + "id": "Name: layout\nType: CONCEPT" + }, + { + "entity_name": "visual information", + "entity_type": "CONCEPT", + "description": "visual information refers to the content preserved when document pages are viewed as images", + "source_ids": [ + 32 + ], + "id": "Name: visual information\nType: CONCEPT" + }, + { + "entity_name": "semi structured web documents", + "entity_type": "PRODUCT", + "description": "semi structured web documents are the input type for evaporate", + "source_ids": [ + 32 + ], + "id": "Name: semi structured web documents\nType: PRODUCT" + }, + { + "entity_name": "structured databases", + "entity_type": "PRODUCT", + "description": "structured databases are the output format produced by evaporate", + "source_ids": [ + 32 + ], + "id": "Name: structured databases\nType: PRODUCT" + }, + { + "entity_name": "manual annotation", + "entity_type": "TASK_OR_PROBLEM", + "description": "manual annotation is a heavy process avoided by evaporate s cost effective conversion", + "source_ids": [ + 32 + ], + "id": "Name: manual annotation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "unstructured text corpora", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 32 + ], + "id": "Name: unstructured text corpora\nType: UNKNOWN" + }, + { + "entity_name": "rag approaches", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "rag approaches are methods proven to excel in tasks like question answering and data cleaning", + "source_ids": [ + 33 + ], + "id": "Name: rag approaches\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "open ended question answering", + "entity_type": "TASK_OR_PROBLEM", + "description": "open ended question answering is a task where rag approaches have been proven to excel", + "source_ids": [ + 33 + ], + "id": "Name: open ended question answering\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "programming context", + "entity_type": "TASK_OR_PROBLEM", + "description": "programming context is a task where rag approaches have been proven to excel", + "source_ids": [ + 33 + ], + "id": "Name: programming context\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "sql rewrite", + "entity_type": "TASK_OR_PROBLEM", + "description": "sql rewrite is a task where rag approaches have been proven to excel", + "source_ids": [ + 33 + ], + "id": "Name: sql rewrite\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "data cleaning", + "entity_type": "TASK_OR_PROBLEM", + "description": "data cleaning is a task where rag approaches have been proven to excel", + "source_ids": [ + 33 + ], + "id": "Name: data cleaning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "naive rag technique", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the naive rag technique relies on retrieving query relevant contexts from external knowledge bases to mitigate hallucination", + "source_ids": [ + 33 + ], + "id": "Name: naive rag technique\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "graph structures", + "entity_type": "TECHNOLOGY", + "description": "graph structures are adopted by many rag approaches to organize information and relationships within documents", + "source_ids": [ + 33 + ], + "id": "Name: graph structures\nType: TECHNOLOGY" + }, + { + "entity_name": "agentic rag paradigm", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the agentic rag paradigm employs autonomous agents to dynamically orchestrate and refine the rag pipeline", + "source_ids": [ + 33 + ], + "id": "Name: agentic rag paradigm\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "autonomous agents", + "entity_type": "TECHNOLOGY", + "description": "autonomous agents are employed by the agentic rag paradigm to orchestrate and refine the pipeline", + "source_ids": [ + 33 + ], + "id": "Name: autonomous agents\nType: TECHNOLOGY" + }, + { + "entity_name": "rag pipeline", + "entity_type": "TASK_OR_PROBLEM", + "description": "the rag pipeline is the process dynamically orchestrated and refined by the agentic rag paradigm", + "source_ids": [ + 33 + ], + "id": "Name: rag pipeline\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "recent survey of graph based rag methods", + "entity_type": "PUBLICATION_VENUE", + "description": "a recent survey of graph based rag methods is referenced for more details on the topic", + "source_ids": [ + 33 + ], + "id": "Name: recent survey of graph based rag methods\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "external knowledge bases", + "entity_type": "TECHNOLOGY", + "description": "external knowledge bases are sources from which the naive rag technique retrieves query relevant contexts", + "source_ids": [ + 33 + ], + "id": "Name: external knowledge bases\nType: TECHNOLOGY" + }, + { + "entity_name": "hallucination", + "entity_type": "TASK_OR_PROBLEM", + "description": "hallucination is a problem in llms that the naive rag technique aims to mitigate", + "source_ids": [ + 33 + ], + "id": "Name: hallucination\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "overall retrieval performance", + "entity_type": "EVALUATION_METRIC", + "description": "overall retrieval performance is improved by rag approaches that adopt graph structures", + "source_ids": [ + 33 + ], + "id": "Name: overall retrieval performance\nType: EVALUATION_METRIC" + }, + { + "entity_name": "reasoning robustness", + "entity_type": "EVALUATION_METRIC", + "description": "reasoning robustness is a metric significantly boosted by the agentic rag paradigm", + "source_ids": [ + 33 + ], + "id": "Name: reasoning robustness\nType: EVALUATION_METRIC" + }, + { + "entity_name": "generation fidelity", + "entity_type": "EVALUATION_METRIC", + "description": "generation fidelity is a metric significantly boosted by the agentic rag paradigm", + "source_ids": [ + 33 + ], + "id": "Name: generation fidelity\nType: EVALUATION_METRIC" + }, + { + "entity_name": "documents", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 33 + ], + "id": "Name: documents\nType: UNKNOWN" + }, + { + "entity_name": "3 preliminaries", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section establishes the foundational concepts, definitions, and theoretical background necessary to understand the proposed BookRAG method and its context within Retrieval-Augmented Generation (RAG) for hierarchical documents.", + "source_ids": [ + 34 + ], + "id": "Name: 3 preliminaries\nType: SECTION_TITLE" + }, + { + "entity_name": "ift", + "entity_type": "SCIENTIFIC_THEORY", + "description": "ift is an abbreviation for information foraging theory a foundational theory introduced in the text", + "source_ids": [ + 35 + ], + "id": "Name: ift\nType: SCIENTIFIC_THEORY" + }, + { + "entity_name": "rag systems", + "entity_type": "TECHNOLOGY", + "description": "Rag systems are a type of technology known as Retrieval-Augmented Generation systems, and their general workflow is reviewed in the text, with detailed analysis provided in section 3.3.", + "source_ids": [ + 35, + 44 + ], + "id": "Name: rag systems\nType: TECHNOLOGY" + }, + { + "entity_name": "research problem", + "entity_type": "TASK_OR_PROBLEM", + "description": "the research problem is the subject being formalized in the text", + "source_ids": [ + 35 + ], + "id": "Name: research problem\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "general workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "the general workflow of rag systems is the subject being briefly reviewed in the text", + "source_ids": [ + 35 + ], + "id": "Name: general workflow\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "3.1 problem formulation", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Preliminaries' within the BookRAG paper, this section formalizes the research problem of complex document Question Answering (QA) and establishes the foundational context for the proposed approach.", + "source_ids": [ + 36 + ], + "id": "Name: 3.1 problem formulation\nType: SECTION_TITLE" + }, + { + "entity_name": "user query", + "entity_type": "TASK_OR_PROBLEM", + "description": "A user query is an input provided to a system to generate an accurate answer, serving as the input used in the online retrieval phase to retrieve relevant components. It represents a task or problem mentioned in the text that signifies a request for information or action, and in real data sections, it is the final input provided, often explicitly represented by the word \"query\" itself.", + "source_ids": [ + 45, + 252, + 37, + 255 + ], + "id": "Name: user query\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "answer", + "entity_type": "TASK_OR_PROBLEM", + "description": "An answer is the final output generated by the system, typically synthesized by an agent using the reduce method and ideally grounded in specific evidence blocks, and is symbolized by a lightbulb icon.", + "source_ids": [ + 84, + 124, + 37, + 135 + ], + "id": "Name: answer\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "evidence blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "evidence blocks are a specific set of content blocks from the document used to ground the generated answer", + "source_ids": [ + 37 + ], + "id": "Name: evidence blocks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "method s", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "method s is a developed approach that maps a structured document and a query to a final answer", + "source_ids": [ + 37 + ], + "id": "Name: method s\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "pages", + "entity_type": "MEASUREMENT", + "description": "pages are the units that collectively form a document represented as a sequence", + "source_ids": [ + 37 + ], + "id": "Name: pages\nType: MEASUREMENT" + }, + { + "entity_name": "content blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "Content blocks are distinct elements within a document, such as text segments, section headers, tables, or images. These diverse structural units are identified and extracted from document pages as described in section 4.2.1.", + "source_ids": [ + 37, + 55 + ], + "id": "Name: content blocks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "text segment", + "entity_type": "DATASET_OR_CORPUS", + "description": "a text segment is a type of content block within a document", + "source_ids": [ + 37 + ], + "id": "Name: text segment\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "section header", + "entity_type": "DATASET_OR_CORPUS", + "description": "a section header is a type of content block within a document", + "source_ids": [ + 37 + ], + "id": "Name: section header\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "table", + "entity_type": "DATASET_OR_CORPUS", + "description": "a table is a type of content block within a document", + "source_ids": [ + 37 + ], + "id": "Name: table\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "image", + "entity_type": "DATASET_OR_CORPUS", + "description": "an image is a type of content block within a document", + "source_ids": [ + 37 + ], + "id": "Name: image\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "logical chapter hierarchy", + "entity_type": "TASK_OR_PROBLEM", + "description": "a logical chapter hierarchy is the organizational structure within which content blocks are arranged", + "source_ids": [ + 37 + ], + "id": "Name: logical chapter hierarchy\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The variable n represents different concepts depending on the context: it can denote the number of pages in a document, the set of nodes in a general tree structure, the set of nodes in a specific origin tree t, or the set of nodes in a tree. Additionally, n may refer to refined evidence utilized by a synthesizer operator.", + "source_ids": [ + 129, + 37, + 102, + 77, + 51 + ], + "id": "Name: n\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "m", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "m is a variable representing the number of content blocks in a document and serves as a component of the bookindex structure and the bookindex data structure.", + "source_ids": [ + 88, + 37, + 85 + ], + "id": "Name: m\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "p", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The variable p serves multiple distinct roles depending on the context: it represents a specific page within a document sequence, denotes the power set of nodes in a tree structure used for graph tree link definitions, and signifies precision calculated as the intersection of extracted and ground truth tokens divided by the extracted tokens.", + "source_ids": [ + 51, + 37, + 231 + ], + "id": "Name: p\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "q", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "q is a variable representing the original user query mentioned in the text, which serves as the query or input used by the synthesizer operator.", + "source_ids": [ + 129, + 37, + 101 + ], + "id": "Name: q\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "a", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "a is a variable representing the coherent answer generated by the synthesizer operator.", + "source_ids": [ + 129, + 37 + ], + "id": "Name: a\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "e", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "e is a variable representing a subset of evidence blocks", + "source_ids": [ + 37 + ], + "id": "Name: e\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "b", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "b is a variable representing the sequence of all content blocks", + "source_ids": [ + 37 + ], + "id": "Name: b\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "d", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "d is a variable representing the document", + "source_ids": [ + 37 + ], + "id": "Name: d\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "equation 1", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 1 is the mathematical formulation defining the task as a s d q", + "source_ids": [ + 37 + ], + "id": "Name: equation 1\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "references 5 11 33", + "entity_type": "PUBLICATION_VENUE", + "description": "references 5 11 and 33 are citations mentioned in the text regarding the problem of question answering", + "source_ids": [ + 37 + ], + "id": "Name: references 5 11 33\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "3", + "entity_type": "MEASUREMENT", + "description": "3 is a numerical value that serves as the issue number of a publication and also represents the starting page number in an example range.", + "source_ids": [ + 258, + 38, + 199 + ], + "id": "Name: 3\nType: MEASUREMENT" + }, + { + "entity_name": "formula (1)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable A as a function of D and q. LaTeX: 𝐴 = S( 𝐷,𝑞 ) (1)", + "source_ids": [ + 39 + ], + "id": "Name: formula (1)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "s", + "entity_type": "PERSON", + "description": "s is an entity described as needing to navigate sequential page content and logical hierarchy to synthesize a response", + "source_ids": [ + 40 + ], + "id": "Name: s\nType: PERSON" + }, + { + "entity_name": "d", + "entity_type": "TASK_OR_PROBLEM", + "description": "d represents the logical hierarchy that s must navigate to synthesize a response", + "source_ids": [ + 40 + ], + "id": "Name: d\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "3.2 information foraging theory", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Preliminaries' within the BookRAG paper, this section formalizes the foundational Information Foraging Theory (IFT) used to model user behavior in complex document QA tasks.", + "source_ids": [ + 41 + ], + "id": "Name: 3.2 information foraging theory\nType: SECTION_TITLE" + }, + { + "entity_name": "animal foraging", + "entity_type": "TASK_OR_PROBLEM", + "description": "animal foraging is the process used as an analogy to explain how users access information in the context of information foraging theory", + "source_ids": [ + 42 + ], + "id": "Name: animal foraging\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "information scent", + "entity_type": "CONCEPT", + "description": "Information scent refers to the cues, such as keywords, icons, and rich information provided by entities and relations, that guide users and experts in navigating content by leading them toward promising sections.", + "source_ids": [ + 51, + 42, + 43 + ], + "id": "Name: information scent\nType: CONCEPT" + }, + { + "entity_name": "information patches", + "entity_type": "CONCEPT", + "description": "Information patches are clusters of content, such as sections in handbooks, that serve as hierarchical tree nodes providing native contexts for information seeking. These promising sections enable users and experts to navigate effectively between different parts of a handbook.", + "source_ids": [ + 51, + 42, + 43 + ], + "id": "Name: information patches\nType: CONCEPT" + }, + { + "entity_name": "handbooks", + "entity_type": "PRODUCT", + "description": "handbooks are mentioned as containing sections that serve as information patches", + "source_ids": [ + 42 + ], + "id": "Name: handbooks\nType: PRODUCT" + }, + { + "entity_name": "keywords", + "entity_type": "CONCEPT", + "description": "keywords are identified as specific examples of information scent cues used by users", + "source_ids": [ + 42 + ], + "id": "Name: keywords\nType: CONCEPT" + }, + { + "entity_name": "icons", + "entity_type": "CONCEPT", + "description": "icons are identified as specific examples of information scent cues used by users", + "source_ids": [ + 42 + ], + "id": "Name: icons\nType: CONCEPT" + }, + { + "entity_name": "sections", + "entity_type": "CONCEPT", + "description": "sections are described as parts of handbooks that function as information patches", + "source_ids": [ + 42 + ], + "id": "Name: sections\nType: CONCEPT" + }, + { + "entity_name": "reference 42", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 42 is the citation source for information foraging theory mentioned in the text", + "source_ids": [ + 42 + ], + "id": "Name: reference 42\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "experts", + "entity_type": "PERSON", + "description": "experts are individuals seeking a solution to a specific problem within a large technical handbook", + "source_ids": [ + 43 + ], + "id": "Name: experts\nType: PERSON" + }, + { + "entity_name": "large technical handbook", + "entity_type": "BOOK", + "description": "the large technical handbook is the source material containing the problem and information patches", + "source_ids": [ + 43 + ], + "id": "Name: large technical handbook\nType: BOOK" + }, + { + "entity_name": "key terms", + "entity_type": "CONCEPT", + "description": "key terms are extracted by experts to act as information scent", + "source_ids": [ + 43 + ], + "id": "Name: key terms\nType: CONCEPT" + }, + { + "entity_name": "final answer", + "entity_type": "CONCEPT", + "description": "the final answer is the result formulated by experts after analyzing the content within the information patches", + "source_ids": [ + 43 + ], + "id": "Name: final answer\nType: CONCEPT" + }, + { + "entity_name": "problem", + "entity_type": "TASK_OR_PROBLEM", + "description": "a specific problem is the target issue that experts are seeking to solve within the handbook", + "source_ids": [ + 43 + ], + "id": "Name: problem\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "diverse content", + "entity_type": "CONCEPT", + "description": "diverse content refers to the varied information found within the information patches that experts analyze", + "source_ids": [ + 43 + ], + "id": "Name: diverse content\nType: CONCEPT" + }, + { + "entity_name": "precise knowledge", + "entity_type": "CONCEPT", + "description": "precise knowledge is the specific information extracted from the diverse content to help formulate the answer", + "source_ids": [ + 43 + ], + "id": "Name: precise knowledge\nType: CONCEPT" + }, + { + "entity_name": "3.3 rag workflow", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Preliminaries' within the BookRAG paper, this section details the general operational workflow of Retrieval-Augmented Generation (RAG) systems, serving as a foundational context for the proposed hierarchical approach.", + "source_ids": [ + 44 + ], + "id": "Name: 3.3 rag workflow\nType: SECTION_TITLE" + }, + { + "entity_name": "retrieval augmented generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval augmented generation is a system framework described as operating in a two phase process", + "source_ids": [ + 45 + ], + "id": "Name: retrieval augmented generation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "offline indexing phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "offline indexing phase is the first phase where unstructured corpus data is organized into a structured index", + "source_ids": [ + 45 + ], + "id": "Name: offline indexing phase\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "online retrieval phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "online retrieval phase is the second phase where the system retrieves relevant components based on a user query", + "source_ids": [ + 45 + ], + "id": "Name: online retrieval phase\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "vector databases", + "entity_type": "SOFTWARE", + "description": "vector databases are mentioned as a possible form of structured index in the offline indexing phase", + "source_ids": [ + 45 + ], + "id": "Name: vector databases\nType: SOFTWARE" + }, + { + "entity_name": "llm", + "entity_type": "SOFTWARE", + "description": "LLM is a software component that functions as a Large Language Model used to generate output informed by retrieved components during the online retrieval phase. It serves as a tool to extract entities and relations when processing text-only nodes and is also employed to select the canonical entity when multiple aliases are identified.", + "source_ids": [ + 75, + 45, + 63 + ], + "id": "Name: llm\nType: SOFTWARE" + }, + { + "entity_name": "document s native tree topology", + "entity_type": "TASK_OR_PROBLEM", + "description": "document s native tree topology is the logical structure that the proposed approach seeks to integrate with retrieval structures", + "source_ids": [ + 45 + ], + "id": "Name: document s native tree topology\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "unstructured corpus data", + "entity_type": "DATASET_OR_CORPUS", + "description": "unstructured corpus data is the input material organized into a structured index during the offline indexing phase", + "source_ids": [ + 45 + ], + "id": "Name: unstructured corpus data\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "text chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "text chunks are examples of relevant components retrieved during the online retrieval phase", + "source_ids": [ + 45 + ], + "id": "Name: text chunks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "subgraphs", + "entity_type": "DATASET_OR_CORPUS", + "description": "subgraphs are examples of relevant components retrieved during the online retrieval phase", + "source_ids": [ + 45 + ], + "id": "Name: subgraphs\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "document", + "entity_type": "TASK_OR_PROBLEM", + "description": "The document serves as the source of the original logical hierarchy and native tree topology referenced in the text, and it is the text being processed by the select by entity and select by section methods.", + "source_ids": [ + 104, + 45 + ], + "id": "Name: document\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "4 bookindex", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section details the novel index structure named BookIndex. It explains how the approach extracts a hierarchical tree from documents to serve as a table of contents, utilizes graphs to capture entity relationships, and maps entities to tree nodes.", + "source_ids": [ + 46 + ], + "id": "Name: 4 bookindex\nType: SECTION_TITLE" + }, + { + "entity_name": "bookindex", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "Bookindex is a novel hierarchical structure-aware index introduced in this work that builds a tree from documents to act as a table of contents and uses graphs to capture intricate relationships between entities. Serving as the core subject of section 4.1, it is designed to capture explicit logical hierarchy and intricate entity relations within complex documents.", + "source_ids": [ + 50, + 46 + ], + "id": "Name: bookindex\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "hierarchical tree", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The structural method used within BookIndex to organize document content from different granularity levels, serving the role of a table of contents.", + "source_ids": [ + 46 + ], + "id": "Name: hierarchical tree\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "graph", + "entity_type": "TECHNOLOGY", + "description": "The data structure employed by BookIndex to capture and represent the intricate relationships between entities within the document hierarchy.", + "source_ids": [ + 46 + ], + "id": "Name: graph\nType: TECHNOLOGY" + }, + { + "entity_name": "tree construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Tree construction is the first stage of a two-stage process used to parse document layout and establish hierarchical nodes categorized by type. This specific sequential process, detailed in section 4.2, serves as the initial phase of the BookIndex construction process, where document layout is analyzed to create these hierarchical structures.", + "source_ids": [ + 50, + 53, + 47 + ], + "id": "Name: tree construction\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "graph construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Graph construction is the second stage of the BookIndex process, following tree construction, which focuses on extracting fine-grained entity knowledge from tree nodes and refining it through gradient-based entity resolution as detailed in section 4.1.", + "source_ids": [ + 50, + 61, + 47 + ], + "id": "Name: graph construction\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "logical hierarchy", + "entity_type": "CONCEPT", + "description": "Logical hierarchy is the explicit structure within complex documents that the bookindex is designed to capture, serving as the foundational framework that grounds semantic entities.", + "source_ids": [ + 52, + 47 + ], + "id": "Name: logical hierarchy\nType: CONCEPT" + }, + { + "entity_name": "hierarchical nodes", + "entity_type": "CONCEPT", + "description": "hierarchical nodes are the categorized units established by the tree construction process", + "source_ids": [ + 47 + ], + "id": "Name: hierarchical nodes\nType: CONCEPT" + }, + { + "entity_name": "fine grained entity knowledge", + "entity_type": "CONCEPT", + "description": "fine grained entity knowledge is the detailed information extracted from tree nodes during the graph construction process", + "source_ids": [ + 47 + ], + "id": "Name: fine grained entity knowledge\nType: CONCEPT" + }, + { + "entity_name": "figure 2", + "entity_type": "IMAGE", + "description": "Figure 2 is an image referenced in the text, serving as a visual representation to illustrate the bookindex construction process, provide an example of the bookindex, depict the layout parsing phase, and show the processing of a new entity in a knowledge graph, with its title being the subject of a question.", + "source_ids": [ + 76, + 48, + 52, + 245, + 59 + ], + "id": "Name: figure 2\nType: IMAGE" + }, + { + "entity_name": "bookindex construction process", + "entity_type": "TASK_OR_PROBLEM", + "description": "the bookindex construction process is a phase involving tree construction and graph construction", + "source_ids": [ + 48 + ], + "id": "Name: bookindex construction process\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "tree construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "Tree construction is a component of the bookindex construction process derived from layout parsing and section filtering, representing the top section of the diagram that details the initial phase of building the index from document layouts.", + "source_ids": [ + 48, + 49 + ], + "id": "Name: tree construction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "layout parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Layout parsing is a method used to derive tree construction by extracting visual elements such as tables, text, titles, and images from a document layout. While it identifies blocks as titles, it does not assign their hierarchical level.", + "source_ids": [ + 48, + 49, + 57 + ], + "id": "Name: layout parsing\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "section filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Section filtering is a method used in tree construction, specifically serving as Step 2 in the process where parsed sections are filtered based on title properties such as FontSize and content type, distinguishing between sections and text.", + "source_ids": [ + 48, + 49 + ], + "id": "Name: section filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "graph construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "Graph construction is a component of the bookindex construction process that involves knowledge graph construction and gradient-based entity resolution, as illustrated in the bottom section of the diagram detailing the creation of a knowledge graph for this purpose.", + "source_ids": [ + 48, + 49 + ], + "id": "Name: graph construction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "kg construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "kg construction is a step involved in graph construction", + "source_ids": [ + 48 + ], + "id": "Name: kg construction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "gradient based entity resolution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Gradient based entity resolution is a method involved in graph construction and represents the specific technique or approach described for the algorithm.", + "source_ids": [ + 48, + 69 + ], + "id": "Name: gradient based entity resolution\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "bookindex construction", + "entity_type": "IMAGE", + "description": "A diagram illustrating the process of constructing a book index, divided into Tree Construction and Graph Construction phases.", + "source_ids": [ + 49 + ], + "id": "Name: bookindex construction\nType: IMAGE" + }, + { + "entity_name": "title: method", + "entity_type": "SECTION_TITLE", + "description": "A specific text label identified during parsing with FontSize 14.", + "source_ids": [ + 49 + ], + "id": "Name: title: method\nType: SECTION_TITLE" + }, + { + "entity_name": "title: experiment", + "entity_type": "SECTION_TITLE", + "description": "A specific text label identified during parsing with FontSize 14.", + "source_ids": [ + 49 + ], + "id": "Name: title: experiment\nType: SECTION_TITLE" + }, + { + "entity_name": "title: moe layer", + "entity_type": "SECTION_TITLE", + "description": "A specific text label identified during parsing with FontSize 20.", + "source_ids": [ + 49 + ], + "id": "Name: title: moe layer\nType: SECTION_TITLE" + }, + { + "entity_name": "level: 2 type: section", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "An attribute indicating that 'Method' and 'Experiment' titles are classified as Level 2 Sections.", + "source_ids": [ + 49 + ], + "id": "Name: level: 2 type: section\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "level: none type: text", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "An attribute associated with 'MOE Layer', marked with a red cross, indicating it was rejected or not treated as a section.", + "source_ids": [ + 49 + ], + "id": "Name: level: none type: text\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "tree node", + "entity_type": "HARDWARE", + "description": "Visual element representing nodes in the tree structure shown in the legend and the resulting BookIndex.", + "source_ids": [ + 49 + ], + "id": "Name: tree node\nType: HARDWARE" + }, + { + "entity_name": "gt-link", + "entity_type": "SOFTWARE", + "description": "Legend item representing Ground Truth links between entities in the diagram.", + "source_ids": [ + 49 + ], + "id": "Name: gt-link\nType: SOFTWARE" + }, + { + "entity_name": "relation", + "entity_type": "DATASET_OR_CORPUS", + "description": "Legend item representing relationships between entities.", + "source_ids": [ + 49 + ], + "id": "Name: relation\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "kg construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Step 1 in Graph Construction showing the generation of a Knowledge Graph from Tree Nodes.", + "source_ids": [ + 49 + ], + "id": "Name: kg construction\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "gradient-based entity resolution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Gradient-based entity resolution is a novel algorithmic method used to refine extracted entity knowledge by resolving ambiguities or duplicates through gradient optimization. As a specific technique mentioned in the title, it plays a crucial role in resolving entity fragmentation by utilizing gradient-based approaches to refine raw Knowledge Graphs. This method is implemented as Step 2 in the Graph Construction process, where it facilitates similarity matching and the merging of entities to ensure data accuracy and coherence.", + "source_ids": [ + 65, + 61, + 49 + ], + "id": "Name: gradient-based entity resolution\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "similarity", + "entity_type": "EVALUATION_METRIC", + "description": "Y-axis label of the chart in the Gradient-based Entity Resolution step.", + "source_ids": [ + 49 + ], + "id": "Name: similarity\nType: EVALUATION_METRIC" + }, + { + "entity_name": "entity", + "entity_type": "DATASET_OR_CORPUS", + "description": "X-axis label of the chart in the Gradient-based Entity Resolution step.", + "source_ids": [ + 49 + ], + "id": "Name: entity\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "merge", + "entity_type": "TASK_OR_PROBLEM", + "description": "Action performed to combine similar entities (e.g., e2 and e9) into a single resolved entity.", + "source_ids": [ + 49 + ], + "id": "Name: merge\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "image cref='#/texts/52'", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 49 + ], + "id": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "entity_name": "4.1 overview of bookindex", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'BOOKINDEX', this section provides a high-level introduction to the proposed BookIndex, defining its hierarchical structure-aware nature and outlining its two-stage construction process (Tree Construction and Graph Construction) for capturing logical hierarchies and entity relations in complex documents.", + "source_ids": [ + 50 + ], + "id": "Name: 4.1 overview of bookindex\nType: SECTION_TITLE" + }, + { + "entity_name": "tree structure", + "entity_type": "TASK_OR_PROBLEM", + "description": "tree structure represents the set of nodes derived from the document s explicit logical hierarchy", + "source_ids": [ + 51 + ], + "id": "Name: tree structure\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "knowledge graph", + "entity_type": "SOFTWARE", + "description": "knowledge graph is a structure that captures fine grained entities and their relations within the document", + "source_ids": [ + 51 + ], + "id": "Name: knowledge graph\nType: SOFTWARE" + }, + { + "entity_name": "graph tree link", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graph tree link gt link is a mechanism that links entities to specific tree nodes from which they were extracted", + "source_ids": [ + 51 + ], + "id": "Name: graph tree link\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "titles", + "entity_type": "SECTION_TITLE", + "description": "titles are examples of nodes in the document s explicit logical hierarchy", + "source_ids": [ + 51 + ], + "id": "Name: titles\nType: SECTION_TITLE" + }, + { + "entity_name": "sections", + "entity_type": "SECTION_TITLE", + "description": "sections are examples of nodes in the document s explicit logical hierarchy", + "source_ids": [ + 51 + ], + "id": "Name: sections\nType: SECTION_TITLE" + }, + { + "entity_name": "e t", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "e t denotes the nesting relationships in the tree structure and represents the set of edges in the tree.", + "source_ids": [ + 51, + 102 + ], + "id": "Name: e t\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "v", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v represents the set of entities in the graph g, which correspond to the fine-grained entities within the knowledge graph.", + "source_ids": [ + 51, + 77 + ], + "id": "Name: v\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "e g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "e g denotes the relations in the knowledge graph", + "source_ids": [ + 51 + ], + "id": "Name: e g\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "m v", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "m v is the graph tree link function linking entities to tree nodes", + "source_ids": [ + 51 + ], + "id": "Name: m v\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "", + "entity_type": "UNKNOWN", + "description": "The entity's description is empty, containing no information to synthesize.", + "source_ids": [ + 73, + 109, + 112, + 51, + 57, + 122 + ], + "id": "Name: \nType: UNKNOWN" + }, + { + "entity_name": "navigation", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 51 + ], + "id": "Name: navigation\nType: UNKNOWN" + }, + { + "entity_name": "tree component", + "entity_type": "SOFTWARE", + "description": "the tree component is a part of the bookindex that organizes documents into a hierarchical structure", + "source_ids": [ + 52 + ], + "id": "Name: tree component\nType: SOFTWARE" + }, + { + "entity_name": "graph component", + "entity_type": "SOFTWARE", + "description": "the graph component is a part of the bookindex composed of entities and relations extracted from document nodes", + "source_ids": [ + 52 + ], + "id": "Name: graph component\nType: SOFTWARE" + }, + { + "entity_name": "gt link", + "entity_type": "TECHNOLOGY", + "description": "GT Link is a technology feature illustrated by blue dotted lines that connects entities to their corresponding tree nodes. It serves as a formalized mechanism, denoted as M, used to complete the book index and to link sections to entities.", + "source_ids": [ + 104, + 52, + 77 + ], + "id": "Name: gt link\nType: TECHNOLOGY" + }, + { + "entity_name": "text", + "entity_type": "PRODUCT", + "description": "Text is a type of content block that serves as a leaf node within the document structure and is identified as a final node type retained within the nodes of the tree.", + "source_ids": [ + 58, + 52 + ], + "id": "Name: text\nType: PRODUCT" + }, + { + "entity_name": "tables", + "entity_type": "PRODUCT", + "description": "tables are a type of content block serving as a leaf node within the document structure", + "source_ids": [ + 52 + ], + "id": "Name: tables\nType: PRODUCT" + }, + { + "entity_name": "images", + "entity_type": "PRODUCT", + "description": "images are a type of content block serving as a leaf node within the document structure", + "source_ids": [ + 52 + ], + "id": "Name: images\nType: PRODUCT" + }, + { + "entity_name": "section nodes", + "entity_type": "PRODUCT", + "description": "section nodes are hierarchical nodes within the document structure that contain content blocks", + "source_ids": [ + 52 + ], + "id": "Name: section nodes\nType: PRODUCT" + }, + { + "entity_name": "content blocks", + "entity_type": "PRODUCT", + "description": "content blocks are the items text tables images that serve as leaf nodes in the hierarchy", + "source_ids": [ + 52 + ], + "id": "Name: content blocks\nType: PRODUCT" + }, + { + "entity_name": "leaf nodes", + "entity_type": "PRODUCT", + "description": "leaf nodes are the terminal elements in the hierarchical structure containing content blocks", + "source_ids": [ + 52 + ], + "id": "Name: leaf nodes\nType: PRODUCT" + }, + { + "entity_name": "semantic entities", + "entity_type": "CONCEPT", + "description": "semantic entities are the extracted entities grounded within the document s logical hierarchy by gt link", + "source_ids": [ + 52 + ], + "id": "Name: semantic entities\nType: CONCEPT" + }, + { + "entity_name": "4.2 tree construction", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'BookIndex' and the first stage of its construction process, this section details the method for parsing document layouts to establish hierarchical nodes categorized by type.", + "source_ids": [ + 53 + ], + "id": "Name: 4.2 tree construction\nType: SECTION_TITLE" + }, + { + "entity_name": "t", + "entity_type": "TASK_OR_PROBLEM", + "description": "t is a structured hierarchical tree that is the result of transforming a raw document", + "source_ids": [ + 54 + ], + "id": "Name: t\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "raw document", + "entity_type": "PRODUCT", + "description": "raw document is the initial input that undergoes transformation into a structured hierarchical tree", + "source_ids": [ + 54 + ], + "id": "Name: raw document\nType: PRODUCT" + }, + { + "entity_name": "robust layout parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "robust layout parsing is a key step involved in transforming the raw document into a structured hierarchical tree", + "source_ids": [ + 54 + ], + "id": "Name: robust layout parsing\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "intelligent section filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "intelligent section filtering is a key step involved in transforming the raw document into a structured hierarchical tree", + "source_ids": [ + 54 + ], + "id": "Name: intelligent section filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "task or problem", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 54 + ], + "id": "Name: task or problem\nType: UNKNOWN" + }, + { + "entity_name": "4.2.1 layout parsing", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Tree Construction' within the 'BOOKINDEX' chapter, this section details the initial phase of transforming raw documents into structured hierarchical trees using layout analysis and recognition models to identify and organize diverse content blocks.", + "source_ids": [ + 55 + ], + "id": "Name: 4.2.1 layout parsing\nType: SECTION_TITLE" + }, + { + "entity_name": "layout analysis", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A specific technique employed in section 4.2.1 to understand the spatial arrangement of elements within document pages.", + "source_ids": [ + 55 + ], + "id": "Name: layout analysis\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "recognition models", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The computational models utilized in section 4.2.1 to recognize and classify different types of content blocks such as text, tables, and images.", + "source_ids": [ + 55 + ], + "id": "Name: recognition models\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "document d", + "entity_type": "TASK_OR_PROBLEM", + "description": "The input data object (a collection of pages) that serves as the target for processing in section 4.2.1.", + "source_ids": [ + 55 + ], + "id": "Name: document d\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "the output", + "entity_type": "TASK_OR_PROBLEM", + "description": "the output is described as a sequence of primitive", + "source_ids": [ + 56 + ], + "id": "Name: the output\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "primitive", + "entity_type": "CONCEPT", + "description": "primitive is a term used to describe the components of the output sequence", + "source_ids": [ + 56 + ], + "id": "Name: primitive\nType: CONCEPT" + }, + { + "entity_name": "section filtering", + "entity_type": "TASK_OR_PROBLEM", + "description": "section filtering is a phase that processes an initial sequence to identify a document s logically hierarchical structure", + "source_ids": [ + 57 + ], + "id": "Name: section filtering\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "title", + "entity_type": "SECTION_TITLE", + "description": "title refers to blocks identified by layout parsing that require hierarchical level assignment", + "source_ids": [ + 57 + ], + "id": "Name: title\nType: SECTION_TITLE" + }, + { + "entity_name": "text", + "entity_type": "SECTION_TITLE", + "description": "text is a node type used to re classify erroneous title blocks such as descriptive text within images", + "source_ids": [ + 57 + ], + "id": "Name: text\nType: SECTION_TITLE" + }, + { + "entity_name": "image", + "entity_type": "IMAGE", + "description": "An image is a type of block identified during the layout parsing phase, serving as a specific node type that indicates the presence of visual elements requiring VLM-based extraction. It can also refer to a location within a document where descriptive text might be erroneously parsed as a title, and it functions as a filter type used for visual elements.", + "source_ids": [ + 57, + 258, + 59, + 63 + ], + "id": "Name: image\nType: IMAGE" + }, + { + "entity_name": "table", + "entity_type": "TABLE", + "description": "A table is a document element that can refer to borderless table headers, which might be erroneously parsed as a title, or it can serve as a filter type used for tabular data.", + "source_ids": [ + 57, + 258 + ], + "id": "Name: table\nType: TABLE" + }, + { + "entity_name": "b", + "entity_type": "DATASET_OR_CORPUS", + "description": "b represents the candidate subset of blocks selected for llm based analysis", + "source_ids": [ + 57 + ], + "id": "Name: b\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "c", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "c represents the content of the candidates analyzed by the LLM and also denotes explicit constraints such as modal types and page ranges generated during a plan.", + "source_ids": [ + 57, + 102 + ], + "id": "Name: c\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "f", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "f represents the layout features of the candidates analyzed by the llm", + "source_ids": [ + 57 + ], + "id": "Name: f\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "4 2 2", + "entity_type": "SECTION_TITLE", + "description": "4 2 2 is the section identifier for the section filtering phase", + "source_ids": [ + 57 + ], + "id": "Name: 4 2 2\nType: SECTION_TITLE" + }, + { + "entity_name": "b title", + "entity_type": "DATASET_OR_CORPUS", + "description": "b title is a candidate subset of blocks where the type is title selected for llm based analysis", + "source_ids": [ + 57 + ], + "id": "Name: b title\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "l", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "l represents the actual hierarchical level of a block ranging from 1 to infinity", + "source_ids": [ + 57 + ], + "id": "Name: l\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "none", + "entity_type": "SECTION_TITLE", + "description": "none is a value indicating that a block has no hierarchical level", + "source_ids": [ + 57 + ], + "id": "Name: none\nType: SECTION_TITLE" + }, + { + "entity_name": "tree", + "entity_type": "TASK_OR_PROBLEM", + "description": "A tree is a definitive structure constructed from blocks consisting of nodes and edges that represent content and relationships, serving as the data structure on which operators operate.", + "source_ids": [ + 58, + 102 + ], + "id": "Name: tree\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "node set", + "entity_type": "TASK_OR_PROBLEM", + "description": "the node set is composed of all blocks from the filtering and re classification process retaining content and final node types", + "source_ids": [ + 58 + ], + "id": "Name: node set\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "edge set", + "entity_type": "TASK_OR_PROBLEM", + "description": "the edge set represents the parent child nesting relationships within the tree structure", + "source_ids": [ + 58 + ], + "id": "Name: edge set\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "section", + "entity_type": "PRODUCT", + "description": "section is identified as a final node type retained within the nodes of the tree", + "source_ids": [ + 58 + ], + "id": "Name: section\nType: PRODUCT" + }, + { + "entity_name": "table", + "entity_type": "PRODUCT", + "description": "A table is a specific item type being filtered for in the document and is identified as a final node type retained within the nodes of the tree. It is a specific logical type mentioned in the text that requires the preservation of structural semantics.", + "source_ids": [ + 64, + 58, + 251 + ], + "id": "Name: table\nType: PRODUCT" + }, + { + "entity_name": "image", + "entity_type": "PRODUCT", + "description": "image is identified as a final node type retained within the nodes of the tree", + "source_ids": [ + 58 + ], + "id": "Name: image\nType: PRODUCT" + }, + { + "entity_name": "filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "filtering is a process mentioned as part of the generation of blocks for the node set", + "source_ids": [ + 58 + ], + "id": "Name: filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "re classification", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "re classification is a process mentioned alongside filtering in the creation of the node set", + "source_ids": [ + 58 + ], + "id": "Name: re classification\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "hierarchical levels", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "hierarchical levels are determined values used to infer parent child relationships for section nodes", + "source_ids": [ + 58 + ], + "id": "Name: hierarchical levels\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "document order", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "Document order is a sequential arrangement and factor used to assemble nodes into the final tree structure.", + "source_ids": [ + 58, + 59 + ], + "id": "Name: document order\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "parent child nesting relationships", + "entity_type": "TASK_OR_PROBLEM", + "description": "parent child nesting relationships are the specific connections established by the edge set", + "source_ids": [ + 58 + ], + "id": "Name: parent child nesting relationships\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "content", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "content is an attribute retained by each node in the node set", + "source_ids": [ + 58 + ], + "id": "Name: content\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "final node type", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "final node type is an attribute retained by each node in the node set", + "source_ids": [ + 58 + ], + "id": "Name: final node type\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "node", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 58 + ], + "id": "Name: node\nType: UNKNOWN" + }, + { + "entity_name": "layout parsing phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "layout parsing phase is a process that identifies diverse blocks in a document", + "source_ids": [ + 59 + ], + "id": "Name: layout parsing phase\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "title text table", + "entity_type": "PRODUCT", + "description": "title text table is a type of block identified during the layout parsing phase", + "source_ids": [ + 59 + ], + "id": "Name: title text table\nType: PRODUCT" + }, + { + "entity_name": "section filtering phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "section filtering phase is a process where title candidates are analyzed by the llm", + "source_ids": [ + 59 + ], + "id": "Name: section filtering phase\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "method", + "entity_type": "SECTION_TITLE", + "description": "method is a title candidate analyzed during the section filtering phase", + "source_ids": [ + 59 + ], + "id": "Name: method\nType: SECTION_TITLE" + }, + { + "entity_name": "experiment", + "entity_type": "SECTION_TITLE", + "description": "experiment is a title candidate analyzed during the section filtering phase", + "source_ids": [ + 59 + ], + "id": "Name: experiment\nType: SECTION_TITLE" + }, + { + "entity_name": "moe layer", + "entity_type": "SECTION_TITLE", + "description": "moe layer is a title candidate that was erroneously tagged as a title but re classified as a text node", + "source_ids": [ + 59 + ], + "id": "Name: moe layer\nType: SECTION_TITLE" + }, + { + "entity_name": "section nodes", + "entity_type": "SECTION_TITLE", + "description": "section nodes are blocks identified as having a specific level in the document hierarchy", + "source_ids": [ + 59 + ], + "id": "Name: section nodes\nType: SECTION_TITLE" + }, + { + "entity_name": "text node", + "entity_type": "SECTION_TITLE", + "description": "text node is a classification for blocks that do not have a specific level in the document hierarchy", + "source_ids": [ + 59 + ], + "id": "Name: text node\nType: SECTION_TITLE" + }, + { + "entity_name": "final tree structure", + "entity_type": "TASK_OR_PROBLEM", + "description": "final tree structure is the result of assembling filtered and classified nodes based on their levels and order", + "source_ids": [ + 59 + ], + "id": "Name: final tree structure\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "fontsize", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "fontsize is a parameter used to describe the size of text blocks such as 14 or 20", + "source_ids": [ + 59 + ], + "id": "Name: fontsize\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "14", + "entity_type": "MEASUREMENT", + "description": "14 is a numerical value mentioned in the text, potentially representing a measurement or count, and serves as the specific font size value associated with the method and experiment blocks.", + "source_ids": [ + 59, + 219 + ], + "id": "Name: 14\nType: MEASUREMENT" + }, + { + "entity_name": "20", + "entity_type": "MEASUREMENT", + "description": "20 is the specific font size value associated with the moe layer block", + "source_ids": [ + 59 + ], + "id": "Name: 20\nType: MEASUREMENT" + }, + { + "entity_name": "level", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "level is a parameter used to define the hierarchy depth of document nodes", + "source_ids": [ + 59 + ], + "id": "Name: level\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "2", + "entity_type": "MEASUREMENT", + "description": "The value 2 serves multiple roles across different contexts: it is the specific level assigned to method and experiment blocks, represents the speedup factor achieved by BookRag compared to Docetl in query latency, and denotes both the issue number and the volume number of a publication.", + "source_ids": [ + 160, + 199, + 59, + 191 + ], + "id": "Name: 2\nType: MEASUREMENT" + }, + { + "entity_name": "none", + "entity_type": "MEASUREMENT", + "description": "none is the specific level value assigned to the moe layer block indicating no hierarchy level", + "source_ids": [ + 59 + ], + "id": "Name: none\nType: MEASUREMENT" + }, + { + "entity_name": "4", + "entity_type": "MEASUREMENT", + "description": "4 is a numerical value mentioned in the text though its specific context or unit is not provided", + "source_ids": [ + 60 + ], + "id": "Name: 4\nType: MEASUREMENT" + }, + { + "entity_name": "4.3 graph construction", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'BOOKINDEX' and the second stage of the proposed BookIndex construction process, this section details the method for extracting fine-grained entity knowledge from hierarchical tree nodes and refining it using a novel gradient-based entity resolution technique.", + "source_ids": [ + 61 + ], + "id": "Name: 4.3 graph construction\nType: SECTION_TITLE" + }, + { + "entity_name": "tree t", + "entity_type": "TASK_OR_PROBLEM", + "description": "tree t is a structure that is established before proceeding to the next step", + "source_ids": [ + 62 + ], + "id": "Name: tree t\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "knowledge graph g", + "entity_type": "TASK_OR_PROBLEM", + "description": "knowledge graph g is a structure that is populated by extracting and refining entities from the tree nodes", + "source_ids": [ + 62 + ], + "id": "Name: knowledge graph g\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "tree nodes", + "entity_type": "TASK_OR_PROBLEM", + "description": "tree nodes are the components within tree t from which entities are extracted and refined", + "source_ids": [ + 62 + ], + "id": "Name: tree nodes\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "4.3.1 kg construction", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Graph Construction' within the 'BOOKINDEX' chapter, this section details the specific algorithm for populating the Knowledge Graph by iterating through tree nodes and extracting subgraphs based on content modality (text or visual).", + "source_ids": [ + 63 + ], + "id": "Name: 4.3.1 kg construction\nType: SECTION_TITLE" + }, + { + "entity_name": "tree t", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The hierarchical structure previously established that serves as the source of nodes to be processed for graph construction.", + "source_ids": [ + 63 + ], + "id": "Name: tree t\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "vision language model", + "entity_type": "SOFTWARE", + "description": "VLM employed specifically to extract visual knowledge from nodes containing image elements.", + "source_ids": [ + 63 + ], + "id": "Name: vision language model\nType: SOFTWARE" + }, + { + "entity_name": "mapping m", + "entity_type": "EQUATION_OR_FORMULA", + "description": "Mapping m is the final aggregation process defined as v to p n, which links entities to structural locations by constructing a mapping structure that records the origin tree node for every extracted entity.", + "source_ids": [ + 77, + 63 + ], + "id": "Name: mapping m\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula", + "entity_type": "PRODUCT", + "description": "formula is a specific logical type mentioned in the text that requires preservation of structural semantics", + "source_ids": [ + 64 + ], + "id": "Name: formula\nType: PRODUCT" + }, + { + "entity_name": "v table", + "entity_type": "PRODUCT", + "description": "v table is a distinct typed entity representing the table itself created to preserve structural semantics", + "source_ids": [ + 64 + ], + "id": "Name: v table\nType: PRODUCT" + }, + { + "entity_name": "row", + "entity_type": "PRODUCT", + "description": "row is a component of table nodes that is explicitly extracted as a distinct entity", + "source_ids": [ + 64 + ], + "id": "Name: row\nType: PRODUCT" + }, + { + "entity_name": "column", + "entity_type": "PRODUCT", + "description": "column is a component of table nodes that is explicitly extracted as a distinct entity", + "source_ids": [ + 64 + ], + "id": "Name: column\nType: PRODUCT" + }, + { + "entity_name": "header", + "entity_type": "PRODUCT", + "description": "header refers to row and column headers in table nodes that are explicitly extracted as distinct entities", + "source_ids": [ + 64 + ], + "id": "Name: header\nType: PRODUCT" + }, + { + "entity_name": "structural semantics", + "entity_type": "CONCEPT", + "description": "structural semantics refers to the meaning preserved for specific logical types in the described process", + "source_ids": [ + 64 + ], + "id": "Name: structural semantics\nType: CONCEPT" + }, + { + "entity_name": "logical types", + "entity_type": "CONCEPT", + "description": "logical types are categories of entities such as table and formula that require specific handling", + "source_ids": [ + 64 + ], + "id": "Name: logical types\nType: CONCEPT" + }, + { + "entity_name": "node", + "entity_type": "CONCEPT", + "description": "node refers to a specific point in the data structure where content is extracted", + "source_ids": [ + 64 + ], + "id": "Name: node\nType: CONCEPT" + }, + { + "entity_name": "vertex", + "entity_type": "CONCEPT", + "description": "vertex refers to the primary node v table to which other entities are linked", + "source_ids": [ + 64 + ], + "id": "Name: vertex\nType: CONCEPT" + }, + { + "entity_name": "containedin", + "entity_type": "RELATIONSHIP_TYPE", + "description": "containedin is the specific relationship type used to link row and column headers to the table entity", + "source_ids": [ + 64 + ], + "id": "Name: containedin\nType: RELATIONSHIP_TYPE" + }, + { + "entity_name": "4.3.2 gradient-based entity resolution", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Graph Construction' within the 'BOOKINDEX' chapter, this section details a robust Entity Resolution (ER) process designed to identify and merge fragmented conceptual entities in a Knowledge Graph, addressing challenges like abbreviations and co-references.", + "source_ids": [ + 65 + ], + "id": "Name: 4.3.2 gradient-based entity resolution\nType: SECTION_TITLE" + }, + { + "entity_name": "entity resolution", + "entity_type": "TASK_OR_PROBLEM", + "description": "Entity resolution is the task or problem addressed by the prompt in figure 13, serving as a process during which GT Link is refined by merging entities into canonical entities. It addresses the core challenge of identifying and merging fragmented entities caused by abbreviations, co-references, or varied occurrences to ensure a well-constructed Knowledge Graph.", + "source_ids": [ + 65, + 284, + 77 + ], + "id": "Name: entity resolution\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "er methods", + "entity_type": "TASK_OR_PROBLEM", + "description": "er methods are conventional methods for entity resolution that are computationally expensive", + "source_ids": [ + 66 + ], + "id": "Name: er methods\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "dirty er", + "entity_type": "TASK_OR_PROBLEM", + "description": "dirty er is a term used to describe batch processing across multiple data sources for entity resolution", + "source_ids": [ + 66 + ], + "id": "Name: dirty er\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "a", + "entity_type": "TASK_OR_PROBLEM", + "description": "a is an example entity used to illustrate the merging of multiple entities in the entity resolution process", + "source_ids": [ + 66 + ], + "id": "Name: a\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "b", + "entity_type": "TASK_OR_PROBLEM", + "description": "b is an example entity used to illustrate the merging of multiple entities in the entity resolution process", + "source_ids": [ + 66 + ], + "id": "Name: b\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "c", + "entity_type": "TASK_OR_PROBLEM", + "description": "c is an example entity used to illustrate the merging of multiple entities in the entity resolution process", + "source_ids": [ + 66 + ], + "id": "Name: c\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "12", + "entity_type": "PUBLICATION_VENUE", + "description": "12 is a citation reference mentioned in the text regarding entity resolution methods", + "source_ids": [ + 66 + ], + "id": "Name: 12\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "a b", + "entity_type": "TASK_OR_PROBLEM", + "description": "a b is a specific pairwise comparison example between entities a and b", + "source_ids": [ + 66 + ], + "id": "Name: a b\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "a c", + "entity_type": "TASK_OR_PROBLEM", + "description": "a c is a specific pairwise comparison example between entities a and c", + "source_ids": [ + 66 + ], + "id": "Name: a c\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "b c", + "entity_type": "TASK_OR_PROBLEM", + "description": "b c is a specific pairwise comparison example between entities b and c", + "source_ids": [ + 66 + ], + "id": "Name: b c\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "o n 2", + "entity_type": "MEASUREMENT", + "description": "o n 2 represents the quadratic complexity of the number of pairwise comparisons required", + "source_ids": [ + 66 + ], + "id": "Name: o n 2\nType: MEASUREMENT" + }, + { + "entity_name": "gradient based er method", + "entity_type": "TECHNOLOGY", + "description": "a gradient based entity resolution method employed to process a single document incrementally", + "source_ids": [ + 67 + ], + "id": "Name: gradient based er method\nType: TECHNOLOGY" + }, + { + "entity_name": "clean er", + "entity_type": "TASK_OR_PROBLEM", + "description": "a simplified version of the entity resolution task used as the basis for the incremental process", + "source_ids": [ + 67 + ], + "id": "Name: clean er\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "database", + "entity_type": "SOFTWARE", + "description": "a storage system containing already processed entities against which new entities are compared", + "source_ids": [ + 67 + ], + "id": "Name: database\nType: SOFTWARE" + }, + { + "entity_name": "top k most relevant candidates", + "entity_type": "EVALUATION_METRIC", + "description": "a set of the most relevant entities used for reranking a new entity in the incremental process", + "source_ids": [ + 67 + ], + "id": "Name: top k most relevant candidates\nType: EVALUATION_METRIC" + }, + { + "entity_name": "entity", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "a single new entity being extracted in the incremental process", + "source_ids": [ + 67 + ], + "id": "Name: entity\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "quadratic batch problem", + "entity_type": "TASK_OR_PROBLEM", + "description": "the original complex problem that the incremental method transforms into a simpler task", + "source_ids": [ + 67 + ], + "id": "Name: quadratic batch problem\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "repeated lookup task", + "entity_type": "TASK_OR_PROBLEM", + "description": "the simplified task resulting from transforming the quadratic batch problem", + "source_ids": [ + 67 + ], + "id": "Name: repeated lookup task\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "scoring patterns", + "entity_type": "EVALUATION_METRIC", + "description": "distinct observable patterns yielded by the incremental process when reranking entities", + "source_ids": [ + 67 + ], + "id": "Name: scoring patterns\nType: EVALUATION_METRIC" + }, + { + "entity_name": "incremental process", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 67 + ], + "id": "Name: incremental process\nType: UNKNOWN" + }, + { + "entity_name": "5", + "entity_type": "MEASUREMENT", + "description": "5 is a numerical value mentioned in the text potentially representing a count score or measurement", + "source_ids": [ + 68 + ], + "id": "Name: 5\nType: MEASUREMENT" + }, + { + "entity_name": "algorithm 1", + "entity_type": "TASK_OR_PROBLEM", + "description": "Algorithm 1 is a gradient-based entity resolution method and the entity resolution process described in the text.", + "source_ids": [ + 75, + 69 + ], + "id": "Name: algorithm 1\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "kg g", + "entity_type": "TASK_OR_PROBLEM", + "description": "kg g is a knowledge graph that serves as the input for the described process", + "source_ids": [ + 70 + ], + "id": "Name: kg g\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "new entity v n", + "entity_type": "TASK_OR_PROBLEM", + "description": "new entity v n is a new entity being introduced into the system", + "source_ids": [ + 70 + ], + "id": "Name: new entity v n\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "rerank model r", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "rerank model r is a model used to rerank entities in the process", + "source_ids": [ + 70 + ], + "id": "Name: rerank model r\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "entity vector database db", + "entity_type": "DATASET_OR_CORPUS", + "description": "entity vector database db is a database storing entity vectors", + "source_ids": [ + 70 + ], + "id": "Name: entity vector database db\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "vector search number top k", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "vector search number top k is a parameter defining the number of top results for vector search", + "source_ids": [ + 70 + ], + "id": "Name: vector search number top k\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "threshold of gradient g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "threshold of gradient g is a threshold value used for gradient calculations", + "source_ids": [ + 70 + ], + "id": "Name: threshold of gradient g\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "kg", + "entity_type": "TASK_OR_PROBLEM", + "description": "kg is the abbreviation for the knowledge graph mentioned as input, referring to the system where entities are processed, compared, and merged.", + "source_ids": [ + 76, + 70 + ], + "id": "Name: kg\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "g", + "entity_type": "TASK_OR_PROBLEM", + "description": "g is a specific instance or variable name for the knowledge graph and serves as a data structure or set that is updated and returned at the end of the process.", + "source_ids": [ + 75, + 70 + ], + "id": "Name: g\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "v", + "entity_type": "TASK_OR_PROBLEM", + "description": "v is the variable representing the new entity", + "source_ids": [ + 70 + ], + "id": "Name: v\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "n", + "entity_type": "TASK_OR_PROBLEM", + "description": "In the context of the task or problem labeled n, this identifier serves as a subscript or reference to a new entity denoted as v, while also representing the set of nodes within the document structure.", + "source_ids": [ + 104, + 70 + ], + "id": "Name: n\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "r", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "r is the specific variable name for the rerank model", + "source_ids": [ + 70 + ], + "id": "Name: r\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "db", + "entity_type": "DATASET_OR_CORPUS", + "description": "db is the specific variable name for the entity vector database", + "source_ids": [ + 70 + ], + "id": "Name: db\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "top k", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "top k is the specific variable name for the vector search number", + "source_ids": [ + 70 + ], + "id": "Name: top k\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "g is a parameter or variable representing the threshold of gradient, specifically used to check for score drops, and it serves as a component within the bookindex data structure, which contains relevant entities and is organized with fields such as b, t, g, and m.", + "source_ids": [ + 88, + 75, + 85, + 70 + ], + "id": "Name: g\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "vector search", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: vector search\nType: UNKNOWN" + }, + { + "entity_name": "db", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: db\nType: UNKNOWN" + }, + { + "entity_name": "search", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: search\nType: UNKNOWN" + }, + { + "entity_name": "r", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: r\nType: UNKNOWN" + }, + { + "entity_name": "e", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: e\nType: UNKNOWN" + }, + { + "entity_name": "sort", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: sort\nType: UNKNOWN" + }, + { + "entity_name": "gradient select", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: gradient select\nType: UNKNOWN" + }, + { + "entity_name": "top k", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: top k\nType: UNKNOWN" + }, + { + "entity_name": "v n", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: v n\nType: UNKNOWN" + }, + { + "entity_name": "e c", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: e c\nType: UNKNOWN" + }, + { + "entity_name": "v cn", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: v cn\nType: UNKNOWN" + }, + { + "entity_name": "s", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: s\nType: UNKNOWN" + }, + { + "entity_name": "c", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: c\nType: UNKNOWN" + }, + { + "entity_name": "score", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: score\nType: UNKNOWN" + }, + { + "entity_name": "s 0", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: s 0\nType: UNKNOWN" + }, + { + "entity_name": "sel", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ], + "id": "Name: sel\nType: UNKNOWN" + }, + { + "entity_name": "case a", + "entity_type": "TASK_OR_PROBLEM", + "description": "Case A is a scenario involving a new conceptual entity where the LLM helps differentiate it from a set identified by an algorithm. This situation arises when all candidates pass the gradient check, indicating that the scores lacked discriminative power.", + "source_ids": [ + 72, + 74, + 75 + ], + "id": "Name: case a\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "new entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "A new entity is a conceptual entity, often recently extracted from text or representing a unique concept in a knowledge graph, that requires evaluation for relevance against existing entities. This task involves analyzing the entity's name, type, and description to determine if it can be matched with candidate entities, a process that demands strong evidence to confirm its distinctiveness and validity.", + "source_ids": [ + 72, + 265, + 274, + 262 + ], + "id": "Name: new entity\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "existing entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "existing entities are the set of entities against which the relevance of a new conceptual entity is measured", + "source_ids": [ + 72 + ], + "id": "Name: existing entities\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "relevance scores", + "entity_type": "EVALUATION_METRIC", + "description": "relevance scores are the metrics used to measure the relationship between the new entity and existing entities", + "source_ids": [ + 72 + ], + "id": "Name: relevance scores\nType: EVALUATION_METRIC" + }, + { + "entity_name": "gradient", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "gradient refers to a mathematical pattern or value that is absent in the relevance scores for new entities", + "source_ids": [ + 72 + ], + "id": "Name: gradient\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "discriminative pattern", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "discriminative pattern refers to a distinguishing feature or trend that is not present in the relevance scores for new entities", + "source_ids": [ + 72 + ], + "id": "Name: discriminative pattern\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "case b", + "entity_type": "TASK_OR_PROBLEM", + "description": "Case b refers to a scenario involving an existing entity where an alias is being evaluated for relevance. It is characterized by a sharp decline that the gradient-based ER algorithm is designed to detect, occurring specifically when a gradient is found signaling a sharp score drop.", + "source_ids": [ + 73, + 74, + 75 + ], + "id": "Name: case b\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "reranker", + "entity_type": "TECHNOLOGY", + "description": "the reranker is a system or component described as having inherent discriminative limitations", + "source_ids": [ + 73 + ], + "id": "Name: reranker\nType: TECHNOLOGY" + }, + { + "entity_name": "existing entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "existing entity refers to an entity that is already present in the system being discussed", + "source_ids": [ + 73 + ], + "id": "Name: existing entity\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "alias", + "entity_type": "CONCEPT", + "description": "An alias is a term used to describe an alternative name for an existing entity and is considered a valid form of similarity for entity names alongside direct abbreviations.", + "source_ids": [ + 73, + 267 + ], + "id": "Name: alias\nType: CONCEPT" + }, + { + "entity_name": "scores", + "entity_type": "EVALUATION_METRIC", + "description": "scores are the numerical values indicating the relevance of an alias to a true match", + "source_ids": [ + 73 + ], + "id": "Name: scores\nType: EVALUATION_METRIC" + }, + { + "entity_name": "true match", + "entity_type": "CONCEPT", + "description": "true match refers to the correct entity that an alias is being compared against", + "source_ids": [ + 73 + ], + "id": "Name: true match\nType: CONCEPT" + }, + { + "entity_name": "equivalent aliases", + "entity_type": "CONCEPT", + "description": "equivalent aliases refers to a small set of aliases that are considered the same as the true match", + "source_ids": [ + 73 + ], + "id": "Name: equivalent aliases\nType: CONCEPT" + }, + { + "entity_name": "gradient", + "entity_type": "MEASUREMENT", + "description": "gradient refers to the sharp decline in relevance scores mentioned in the text", + "source_ids": [ + 73 + ], + "id": "Name: gradient\nType: MEASUREMENT" + }, + { + "entity_name": "irrelevant entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "irrelevant entities are the entities that follow the sharp decline in relevance scores", + "source_ids": [ + 73 + ], + "id": "Name: irrelevant entities\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "gradient based er algorithm", + "entity_type": "TECHNOLOGY", + "description": "the gradient based er algorithm is a method designed to detect sharp declines characteristic of case b and isolate high relevance sets", + "source_ids": [ + 74 + ], + "id": "Name: gradient based er algorithm\nType: TECHNOLOGY" + }, + { + "entity_name": "high relevance set", + "entity_type": "DATASET_OR_CORPUS", + "description": "the high relevance set is a collection of entities isolated by the gradient based er algorithm for further processing", + "source_ids": [ + 74 + ], + "id": "Name: high relevance set\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "similar entities", + "entity_type": "DATASET_OR_CORPUS", + "description": "similar entities are a group of items identified within the high relevance set that require finer grained distinction", + "source_ids": [ + 74 + ], + "id": "Name: similar entities\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "v n", + "entity_type": "TASK_OR_PROBLEM", + "description": "v n is a new entity being processed in the entity resolution process", + "source_ids": [ + 75 + ], + "id": "Name: v n\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "e c", + "entity_type": "TASK_OR_PROBLEM", + "description": "e c represents the top k candidates retrieved for the new entity v n", + "source_ids": [ + 75 + ], + "id": "Name: e c\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "db", + "entity_type": "TASK_OR_PROBLEM", + "description": "db is the vector database from which candidates are retrieved", + "source_ids": [ + 75 + ], + "id": "Name: db\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "r", + "entity_type": "TASK_OR_PROBLEM", + "description": "r is the reranker used to re rank candidates against v n", + "source_ids": [ + 75 + ], + "id": "Name: r\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "s", + "entity_type": "TASK_OR_PROBLEM", + "description": "s represents the scores assigned to the candidates", + "source_ids": [ + 75 + ], + "id": "Name: s\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "sel", + "entity_type": "TASK_OR_PROBLEM", + "description": "sel is the selection set initialized with the top scoring candidate", + "source_ids": [ + 75 + ], + "id": "Name: sel\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "v sel", + "entity_type": "TASK_OR_PROBLEM", + "description": "v sel is the canonical entity selected from the selection set sel", + "source_ids": [ + 75 + ], + "id": "Name: v sel\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "lines 1 3", + "entity_type": "SECTION_TITLE", + "description": "lines 1 3 describe the initial retrieval and reranking steps of the algorithm", + "source_ids": [ + 75 + ], + "id": "Name: lines 1 3\nType: SECTION_TITLE" + }, + { + "entity_name": "line 4", + "entity_type": "SECTION_TITLE", + "description": "line 4 describes the initialization of the selection set and the initial score", + "source_ids": [ + 75 + ], + "id": "Name: line 4\nType: SECTION_TITLE" + }, + { + "entity_name": "lines 5 8", + "entity_type": "SECTION_TITLE", + "description": "lines 5 8 describe the iteration through remaining candidates and the gradient threshold check", + "source_ids": [ + 75 + ], + "id": "Name: lines 5 8\nType: SECTION_TITLE" + }, + { + "entity_name": "lines 7 8", + "entity_type": "SECTION_TITLE", + "description": "lines 7 8 detail the logic for adding candidates to the selection set and updating scores", + "source_ids": [ + 75 + ], + "id": "Name: lines 7 8\nType: SECTION_TITLE" + }, + { + "entity_name": "line 8", + "entity_type": "SECTION_TITLE", + "description": "line 8 describes the condition where the loop breaks upon detecting a sharp score drop", + "source_ids": [ + 75 + ], + "id": "Name: line 8\nType: SECTION_TITLE" + }, + { + "entity_name": "lines 9 14", + "entity_type": "SECTION_TITLE", + "description": "lines 9 14 describe the final decision making logic of the algorithm", + "source_ids": [ + 75 + ], + "id": "Name: lines 9 14\nType: SECTION_TITLE" + }, + { + "entity_name": "line 9 10", + "entity_type": "SECTION_TITLE", + "description": "lines 9 10 describe the action taken in case a where a new entity is added", + "source_ids": [ + 75 + ], + "id": "Name: line 9 10\nType: SECTION_TITLE" + }, + { + "entity_name": "lines 12 14", + "entity_type": "SECTION_TITLE", + "description": "lines 12 14 describe the merging of the new entity with the canonical entity in case b", + "source_ids": [ + 75 + ], + "id": "Name: lines 12 14\nType: SECTION_TITLE" + }, + { + "entity_name": "line 13", + "entity_type": "SECTION_TITLE", + "description": "line 13 describes the use of an llm to select a canonical entity when multiple aliases exist", + "source_ids": [ + 75 + ], + "id": "Name: line 13\nType: SECTION_TITLE" + }, + { + "entity_name": "line 15", + "entity_type": "SECTION_TITLE", + "description": "line 15 describes the return of the updated g and db structures", + "source_ids": [ + 75 + ], + "id": "Name: line 15\nType: SECTION_TITLE" + }, + { + "entity_name": "score", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The score is a parameter or variable updated during iteration to track the current score value, and it also serves as the Y-axis label indicating the numerical value being measured in both charts.", + "source_ids": [ + 178, + 75 + ], + "id": "Name: score\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "v c", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v c represents the current candidate being evaluated in the iteration", + "source_ids": [ + 75 + ], + "id": "Name: v c\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "e 9", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 9 is a new entity being processed and compared against existing entities in the kg", + "source_ids": [ + 76 + ], + "id": "Name: e 9\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "e 6", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 6 is an existing entity in the kg that shows a sharp decline in similarity with e 9", + "source_ids": [ + 76 + ], + "id": "Name: e 6\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "e 8", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 8 is an existing entity in the kg that shows a sharp decline in similarity with e 9", + "source_ids": [ + 76 + ], + "id": "Name: e 8\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "e 5", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 5 is an existing entity in the kg that shows a sharp decline in similarity with e 9", + "source_ids": [ + 76 + ], + "id": "Name: e 5\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "e 7", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 7 is the final merged entity resulting from the consolidation of e 9 and e 7", + "source_ids": [ + 76 + ], + "id": "Name: e 7\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "similarity curve", + "entity_type": "IMAGE", + "description": "the similarity curve is a visual depiction orange line showing the similarity levels between entities", + "source_ids": [ + 76 + ], + "id": "Name: similarity curve\nType: IMAGE" + }, + { + "entity_name": "gradient based selection process", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the gradient based selection process is the method used to identify high confidence matches between entities", + "source_ids": [ + 76 + ], + "id": "Name: gradient based selection process\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "orange line", + "entity_type": "IMAGE", + "description": "the orange line is a specific visual element within the similarity curve mentioned in the text", + "source_ids": [ + 76 + ], + "id": "Name: orange line\nType: IMAGE" + }, + { + "entity_name": "unique high confidence match", + "entity_type": "CONCEPT", + "description": "a unique high confidence match is the result of the gradient based selection process identifying e 7 for e 9", + "source_ids": [ + 76 + ], + "id": "Name: unique high confidence match\nType: CONCEPT" + }, + { + "entity_name": "consolidated information", + "entity_type": "CONCEPT", + "description": "consolidated information refers to the enriched data resulting from merging entities in the kg", + "source_ids": [ + 76 + ], + "id": "Name: consolidated information\nType: CONCEPT" + }, + { + "entity_name": "kg construction phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "kg construction phase is a specific stage described in the text where origin tree nodes are recorded for extracted entities", + "source_ids": [ + 77 + ], + "id": "Name: kg construction phase\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "origin tree node", + "entity_type": "HARDWARE", + "description": "origin tree node is a structural location recorded for every newly extracted entity", + "source_ids": [ + 77 + ], + "id": "Name: origin tree node\nType: HARDWARE" + }, + { + "entity_name": "canonical entity", + "entity_type": "CONCEPT", + "description": "canonical entity is the target of merging during entity resolution receiving updated origin node sets", + "source_ids": [ + 77 + ], + "id": "Name: canonical entity\nType: CONCEPT" + }, + { + "entity_name": "g", + "entity_type": "CONCEPT", + "description": "g is a component of the bookindex structure b", + "source_ids": [ + 77 + ], + "id": "Name: g\nType: CONCEPT" + }, + { + "entity_name": "t", + "entity_type": "CONCEPT", + "description": "t is a component of the bookindex structure b and represents the set of structural locations nodes", + "source_ids": [ + 77 + ], + "id": "Name: t\nType: CONCEPT" + }, + { + "entity_name": "v i", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v i represents a newly extracted entity for which an origin tree node is recorded", + "source_ids": [ + 77 + ], + "id": "Name: v i\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "v n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v n represents an entity that is merged into a canonical entity during entity resolution", + "source_ids": [ + 77 + ], + "id": "Name: v n\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "v sel", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v sel represents the canonical entity into which v n is merged", + "source_ids": [ + 77 + ], + "id": "Name: v sel\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "p n", + "entity_type": "MATHEMATICAL_CONCEPT", + "description": "p n represents the power set of nodes n used in the definition of the mapping m", + "source_ids": [ + 77 + ], + "id": "Name: p n\nType: MATHEMATICAL_CONCEPT" + }, + { + "entity_name": "m", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 77 + ], + "id": "Name: m\nType: UNKNOWN" + }, + { + "entity_name": "5 agent-based retrieval", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section details the proposed agent-based query method inspired by Information Foraging Theory, which dynamically classifies queries and employs a tailored retrieval workflow.", + "source_ids": [ + 78 + ], + "id": "Name: 5 agent-based retrieval\nType: SECTION_TITLE" + }, + { + "entity_name": "agent-based query method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the specific retrieval strategy introduced in section 5, which utilizes agents to dynamically classify queries based on Information Foraging Theory.", + "source_ids": [ + 78 + ], + "id": "Name: agent-based query method\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "bookindex", + "entity_type": "DATABASE", + "description": "bookindex is the data structure or system on which bookrag executes operations for document queries", + "source_ids": [ + 79 + ], + "id": "Name: bookindex\nType: DATABASE" + }, + { + "entity_name": "agent based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Agent based planning is a method used for planning that serves as a core mechanism in Bookrag to formulate strategies for operations and acts as a component of the workflow that classifies queries. It is also a mechanism assessed for its necessity in the system's performance, and its removal in a specific scenario leads to the adoption of a default workflow.", + "source_ids": [ + 166, + 172, + 79, + 157, + 93 + ], + "id": "Name: agent based planning\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "structured execution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "structured execution is a core mechanism in bookrag that includes the retrieval process based on ift and generation principles", + "source_ids": [ + 79 + ], + "id": "Name: structured execution\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "modal type filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "modal type filtering is an operation mentioned as necessary for addressing complex real world document queries", + "source_ids": [ + 79 + ], + "id": "Name: modal type filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "semantic selection", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "semantic selection is an operation mentioned as necessary for addressing complex real world document queries", + "source_ids": [ + 79 + ], + "id": "Name: semantic selection\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "multi hop reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "multi hop reasoning is an operation mentioned as necessary for addressing complex real world document queries", + "source_ids": [ + 79 + ], + "id": "Name: multi hop reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "generation is a process included within the structured execution mechanism of bookrag", + "source_ids": [ + 79 + ], + "id": "Name: generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "real world document queries", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 79 + ], + "id": "Name: real world document queries\nType: UNKNOWN" + }, + { + "entity_name": "5.1 overall workflow", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Agent-Based Retrieval', this section introduces the general operational flow of the BookRAG system, outlining how it intelligently plans and executes operations on the BookIndex to handle complex document queries.", + "source_ids": [ + 80 + ], + "id": "Name: 5.1 overall workflow\nType: SECTION_TITLE" + }, + { + "entity_name": "figure 3", + "entity_type": "IMAGE", + "description": "Figure 3 is an illustration depicting the general workflow of agent-based retrieval in BookRag.", + "source_ids": [ + 81, + 83 + ], + "id": "Name: figure 3\nType: IMAGE" + }, + { + "entity_name": "three stage pipeline", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the three stage pipeline is the structure of the workflow used to address users queries", + "source_ids": [ + 81 + ], + "id": "Name: three stage pipeline\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "agent based planning", + "entity_type": "TASK_OR_PROBLEM", + "description": "Agent based planning is a process component within the agent based retrieval workflow of BookRag, serving as a stage that involves classification and planning for queries.", + "source_ids": [ + 82, + 83 + ], + "id": "Name: agent based planning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "classification plan", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "classification plan is the specific stage within agent based planning aimed at distinguishing query types", + "source_ids": [ + 82 + ], + "id": "Name: classification plan\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "transformer", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "transformer is a model architecture mentioned as an example in a query regarding long range dependencies", + "source_ids": [ + 82 + ], + "id": "Name: transformer\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "rnns", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "rnns are model architectures mentioned as an example in a query regarding long range dependencies", + "source_ids": [ + 82 + ], + "id": "Name: rnns\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "bookindex", + "entity_type": "DATASET_OR_CORPUS", + "description": "Bookindex is a dataset or corpus that serves as a predefined set of operators used to generate plans for retrieval and generation strategies. It functions as a data structure, represented as b t g m, which is navigated during the retrieval process, including by the system known as bookrag.", + "source_ids": [ + 88, + 82, + 85 + ], + "id": "Name: bookindex\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "operators plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "an operators plan is generated to guide retrieval and generation strategies", + "source_ids": [ + 82 + ], + "id": "Name: operators plan\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "Retrieval is a task or problem area where errors are identified as the dominant failure mode. It functions as a strategy guided by an operator's plan and serves as a process component within the agent-based retrieval workflow of BookRag. In the context of graph-based RAG methods, retrieval is the process performed after extracting textual content, while in other contexts, it refers to the effectiveness of retrieving information, which is evaluated. Additionally, retrieval involves the process of finding evidence, a task that is improved by layout parsing.", + "source_ids": [ + 82, + 83, + 147, + 151, + 152, + 185 + ], + "id": "Name: retrieval\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "Generation is a strategy guided by the operators plan and serves as a process component within the agent-based retrieval workflow of Bookrag. It is the generative component integrated into the structured execution workflow, where both selection paths proceed to this stage. As a task or problem area, generation involves the process of creating output, which is made accurate by Bookrag, and it is notable as the second most common failure mode where errors are identified.", + "source_ids": [ + 82, + 115, + 83, + 152, + 185, + 123 + ], + "id": "Name: generation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "agent based retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "agent based retrieval is a workflow containing planning retrieval and generation processes used in bookrag", + "source_ids": [ + 83 + ], + "id": "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "Workflow refers to the general process flow of agent-based retrieval in BookRag and is defined as the generated sequence of operations executed by BookRag.", + "source_ids": [ + 83, + 124 + ], + "id": "Name: workflow\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "planning", + "entity_type": "TASK_OR_PROBLEM", + "description": "Planning is a specific step within the agent-based retrieval process where a plan is formulated to solve the query, and it represents the task or problem component that is removed in the described scenario.", + "source_ids": [ + 83, + 166, + 94 + ], + "id": "Name: planning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "generation processes", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation processes are a component of the agent based retrieval workflow in bookrag", + "source_ids": [ + 83 + ], + "id": "Name: generation processes\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "cref='#/texts/89'", + "entity_type": "IMAGE", + "description": "A flowchart diagram illustrating a three-stage process involving planning, retrieval, and generation to answer a question.", + "source_ids": [ + 84 + ], + "id": "Name: cref='#/texts/89'\nType: IMAGE" + }, + { + "entity_name": "question", + "entity_type": "TASK_OR_PROBLEM", + "description": "A question serves as the input trigger for the system, often represented by an icon of a person with a question mark. It is recognized as a source of key entities used to identify information scents and functions as the item that needs to be answered in a single hop task.", + "source_ids": [ + 243, + 84, + 125 + ], + "id": "Name: question\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "agent-based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Agent-based planning is a methodology where an agent formulates strategies to handle complex retrieval tasks involving modal filtering and multi-hop reasoning. It serves as the first stage of a process that manages classification and planning tasks, functioning as a strategy where operators are selected to decompose or handle specific queries.", + "source_ids": [ + 84, + 182, + 87 + ], + "id": "Name: agent-based planning\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "retrieval process", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The retrieval process is the second stage of the overall procedure, which employs scent or filter-based mechanisms to retrieve information. It specifically refers to the mechanism for retrieving information from the BookIndex as described in section 5.3.", + "source_ids": [ + 123, + 84 + ], + "id": "Name: retrieval process\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "generation process", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The third stage of the process, responsible for analysis and merging data to form the output.", + "source_ids": [ + 84 + ], + "id": "Name: generation process\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "retrieval process", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval process is a stage guided by an operator plan that executes scent filter based retrieval", + "source_ids": [ + 85 + ], + "id": "Name: retrieval process\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "scent filter based retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "scent filter based retrieval is the specific method executed during the retrieval process to find information", + "source_ids": [ + 85 + ], + "id": "Name: scent filter based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "t", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "t is a component of the bookindex data structure, which includes the elements b, t, g, and m.", + "source_ids": [ + 88, + 85 + ], + "id": "Name: t\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "operator plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "An operator plan is the guiding document or set of instructions for the retrieval process, representing the final task of an agent to generate an executable plan after classifying a query. It consists of the specific sequence of operators chosen to solve the problem, such as Extract, Select, Reason, Skyline, and Map.", + "source_ids": [ + 112, + 85, + 94 + ], + "id": "Name: operator plan\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "modal type", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "modal type is a specific filter used to refine the selection of information during retrieval", + "source_ids": [ + 85 + ], + "id": "Name: modal type\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "relevant entities", + "entity_type": "DATASET_OR_CORPUS", + "description": "relevant entities are the items found in g that are followed during scent based retrieval", + "source_ids": [ + 85 + ], + "id": "Name: relevant entities\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "information blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "information blocks are the highly relevant units of data retrieved by bookrag", + "source_ids": [ + 85 + ], + "id": "Name: information blocks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "generation process", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation process is the final stage where retrieved information is synthesized and analyzed to formulate a coherent response", + "source_ids": [ + 86 + ], + "id": "Name: generation process\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "analysis merging", + "entity_type": "TASK_OR_PROBLEM", + "description": "analysis merging is the specific activity within the generation stage that synthesizes fragmented evidence", + "source_ids": [ + 86 + ], + "id": "Name: analysis merging\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "retrieved information", + "entity_type": "DATASET_OR_CORPUS", + "description": "retrieved information refers to the data collected and brought into the generation stage for processing", + "source_ids": [ + 86 + ], + "id": "Name: retrieved information\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "fragmented pieces of evidence", + "entity_type": "DATASET_OR_CORPUS", + "description": "fragmented pieces of evidence are the specific incomplete data items that are synthesized during the process", + "source_ids": [ + 86 + ], + "id": "Name: fragmented pieces of evidence\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "coherent response", + "entity_type": "PRODUCT", + "description": "coherent response is the final output formulated by the generation stage after analysis", + "source_ids": [ + 86 + ], + "id": "Name: coherent response\nType: PRODUCT" + }, + { + "entity_name": "5.2 agent-based planning", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Agent-Based Retrieval' (Section 5), this section details the strategy formulation mechanism within the BookRAG framework, explaining how an agent intelligently plans operations for complex document queries.", + "source_ids": [ + 87 + ], + "id": "Name: 5.2 agent-based planning\nType: SECTION_TITLE" + }, + { + "entity_name": "formulator", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The formulator is one of four types of operators defined to support flexible retrieval in BookRag and is one of the four operator types depicted in the BookRag operator library.", + "source_ids": [ + 88, + 93 + ], + "id": "Name: formulator\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "selector", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "Selector is one of four types of operators defined to support flexible retrieval in BookRag and is one of the four operator types depicted in the BookRag operator library.", + "source_ids": [ + 88, + 93 + ], + "id": "Name: selector\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "reasoner", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "Reasoner is one of the four operator types defined in the BookRag operator library to support flexible retrieval.", + "source_ids": [ + 88, + 93 + ], + "id": "Name: reasoner\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "synthesizer", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The synthesizer is one of four operator types defined within the BookRag operator library to support flexible retrieval.", + "source_ids": [ + 88, + 93 + ], + "id": "Name: synthesizer\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "agent", + "entity_type": "TASK_OR_PROBLEM", + "description": "The agent is an entity that performs the first step of the sequential process in BookRAG and employs operators for diverse query categories.", + "source_ids": [ + 88, + 97 + ], + "id": "Name: agent\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "query categories", + "entity_type": "TASK_OR_PROBLEM", + "description": "Query categories are specific requirements that BookRags adapts to using its operators, representing the diverse groups of queries for which the agent employs these operators.", + "source_ids": [ + 88, + 97 + ], + "id": "Name: query categories\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "execution pipelines", + "entity_type": "TASK_OR_PROBLEM", + "description": "execution pipelines are formed by combining operators to support flexible retrieval", + "source_ids": [ + 88 + ], + "id": "Name: execution pipelines\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "adjustable parameters", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "adjustable parameters are attributes of the execution pipelines that can be configured", + "source_ids": [ + 88 + ], + "id": "Name: adjustable parameters\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "table 2", + "entity_type": "TABLE", + "description": "Table 2 is a reference in the text that lists and defines three common query categories addressed in BookRags.", + "source_ids": [ + 96, + 89 + ], + "id": "Name: table 2\nType: TABLE" + }, + { + "entity_name": "table: cref='#/texts/95'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/95'", + "source_ids": [ + 90 + ], + "id": "Name: table: cref='#/texts/95'...\nType: TABLE" + }, + { + "entity_name": "6", + "entity_type": "MEASUREMENT", + "description": "6 is a numerical value mentioned in the text, potentially representing a count or measurement, and specifically serves as the issue number of the journal ACM Computing Surveys where the paper was published.", + "source_ids": [ + 202, + 91 + ], + "id": "Name: 6\nType: MEASUREMENT" + }, + { + "entity_name": "operator set", + "entity_type": "TASK_OR_PROBLEM", + "description": "operator set is a task or problem mentioned in the text likely referring to a specific set of operators in a technical context", + "source_ids": [ + 92 + ], + "id": "Name: operator set\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "figure 4", + "entity_type": "IMAGE", + "description": "Figure 4 is a visual element referenced in the text, specifically part A, that depicts the BookRAG operator library along with an execution example.", + "source_ids": [ + 97, + 93 + ], + "id": "Name: figure 4\nType: IMAGE" + }, + { + "entity_name": "bookrag operator library", + "entity_type": "SOFTWARE", + "description": "the bookrag operator library is a software component containing four operator types", + "source_ids": [ + 93 + ], + "id": "Name: bookrag operator library\nType: SOFTWARE" + }, + { + "entity_name": "mmlongbench dataset", + "entity_type": "DATASET_OR_CORPUS", + "description": "the mmlongbench dataset is the source of the execution example shown in the text", + "source_ids": [ + 93 + ], + "id": "Name: mmlongbench dataset\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "single hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "Single hop is a type of query and task where an agent first attempts to extract an entity, often used to evaluate the performance of systems like BookRag and in QA performance breakdowns. It refers to a specific query case where the reasoning space is significantly reduced, such as from 134 to 24 nodes, and is characterized by the ability to answer a question by retrieving information from a single location, with execution traces often demonstrated to illustrate its mechanics.", + "source_ids": [ + 135, + 177, + 115, + 243, + 179, + 186, + 93 + ], + "id": "Name: single hop\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "operator", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "operator is a general term for the components formulator selector reasoner synthesizer within the bookrag system", + "source_ids": [ + 93 + ], + "id": "Name: operator\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "execution trace", + "entity_type": "TASK_OR_PROBLEM", + "description": "execution trace is the step by step record of the agent based planning and operator execution shown in the text", + "source_ids": [ + 93 + ], + "id": "Name: execution trace\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "step by step operator execution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "step by step operator execution is the method of executing operators demonstrated in the text", + "source_ids": [ + 93 + ], + "id": "Name: step by step operator execution\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "operator-set", + "entity_type": "IMAGE", + "description": "A diagram illustrating a framework for processing queries, divided into an 'Operators' section and an 'Execution example' section.", + "source_ids": [ + 94 + ], + "id": "Name: operator-set\nType: IMAGE" + }, + { + "entity_name": "extract", + "entity_type": "TASK_OR_PROBLEM", + "description": "The initial step in the operator set where questions are decomposed to identify entities.", + "source_ids": [ + 94 + ], + "id": "Name: extract\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "decompose", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Decompose is a method and specific operator used within the Extract phase that breaks down a complex query into simpler, actionable sub-queries, a technique leveraged by BookRag to prune search spaces.", + "source_ids": [ + 186, + 94, + 98 + ], + "id": "Name: decompose\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "entities", + "entity_type": "DATASET_OR_CORPUS", + "description": "The output of the Extract phase, representing distinct items identified from the input text.", + "source_ids": [ + 94 + ], + "id": "Name: entities\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "sub-queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "Smaller queries generated during the decomposition process.", + "source_ids": [ + 94 + ], + "id": "Name: sub-queries\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "formulator", + "entity_type": "SYSTEM_COMPONENT", + "description": "The component or agent responsible for the extraction and decomposition steps.", + "source_ids": [ + 94 + ], + "id": "Name: formulator\nType: SYSTEM_COMPONENT" + }, + { + "entity_name": "filter", + "entity_type": "TASK_OR_PROBLEM", + "description": "An operator that processes data structures like trees to select relevant information.", + "source_ids": [ + 94 + ], + "id": "Name: filter\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "select", + "entity_type": "TASK_OR_PROBLEM", + "description": "The action performed by the Filter operator to choose specific elements.", + "source_ids": [ + 94 + ], + "id": "Name: select\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "selector", + "entity_type": "SYSTEM_COMPONENT", + "description": "The component responsible for filtering and selecting data based on criteria.", + "source_ids": [ + 94 + ], + "id": "Name: selector\nType: SYSTEM_COMPONENT" + }, + { + "entity_name": "reason", + "entity_type": "TASK_OR_PROBLEM", + "description": "An operator that takes Graph and Text inputs to perform reasoning tasks.", + "source_ids": [ + 94 + ], + "id": "Name: reason\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "graph", + "entity_type": "DATA_STRUCTURE", + "description": "A visual representation of data used as input for the Reason operator.", + "source_ids": [ + 94 + ], + "id": "Name: graph\nType: DATA_STRUCTURE" + }, + { + "entity_name": "text", + "entity_type": "DATA_STRUCTURE", + "description": "Raw textual data used as input for the Reason operator.", + "source_ids": [ + 94 + ], + "id": "Name: text\nType: DATA_STRUCTURE" + }, + { + "entity_name": "s:", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A label indicating a score or similarity matrix with values such as 0.6, 0.5, 0.4.", + "source_ids": [ + 94 + ], + "id": "Name: s:\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "skyline", + "entity_type": "TASK_OR_PROBLEM", + "description": "An operator that processes ranked lists (S1, S2) to find optimal solutions.", + "source_ids": [ + 94 + ], + "id": "Name: skyline\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "reasoner", + "entity_type": "SYSTEM_COMPONENT", + "description": "The component executing the Reason and Skyline operations.", + "source_ids": [ + 94 + ], + "id": "Name: reasoner\nType: SYSTEM_COMPONENT" + }, + { + "entity_name": "map", + "entity_type": "TASK_OR_PROBLEM", + "description": "The map is an operator that transforms data using icons representing different formats and performs analysis on specific retrieved information segments to generate partial responses.", + "source_ids": [ + 94, + 111 + ], + "id": "Name: map\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "reduce", + "entity_type": "TASK_OR_PROBLEM", + "description": "Reduce is an operator that combines multiple inputs into a single result by synthesizing a final coherent answer through the aggregation of information from various sources.", + "source_ids": [ + 94, + 111 + ], + "id": "Name: reduce\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "synthesizer", + "entity_type": "SYSTEM_COMPONENT", + "description": "The final component that aggregates results into a coherent answer.", + "source_ids": [ + 94 + ], + "id": "Name: synthesizer\nType: SYSTEM_COMPONENT" + }, + { + "entity_name": "execution example", + "entity_type": "SECTION_TITLE", + "description": "A subsection of the diagram showing a concrete application of the operator set.", + "source_ids": [ + 94 + ], + "id": "Name: execution example\nType: SECTION_TITLE" + }, + { + "entity_name": "q: what is the type of car in the ranking prompt example?", + "entity_type": "TASK_OR_PROBLEM", + "description": "The specific user question being processed in the execution example.", + "source_ids": [ + 94 + ], + "id": "Name: q: what is the type of car in the ranking prompt example?\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "simple query...", + "entity_type": "TASK_OR_PROBLEM", + "description": "A classification of the input query.", + "source_ids": [ + 94 + ], + "id": "Name: simple query...\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "car", + "entity_type": "PRODUCT", + "description": "A car is a key entity identified in the query regarding the type of car in the ranking prompt example.", + "source_ids": [ + 94, + 135 + ], + "id": "Name: car\nType: PRODUCT" + }, + { + "entity_name": "ranking prompt", + "entity_type": "BOOK", + "description": "An entity mentioned in the question context.", + "source_ids": [ + 94 + ], + "id": "Name: ranking prompt\nType: BOOK" + }, + { + "entity_name": "method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A node in the planning graph representing the method to be used.", + "source_ids": [ + 94 + ], + "id": "Name: method\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "method and its descendants", + "entity_type": "SECTION_TITLE", + "description": "A grouping of nodes related to the Method in the execution flow.", + "source_ids": [ + 94 + ], + "id": "Name: method and its descendants\nType: SECTION_TITLE" + }, + { + "entity_name": "a: based on the provided information...", + "entity_type": "TASK_OR_PROBLEM", + "description": "The final answer generated by the system.", + "source_ids": [ + 94 + ], + "id": "Name: a: based on the provided information...\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "mercedes-benz e-class sedan", + "entity_type": "VEHICLE", + "description": "The specific car type identified as the correct answer in the example.", + "source_ids": [ + 94 + ], + "id": "Name: mercedes-benz e-class sedan\nType: VEHICLE" + }, + { + "entity_name": "image cref='#/texts/98'", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 94 + ], + "id": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "entity_name": "query classification", + "entity_type": "TASK_OR_PROBLEM", + "description": "Query classification is a task designed to determine the appropriate solution strategy by categorizing queries based on their complexity, thereby enabling effective agent strategy selection, and it is the specific problem for which the prompt in figure 10 is intended.", + "source_ids": [ + 96, + 253, + 95 + ], + "id": "Name: query classification\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "operator plan", + "entity_type": "PRODUCT", + "description": "operator plan is a specific output generated after determining the solution strategy", + "source_ids": [ + 95 + ], + "id": "Name: operator plan\nType: PRODUCT" + }, + { + "entity_name": "single hop", + "entity_type": "EVENT", + "description": "single hop is a query category requiring a single piece of information retrieved via a scent based retrieval operation", + "source_ids": [ + 96 + ], + "id": "Name: single hop\nType: EVENT" + }, + { + "entity_name": "multi hop", + "entity_type": "EVENT", + "description": "multi hop is a query category defined by its intrinsic complexity and operational demands", + "source_ids": [ + 96 + ], + "id": "Name: multi hop\nType: EVENT" + }, + { + "entity_name": "global aggregation", + "entity_type": "EVENT", + "description": "global aggregation is a query category necessitating analysis under multiple filtering conditions", + "source_ids": [ + 96 + ], + "id": "Name: global aggregation\nType: EVENT" + }, + { + "entity_name": "scent based retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "scent based retrieval is a method used to retrieve a single piece of information for single hop queries", + "source_ids": [ + 96 + ], + "id": "Name: scent based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "filter aggregation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "filter aggregation is a sequence of operations used to analyze content under multiple filtering conditions for global aggregation queries", + "source_ids": [ + 96 + ], + "id": "Name: filter aggregation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "agent strategy selection", + "entity_type": "TASK_OR_PROBLEM", + "description": "agent strategy selection is a process enabled by query classification to determine the appropriate solution strategy", + "source_ids": [ + 96 + ], + "id": "Name: agent strategy selection\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "intrinsic complexity", + "entity_type": "CONCEPT", + "description": "intrinsic complexity is an attribute used to define the query categories", + "source_ids": [ + 96 + ], + "id": "Name: intrinsic complexity\nType: CONCEPT" + }, + { + "entity_name": "operational demands", + "entity_type": "CONCEPT", + "description": "operational demands are factors used to define the query categories alongside intrinsic complexity", + "source_ids": [ + 96 + ], + "id": "Name: operational demands\nType: CONCEPT" + }, + { + "entity_name": "solution strategy", + "entity_type": "CONCEPT", + "description": "solution strategy refers to the different approaches required for each query category", + "source_ids": [ + 96 + ], + "id": "Name: solution strategy\nType: CONCEPT" + }, + { + "entity_name": "filtering conditions", + "entity_type": "CONCEPT", + "description": "filtering conditions are multiple criteria used in the analysis of global aggregation queries", + "source_ids": [ + 96 + ], + "id": "Name: filtering conditions\nType: CONCEPT" + }, + { + "entity_name": "document", + "entity_type": "OBJECT", + "description": "document refers to the source material where content is analyzed during global aggregation queries", + "source_ids": [ + 96 + ], + "id": "Name: document\nType: OBJECT" + }, + { + "entity_name": "additional operators", + "entity_type": "SOFTWARE", + "description": "additional operators are components integrated into bookrag to extend its capabilities", + "source_ids": [ + 96 + ], + "id": "Name: additional operators\nType: SOFTWARE" + }, + { + "entity_name": "bookindex operators", + "entity_type": "TASK_OR_PROBLEM", + "description": "bookindex operators are a set of strategies designed to execute tasks identified by classification", + "source_ids": [ + 97 + ], + "id": "Name: bookindex operators\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "o", + "entity_type": "TASK_OR_PROBLEM", + "description": "o represents the set of operators tailored for the bookindex", + "source_ids": [ + 97 + ], + "id": "Name: o\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "figure 4 a", + "entity_type": "IMAGE", + "description": "figure 4 a is a visual depiction of the operators", + "source_ids": [ + 97 + ], + "id": "Name: figure 4 a\nType: IMAGE" + }, + { + "entity_name": "table 3", + "entity_type": "TABLE", + "description": "Table 3 provides detailed information about the operators utilized in BookRAG by categorizing them according to their function.", + "source_ids": [ + 97, + 131 + ], + "id": "Name: table 3\nType: TABLE" + }, + { + "entity_name": "classification", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "classification is the method used to identify the strategies executed by the operators", + "source_ids": [ + 97 + ], + "id": "Name: classification\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "formulator", + "entity_type": "TASK_OR_PROBLEM", + "description": "formulator is a category of llm based operators that prepare queries for execution", + "source_ids": [ + 98 + ], + "id": "Name: formulator\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "extract", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Extract is a method that employs a large language model to identify key entities from query text and link them to a knowledge graph, such as identifying entities like \"car\".", + "source_ids": [ + 98, + 135 + ], + "id": "Name: extract\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "qs", + "entity_type": "TASK_OR_PROBLEM", + "description": "qs represents the set of simpler actionable sub queries generated by the decompose method", + "source_ids": [ + 98 + ], + "id": "Name: qs\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "eq", + "entity_type": "TASK_OR_PROBLEM", + "description": "eq represents the set of key entities identified by the extract method", + "source_ids": [ + 98 + ], + "id": "Name: eq\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "pdec", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "pdec is a parameter used in the llm function to generate sub queries", + "source_ids": [ + 98 + ], + "id": "Name: pdec\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "pext", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "pext is a parameter used in the llm function to identify key entities", + "source_ids": [ + 98 + ], + "id": "Name: pext\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "sub queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "sub queries are the simpler actionable components resulting from breaking down a complex query", + "source_ids": [ + 98 + ], + "id": "Name: sub queries\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "query text", + "entity_type": "TASK_OR_PROBLEM", + "description": "query text is the source material from which the extract method identifies key entities", + "source_ids": [ + 98 + ], + "id": "Name: query text\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "entities are the key items identified in the query text and linked to the knowledge graph", + "source_ids": [ + 98 + ], + "id": "Name: entities\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "formula (2)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the output Q(s) as a set of query vectors generated by an LLM. LaTeX: 𝑄 𝑠 = LLM ( 𝑃 𝐷𝑒𝑐 , 𝑞 ) = { 𝑞 , 𝑞 1 2 , . . . , 𝑞 𝑘 } (2)", + "source_ids": [ + 99 + ], + "id": "Name: formula (2)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula (3)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the output of an LLM function as a set of elements. LaTeX: 𝐸 𝑞 = LLM ( 𝑃 𝐸𝑥𝑡 , 𝑞 ) = { 𝑒 1 , 𝑒 2 , . . . , 𝑒 𝑚 } (3)", + "source_ids": [ + 100 + ], + "id": "Name: formula (3)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "p dec", + "entity_type": "SOFTWARE", + "description": "p dec represents a prompt used to guide the llm for the decomposition task", + "source_ids": [ + 101 + ], + "id": "Name: p dec\nType: SOFTWARE" + }, + { + "entity_name": "p ext", + "entity_type": "SOFTWARE", + "description": "p ext represents a prompt used to guide the llm for the extraction task", + "source_ids": [ + 101 + ], + "id": "Name: p ext\nType: SOFTWARE" + }, + { + "entity_name": "decomposition", + "entity_type": "TASK_OR_PROBLEM", + "description": "decomposition is a task for which the prompt p dec is used to guide the llm", + "source_ids": [ + 101 + ], + "id": "Name: decomposition\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "extraction is a task for which the prompt p ext is used to guide the llm", + "source_ids": [ + 101 + ], + "id": "Name: extraction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "prompt", + "entity_type": "SOFTWARE", + "description": "A prompt is a software component consisting of instructions used to guide large language models for specific tasks and is also utilized for entity resolution judgement.", + "source_ids": [ + 284, + 101 + ], + "id": "Name: prompt\nType: SOFTWARE" + }, + { + "entity_name": "selector", + "entity_type": "TECHNOLOGY", + "description": "A selector is an operator or component used to filter or select specific content ranges from a bookindex, and it can also be removed to force reasoners to score all candidate nodes.", + "source_ids": [ + 102, + 167 + ], + "id": "Name: selector\nType: TECHNOLOGY" + }, + { + "entity_name": "filter modal", + "entity_type": "TECHNOLOGY", + "description": "filter modal is an operator that applies explicit constraints to the bookindex", + "source_ids": [ + 102 + ], + "id": "Name: filter modal\nType: TECHNOLOGY" + }, + { + "entity_name": "filter range", + "entity_type": "TECHNOLOGY", + "description": "filter range is an operator that applies explicit constraints to the bookindex", + "source_ids": [ + 102 + ], + "id": "Name: filter range\nType: TECHNOLOGY" + }, + { + "entity_name": "n f", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n f is the filtered subset of nodes produced by the operators", + "source_ids": [ + 102 + ], + "id": "Name: n f\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "c n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "c n is a predicate that holds true for each node in the filtered subset", + "source_ids": [ + 102 + ], + "id": "Name: c n\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "modal types", + "entity_type": "CONCEPT", + "description": "modal types are a specific type of explicit constraint c mentioned in the text", + "source_ids": [ + 102 + ], + "id": "Name: modal types\nType: CONCEPT" + }, + { + "entity_name": "page ranges", + "entity_type": "CONCEPT", + "description": "page ranges are a specific type of explicit constraint c mentioned in the text", + "source_ids": [ + 102 + ], + "id": "Name: page ranges\nType: CONCEPT" + }, + { + "entity_name": "plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "Plan refers to the planning aspect of the process where errors are analyzed and during which explicit constraints are generated.", + "source_ids": [ + 185, + 102 + ], + "id": "Name: plan\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "nodes", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "nodes are the individual elements within the tree t that are evaluated by the predicate", + "source_ids": [ + 102 + ], + "id": "Name: nodes\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "edges", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "edges are the connections within the tree t denoted as e t", + "source_ids": [ + 102 + ], + "id": "Name: edges\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "formula (4)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the set N_f as a subset of N based on condition C. LaTeX: 𝑁 𝑓 = { 𝑛 ∈ 𝑁 | 𝐶 𝑛 ( )} (4)", + "source_ids": [ + 103 + ], + "id": "Name: formula (4)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "select by entity", + "entity_type": "TECHNOLOGY", + "description": "select by entity is a method that targets contiguous document segments by retrieving subtrees rooted at specific section nodes", + "source_ids": [ + 104 + ], + "id": "Name: select by entity\nType: TECHNOLOGY" + }, + { + "entity_name": "select by section", + "entity_type": "TECHNOLOGY", + "description": "select by section is a method that targets contiguous document segments by retrieving subtrees rooted at specific section nodes", + "source_ids": [ + 104 + ], + "id": "Name: select by section\nType: TECHNOLOGY" + }, + { + "entity_name": "s target", + "entity_type": "TASK_OR_PROBLEM", + "description": "s target represents a set of target section nodes at a specified depth", + "source_ids": [ + 104 + ], + "id": "Name: s target\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "e q", + "entity_type": "TASK_OR_PROBLEM", + "description": "e q represents the entities linked to sections via gt link", + "source_ids": [ + 104 + ], + "id": "Name: e q\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "n s", + "entity_type": "TASK_OR_PROBLEM", + "description": "n s represents the selected node set formed by retrieving descendants of target sections", + "source_ids": [ + 104 + ], + "id": "Name: n s\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "subtree", + "entity_type": "TASK_OR_PROBLEM", + "description": "subtree refers to the data structure rooted at specific section nodes that is retrieved by the methods", + "source_ids": [ + 104 + ], + "id": "Name: subtree\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "section node", + "entity_type": "TASK_OR_PROBLEM", + "description": "section node is a specific node within the document structure that serves as a root for subtrees", + "source_ids": [ + 104 + ], + "id": "Name: section node\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "depth", + "entity_type": "MEASUREMENT", + "description": "depth is a specified parameter determining the level of the target section nodes", + "source_ids": [ + 104 + ], + "id": "Name: depth\nType: MEASUREMENT" + }, + { + "entity_name": "descendant", + "entity_type": "TASK_OR_PROBLEM", + "description": "descendant refers to the nodes below the target section nodes that are retrieved to form the selected node set", + "source_ids": [ + 104 + ], + "id": "Name: descendant\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "formula (5)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable N_s as a glyph value for an element s in set S within a target subtree. LaTeX: 𝑁 𝑠 = GLYPH<216> 𝑠 ∈ 𝑆 target Subtree ( 𝑠 ) (5)", + "source_ids": [ + 105 + ], + "id": "Name: formula (5)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "reasoner", + "entity_type": "TASK_OR_PROBLEM", + "description": "reasoner is described as a component that analyzes and refines selected tree nodes", + "source_ids": [ + 106 + ], + "id": "Name: reasoner\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "graph reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graph reasoning is a method that performs multi hop inference on a subgraph starting from an entity", + "source_ids": [ + 106 + ], + "id": "Name: graph reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "pagerank algorithm", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "pagerank algorithm is used to compute an entity importance vector over a subgraph", + "source_ids": [ + 106 + ], + "id": "Name: pagerank algorithm\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "gt link matrix", + "entity_type": "SOFTWARE", + "description": "gt link matrix is a matrix used to map entity scores to tree nodes to derive importance scores", + "source_ids": [ + 106 + ], + "id": "Name: gt link matrix\nType: SOFTWARE" + }, + { + "entity_name": "entity importance vector", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "entity importance vector is a vector computed over a subgraph representing the importance of entities", + "source_ids": [ + 106 + ], + "id": "Name: entity importance vector\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "tree node importance scores vector", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "tree node importance scores vector is the final vector derived by mapping entity scores to tree nodes", + "source_ids": [ + 106 + ], + "id": "Name: tree node importance scores vector\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "subgraph", + "entity_type": "TASK_OR_PROBLEM", + "description": "subgraph is a portion of a graph extracted from selected nodes on which inference is performed", + "source_ids": [ + 106 + ], + "id": "Name: subgraph\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "Entity serves as the starting point for the multi-hop inference process in graph reasoning and is also the object that the agent attempts to extract during the single-hop process.", + "source_ids": [ + 106, + 115 + ], + "id": "Name: entity\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "selected nodes", + "entity_type": "TASK_OR_PROBLEM", + "description": "selected nodes are the nodes from which a subgraph is extracted for graph reasoning", + "source_ids": [ + 106 + ], + "id": "Name: selected nodes\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "20", + "entity_type": "PUBLICATION_VENUE", + "description": "20 is a citation reference associated with the pagerank algorithm", + "source_ids": [ + 106 + ], + "id": "Name: 20\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "6", + "entity_type": "EQUATION_OR_FORMULA", + "description": "6 is the label for the equation defining the entity importance vector", + "source_ids": [ + 106 + ], + "id": "Name: 6\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "7", + "entity_type": "EQUATION_OR_FORMULA", + "description": "7 is the label for the equation defining the tree node importance scores vector", + "source_ids": [ + 106 + ], + "id": "Name: 7\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "selected tree nodes", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 106 + ], + "id": "Name: selected tree nodes\nType: UNKNOWN" + }, + { + "entity_name": "formula (6)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the PageRank of a graph G with respect to a vector e'. LaTeX: 𝐼 𝐺 = PageRank ( 𝐺 , 𝑒 ' ) (6)", + "source_ids": [ + 107 + ], + "id": "Name: formula (6)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula (7)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the product of S and G as equal to the product of I, G, and M. LaTeX: 𝑆 𝐺 = 𝐼 𝐺 × 𝑀 (7)", + "source_ids": [ + 108 + ], + "id": "Name: formula (7)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "text ranker", + "entity_type": "SOFTWARE", + "description": "text ranker is a system that evaluates the semantic relevance of a tree node s content to a query", + "source_ids": [ + 109 + ], + "id": "Name: text ranker\nType: SOFTWARE" + }, + { + "entity_name": "skyline ranker", + "entity_type": "SOFTWARE", + "description": "Skyline Ranker is a software system that employs the skyline operator to filter nodes based on multiple criteria and retains a specific number of nodes after analysis. It functions as a component that is disabled when the graph reasoning operator is removed, resulting in single-dimensional scoring, and is also disabled when text reasoning is removed, causing it to rely solely on graph-based scores.", + "source_ids": [ + 168, + 169, + 109, + 157 + ], + "id": "Name: skyline ranker\nType: SOFTWARE" + }, + { + "entity_name": "skyline operator", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the skyline operator is a method used by skyline ranker to filter nodes based on scoring dimensions", + "source_ids": [ + 109 + ], + "id": "Name: skyline operator\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "query", + "entity_type": "TASK_OR_PROBLEM", + "description": "The query serves as the input for which semantic relevance is evaluated by the text ranker. It is also the input that the agent classifies into a category to generate a plan, a process handled by the agent based planning component. Additionally, a query is a specific question for which retrieval recall is recorded, particularly when PDF parsing errors occur.", + "source_ids": [ + 112, + 109, + 144, + 157 + ], + "id": "Name: query\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "relevance score", + "entity_type": "EVALUATION_METRIC", + "description": "the relevance score is a metric assigned to each node to indicate its semantic relevance to the query", + "source_ids": [ + 109 + ], + "id": "Name: relevance score\nType: EVALUATION_METRIC" + }, + { + "entity_name": "tree node", + "entity_type": "TASK_OR_PROBLEM", + "description": "the tree node is the content unit being evaluated for relevance and filtered based on scoring dimensions", + "source_ids": [ + 109 + ], + "id": "Name: tree node\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "nodes", + "entity_type": "TASK_OR_PROBLEM", + "description": "nodes are the data elements being evaluated for relevance and filtered by the ranking systems", + "source_ids": [ + 109 + ], + "id": "Name: nodes\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "scoring dimensions", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "scoring dimensions are the specified criteria used to determine if nodes are dominated by others", + "source_ids": [ + 109 + ], + "id": "Name: scoring dimensions\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "7", + "entity_type": "NUMBER", + "description": "7 is a number mentioned in the text", + "source_ids": [ + 110 + ], + "id": "Name: 7\nType: NUMBER" + }, + { + "entity_name": "synthesizer", + "entity_type": "TASK_OR_PROBLEM", + "description": "synthesizer is described as an operator responsible for content generation", + "source_ids": [ + 111 + ], + "id": "Name: synthesizer\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "content generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "content generation is the primary responsibility of the synthesizer operators mentioned in the text", + "source_ids": [ + 111 + ], + "id": "Name: content generation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "analysis", + "entity_type": "TASK_OR_PROBLEM", + "description": "analysis is the specific action performed by the map operator on retrieved information segments", + "source_ids": [ + 111 + ], + "id": "Name: analysis\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "partial responses", + "entity_type": "PRODUCT", + "description": "partial responses are the output generated by the map operator from specific retrieved information segments", + "source_ids": [ + 111 + ], + "id": "Name: partial responses\nType: PRODUCT" + }, + { + "entity_name": "final coherent answer", + "entity_type": "PRODUCT", + "description": "a final coherent answer is the result synthesized by the reduce operator by aggregating information from multiple sources", + "source_ids": [ + 111 + ], + "id": "Name: final coherent answer\nType: PRODUCT" + }, + { + "entity_name": "retrieved information segments", + "entity_type": "DATASET_OR_CORPUS", + "description": "retrieved information segments are the specific data parts that the map operator analyzes", + "source_ids": [ + 111 + ], + "id": "Name: retrieved information segments\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "multiple sources", + "entity_type": "DATASET_OR_CORPUS", + "description": "multiple sources refer to the various origins of information such as partial answers or retrieved evidence that the reduce operator aggregates", + "source_ids": [ + 111 + ], + "id": "Name: multiple sources\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "partial answers", + "entity_type": "PRODUCT", + "description": "partial answers are one of the types of information collected from multiple sources by the reduce operator", + "source_ids": [ + 111 + ], + "id": "Name: partial answers\nType: PRODUCT" + }, + { + "entity_name": "retrieved evidence", + "entity_type": "DATASET_OR_CORPUS", + "description": "retrieved evidence is one of the types of information collected from multiple sources by the reduce operator", + "source_ids": [ + 111 + ], + "id": "Name: retrieved evidence\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "agent", + "entity_type": "PERSON", + "description": "The agent is an entity that classifies queries, generates executable plans and workflows, attempts to extract entities, executes selection strategies, and performs the decomposition of problems along with the synthesis of results.", + "source_ids": [ + 112, + 115, + 118, + 135 + ], + "id": "Name: agent\nType: PERSON" + }, + { + "entity_name": "category", + "entity_type": "TASK_OR_PROBLEM", + "description": "the category is the classification result of the query used by the agent", + "source_ids": [ + 112 + ], + "id": "Name: category\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "library", + "entity_type": "ORGANIZATION", + "description": "the library is a collection of operators from which the agent selects a sequence", + "source_ids": [ + 112 + ], + "id": "Name: library\nType: ORGANIZATION" + }, + { + "entity_name": "operators", + "entity_type": "TASK_OR_PROBLEM", + "description": "operators are the specific sequence elements selected from the library to form the plan", + "source_ids": [ + 112 + ], + "id": "Name: operators\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "parameters", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "parameters are dynamically instantiated based on the query to configure the operators", + "source_ids": [ + 112 + ], + "id": "Name: parameters\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "1", + "entity_type": "TASK_OR_PROBLEM", + "description": "1 represents the specific sequence of operators selected for the plan", + "source_ids": [ + 112 + ], + "id": "Name: 1\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "agent plan", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "agent plan is the specific formulation or function used to generate the plan from the query category and library", + "source_ids": [ + 112 + ], + "id": "Name: agent plan\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "equation 8", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 8 is the mathematical formulation agent plan describing the plan generation process", + "source_ids": [ + 112 + ], + "id": "Name: equation 8\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula (8)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable P as a function of Agent Plan with inputs q, c, and O. LaTeX: 𝑃 = Agent Plan ( 𝑞, 𝑐, O) (8)", + "source_ids": [ + 113 + ], + "id": "Name: formula (8)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "the plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "the plan is a structured workflow tailored to each category", + "source_ids": [ + 114 + ], + "id": "Name: the plan\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "workflow", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the workflow is a structured process followed by the plan", + "source_ids": [ + 114 + ], + "id": "Name: workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "category", + "entity_type": "CONCEPT", + "description": "category refers to the classifications to which the plan s workflow is tailored", + "source_ids": [ + 114 + ], + "id": "Name: category\nType: CONCEPT" + }, + { + "entity_name": "scent based", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "scent based is a selection strategy used by the agent if entity extraction is successful", + "source_ids": [ + 115 + ], + "id": "Name: scent based\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "section based", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "section based is a fallback strategy used by the agent if entity extraction fails", + "source_ids": [ + 115 + ], + "id": "Name: section based\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "standard reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "standard reasoning is a process that both selection paths proceed to", + "source_ids": [ + 115 + ], + "id": "Name: standard reasoning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "p std", + "entity_type": "EQUATION_OR_FORMULA", + "description": "p std denotes the standard reasoning and generation process", + "source_ids": [ + 115 + ], + "id": "Name: p std\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula (9)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable P_s based on extraction success or failure conditions. LaTeX: 𝑃 s = ( Extract success - - - - -→ Select_by_Entity → 𝑃 std Extract fail - -→ Select_by_Section → 𝑃 std (9)", + "source_ids": [ + 116 + ], + "id": "Name: formula (9)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula (10)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the standard probability P as a process involving graph and text inputs leading to a skyline reduction. LaTeX: 𝑃 std = ( Graph ∥ Text ) → Skyline → Reduce (10)", + "source_ids": [ + 117 + ], + "id": "Name: formula (10)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "single hop workflow", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "single hop workflow is a method denoted as ps used to solve sub problems", + "source_ids": [ + 118 + ], + "id": "Name: single hop workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "ps", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "ps is the specific notation or identifier for the single hop workflow applied to sub problems", + "source_ids": [ + 118 + ], + "id": "Name: ps\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "complex", + "entity_type": "TASK_OR_PROBLEM", + "description": "Complex is one of the three categories used to classify user questions and refers to a problem that is decomposed by the agent.", + "source_ids": [ + 241, + 118 + ], + "id": "Name: complex\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "formula (11)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation describing a decomposition process involving mapping and reduction. LaTeX: 𝑃 complex = Decompose → 𝑃 s → Map → Reduce (11)", + "source_ids": [ + 119 + ], + "id": "Name: formula (11)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "global aggregation", + "entity_type": "TASK_OR_PROBLEM", + "description": "Global aggregation is a workflow involving a sequence of filters followed by synthesis, and it is also a type of query used to evaluate the performance of BookRag.", + "source_ids": [ + 120, + 179 + ], + "id": "Name: global aggregation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "formula (12)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the global probability P as a composition of filtering and mapping operations. LaTeX: 𝑃 global = GLYPH<214> ( Filter_Modal | Filter_Range ) → Map → Reduce (12)", + "source_ids": [ + 121 + ], + "id": "Name: formula (12)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "modal filter", + "entity_type": "TECHNOLOGY", + "description": "modal filter is a type of filter applied at each step of the nested composition", + "source_ids": [ + 122 + ], + "id": "Name: modal filter\nType: TECHNOLOGY" + }, + { + "entity_name": "range filter", + "entity_type": "TECHNOLOGY", + "description": "range filter is a type of filter applied at each step of the nested composition", + "source_ids": [ + 122 + ], + "id": "Name: range filter\nType: TECHNOLOGY" + }, + { + "entity_name": "nested composition", + "entity_type": "TASK_OR_PROBLEM", + "description": "nested composition refers to the process of applying filters at each step", + "source_ids": [ + 122 + ], + "id": "Name: nested composition\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "5.3 structured execution", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Agent-Based Retrieval', this section details the retrieval process within the BookRAG framework, specifically focusing on operations executed under the principles of In-Context Few-Shot Training (IFT) and generation.", + "source_ids": [ + 123 + ], + "id": "Name: 5.3 structured execution\nType: SECTION_TITLE" + }, + { + "entity_name": "ift principles", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the In-Context Few-Shot Training principles that guide the execution logic detailed in section 5.3.", + "source_ids": [ + 123 + ], + "id": "Name: ift principles\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "synthesizer", + "entity_type": "SOFTWARE", + "description": "The synthesizer is an operator within BookRag that generates a coherent final answer by aggregating and processing refined evidence.", + "source_ids": [ + 129, + 124 + ], + "id": "Name: synthesizer\nType: SOFTWARE" + }, + { + "entity_name": "p", + "entity_type": "TASK_OR_PROBLEM", + "description": "p represents the specific generated workflow executed by bookrag", + "source_ids": [ + 124 + ], + "id": "Name: p\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "abstract textual queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "abstract textual queries are the input that bookrag translates into concrete operations", + "source_ids": [ + 124 + ], + "id": "Name: abstract textual queries\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "concrete operations", + "entity_type": "TASK_OR_PROBLEM", + "description": "concrete operations are the result of translating abstract textual queries within bookrag", + "source_ids": [ + 124 + ], + "id": "Name: concrete operations\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "information patches", + "entity_type": "TASK_OR_PROBLEM", + "description": "information patches are specific scopes within the document space that the selector navigates to", + "source_ids": [ + 124 + ], + "id": "Name: information patches\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "document space", + "entity_type": "TASK_OR_PROBLEM", + "description": "document space is the vast area of documents that is narrowed down by the selector", + "source_ids": [ + 124 + ], + "id": "Name: document space\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "relevant scopes", + "entity_type": "TASK_OR_PROBLEM", + "description": "relevant scopes are the focused areas within the document space identified by the selector", + "source_ids": [ + 124 + ], + "id": "Name: relevant scopes\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "sensemaking", + "entity_type": "TASK_OR_PROBLEM", + "description": "sensemaking is the process performed by the reasoner to analyze and refine information", + "source_ids": [ + 124 + ], + "id": "Name: sensemaking\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "processed evidence", + "entity_type": "TASK_OR_PROBLEM", + "description": "processed evidence is the refined information used by the synthesizer to generate the answer", + "source_ids": [ + 124 + ], + "id": "Name: processed evidence\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "cost of attention", + "entity_type": "TASK_OR_PROBLEM", + "description": "cost of attention is a metric minimized by bookrag s design to focus computational resources", + "source_ids": [ + 124 + ], + "id": "Name: cost of attention\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "computational resources", + "entity_type": "TASK_OR_PROBLEM", + "description": "computational resources are the assets focused by bookrag on high value data patches", + "source_ids": [ + 124 + ], + "id": "Name: computational resources\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "high value data patches", + "entity_type": "TASK_OR_PROBLEM", + "description": "high value data patches are the specific data areas where bookrag focuses its computational resources", + "source_ids": [ + 124 + ], + "id": "Name: high value data patches\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "scent filter based retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "scent filter based retrieval is a process described as the execution that begins by narrowing the scope", + "source_ids": [ + 125 + ], + "id": "Name: scent filter based retrieval\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "selector operators", + "entity_type": "SOFTWARE", + "description": "selector operators are components that identify relevant patches by following information scents or applying explicit filter constraints", + "source_ids": [ + 125 + ], + "id": "Name: selector operators\nType: SOFTWARE" + }, + { + "entity_name": "node set n", + "entity_type": "DATASET_OR_CORPUS", + "description": "node set n represents the full set of nodes that is reduced by the process", + "source_ids": [ + 125 + ], + "id": "Name: node set n\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "focused node subset ns", + "entity_type": "DATASET_OR_CORPUS", + "description": "focused node subset ns is the result of the reduction process applied to the full node set n", + "source_ids": [ + 125 + ], + "id": "Name: focused node subset ns\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "params sel", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "params sel are parameters used in the selector function to define the focused node subset", + "source_ids": [ + 125 + ], + "id": "Name: params sel\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "patches", + "entity_type": "PRODUCT", + "description": "patches are relevant units identified by selector operators within the retrieval process", + "source_ids": [ + 125 + ], + "id": "Name: patches\nType: PRODUCT" + }, + { + "entity_name": "explicit filter constraints", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "explicit filter constraints are rules applied by selector operators to identify relevant patches", + "source_ids": [ + 125 + ], + "id": "Name: explicit filter constraints\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "equation 13", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 13 defines the mathematical relationship for the selector function reducing the node set", + "source_ids": [ + 125 + ], + "id": "Name: equation 13\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula (13)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable Ns as a selector function applied to N and parameters. LaTeX: 𝑁 𝑠 = Selector ( 𝑁, params sel ) (13)", + "source_ids": [ + 126 + ], + "id": "Name: formula (13)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "reasoner operators", + "entity_type": "TASK_OR_PROBLEM", + "description": "reasoner operators are components that evaluate nodes using multiple dimensions such as graph topology and semantic relevance", + "source_ids": [ + 127 + ], + "id": "Name: reasoner operators\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "skyline ranker", + "entity_type": "TASK_OR_PROBLEM", + "description": "skyline ranker is a method employed to obtain the final retrieval set by retaining the pareto frontier of nodes", + "source_ids": [ + 127 + ], + "id": "Name: skyline ranker\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "skyline operator", + "entity_type": "TASK_OR_PROBLEM", + "description": "the skyline operator is a mechanism that retains valuable nodes in at least one dimension while discarding dominated ones", + "source_ids": [ + 127 + ], + "id": "Name: skyline operator\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "n r", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n r represents the final retrieval set derived from the skyline ranker process", + "source_ids": [ + 127 + ], + "id": "Name: n r\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "s g n s", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "s g n s is a function or metric used within the skyline ranker equation to evaluate nodes", + "source_ids": [ + 127 + ], + "id": "Name: s g n s\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "t n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "t n is a function or metric used within the skyline ranker equation to evaluate nodes", + "source_ids": [ + 127 + ], + "id": "Name: t n\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "n s", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n s represents the set of nodes from which the final retrieval set is derived", + "source_ids": [ + 127 + ], + "id": "Name: n s\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "equation 14", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 14 defines the mathematical relationship for calculating the final retrieval set n r using the skyline ranker", + "source_ids": [ + 127 + ], + "id": "Name: equation 14\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "graph topology", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "graph topology is a dimension used by reasoner operators to evaluate nodes", + "source_ids": [ + 127 + ], + "id": "Name: graph topology\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "semantic relevance", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "semantic relevance is a dimension used by reasoner operators to evaluate nodes", + "source_ids": [ + 127 + ], + "id": "Name: semantic relevance\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "pareto frontier", + "entity_type": "CONCEPT", + "description": "the pareto frontier is the set of nodes retained by the skyline operator that are valuable in at least one dimension", + "source_ids": [ + 127 + ], + "id": "Name: pareto frontier\nType: CONCEPT" + }, + { + "entity_name": "fixed top retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "fixed top retrieval is a method contrasted with the skyline operator for its inability to retain the pareto frontier", + "source_ids": [ + 127 + ], + "id": "Name: fixed top retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "noise", + "entity_type": "CONCEPT", + "description": "noise is a factor minimized by the pre selection process to optimize foraging cost", + "source_ids": [ + 127 + ], + "id": "Name: noise\nType: CONCEPT" + }, + { + "entity_name": "foraging cost", + "entity_type": "MEASUREMENT", + "description": "foraging cost is the metric optimized by minimizing noise and focusing on relevant contexts", + "source_ids": [ + 127 + ], + "id": "Name: foraging cost\nType: MEASUREMENT" + }, + { + "entity_name": "pre selection", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "pre selection is a process that minimizes noise and ensures reasoning is applied only to highly relevant contexts", + "source_ids": [ + 127 + ], + "id": "Name: pre selection\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "nodes", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 127 + ], + "id": "Name: nodes\nType: UNKNOWN" + }, + { + "entity_name": "final retrieval set", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 127 + ], + "id": "Name: final retrieval set\nType: UNKNOWN" + }, + { + "entity_name": "formula (14)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable NR as a Skyline Ranker applied to a set of SG and T values. LaTeX: 𝑁 𝑅 = Skyline_Ranker ({ 𝑆 𝐺 ( 𝑛 , 𝑆 ) 𝑇 ( 𝑛 ) | 𝑛 ∈ 𝑁 𝑠 }) (14)", + "source_ids": [ + 128 + ], + "id": "Name: formula (14)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "analysis merging generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "analysis merging generation is described as the final stage of a process involving the synthesizer operator", + "source_ids": [ + 129 + ], + "id": "Name: analysis merging generation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "15", + "entity_type": "EQUATION_OR_FORMULA", + "description": "15 is the label or identifier for the equation describing the synthesizer operator s function", + "source_ids": [ + 129 + ], + "id": "Name: 15\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula (15)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable A as the output of a Synthesizer function. LaTeX: 𝐴 = Synthesizer ( 𝑞, 𝑁 𝑅 ) (15)", + "source_ids": [ + 130 + ], + "id": "Name: formula (15)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "table: cref='#/texts/136'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/136'", + "source_ids": [ + 132 + ], + "id": "Name: table: cref='#/texts/136'...\nType: TABLE" + }, + { + "entity_name": "cref", + "entity_type": "EQUATION_OR_FORMULA", + "description": "A cross-reference identifier or formula string found in the description, pointing to a specific text location ('#/texts/136').", + "source_ids": [ + 132 + ], + "id": "Name: cref\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "8", + "entity_type": "MEASUREMENT", + "description": "8 is a numerical value mentioned in the text likely representing a count or identifier", + "source_ids": [ + 133 + ], + "id": "Name: 8\nType: MEASUREMENT" + }, + { + "entity_name": "map operator", + "entity_type": "TASK_OR_PROBLEM", + "description": "the map operator is a component that performs fine grained analysis on individual evidence blocks or sub problems", + "source_ids": [ + 134 + ], + "id": "Name: map operator\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "decompose", + "entity_type": "TASK_OR_PROBLEM", + "description": "decompose is a process that generates sub problems which are analyzed by the map operator", + "source_ids": [ + 134 + ], + "id": "Name: decompose\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "reduce operator", + "entity_type": "TASK_OR_PROBLEM", + "description": "the reduce operator is a component that aggregates partial results to construct the final response", + "source_ids": [ + 134 + ], + "id": "Name: reduce operator\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "global filter", + "entity_type": "TASK_OR_PROBLEM", + "description": "the global filter is a mechanism used to generate statistical counts as partial results", + "source_ids": [ + 134 + ], + "id": "Name: global filter\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "evidence blocks", + "entity_type": "TASK_OR_PROBLEM", + "description": "evidence blocks are the individual units of content that the map operator analyzes", + "source_ids": [ + 134 + ], + "id": "Name: evidence blocks\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "sub problems", + "entity_type": "TASK_OR_PROBLEM", + "description": "sub problems are specific issues derived from decompose that are analyzed by the map operator", + "source_ids": [ + 134 + ], + "id": "Name: sub problems\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "intermediate insights", + "entity_type": "TASK_OR_PROBLEM", + "description": "intermediate insights are the outputs generated by the map operator during its analysis", + "source_ids": [ + 134 + ], + "id": "Name: intermediate insights\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "partial results", + "entity_type": "TASK_OR_PROBLEM", + "description": "partial results are the outputs from the map operator that are aggregated by the reduce operator", + "source_ids": [ + 134 + ], + "id": "Name: partial results\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "answers to decomposed sub queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "answers to decomposed sub queries are a type of partial result aggregated by the reduce operator", + "source_ids": [ + 134 + ], + "id": "Name: answers to decomposed sub queries\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "statistical counts", + "entity_type": "TASK_OR_PROBLEM", + "description": "statistical counts are a type of partial result derived from a global filter and aggregated by the reduce operator", + "source_ids": [ + 134 + ], + "id": "Name: statistical counts\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "final response", + "entity_type": "TASK_OR_PROBLEM", + "description": "the final response is the constructed output created by the reduce operator", + "source_ids": [ + 134 + ], + "id": "Name: final response\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "detailed content extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "detailed content extraction is a capability handled by the system s separation of map and reduce operators", + "source_ids": [ + 134 + ], + "id": "Name: detailed content extraction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "high level reasoning synthesis", + "entity_type": "TASK_OR_PROBLEM", + "description": "high level reasoning synthesis is a capability handled by the system s separation of map and reduce operators", + "source_ids": [ + 134 + ], + "id": "Name: high level reasoning synthesis\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "figure 4 b", + "entity_type": "IMAGE", + "description": "figure 4 b is an image presenting an execution trace for a single hop query", + "source_ids": [ + 135 + ], + "id": "Name: figure 4 b\nType: IMAGE" + }, + { + "entity_name": "ranking prompt example", + "entity_type": "TASK_OR_PROBLEM", + "description": "ranking prompt example is a specific example context mentioned in the query regarding the type of car", + "source_ids": [ + 135 + ], + "id": "Name: ranking prompt example\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "select by entity", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "select by entity is a method used to retrieve relevant nodes after entity identification", + "source_ids": [ + 135 + ], + "id": "Name: select by entity\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "skyline filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "skyline filtering is a technique used to refine nodes during the process", + "source_ids": [ + 135 + ], + "id": "Name: skyline filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "reduce", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "reduce is a method used to synthesize the final answer", + "source_ids": [ + 135 + ], + "id": "Name: reduce\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "planning phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "the planning phase is the initial stage where the agent classifies the query and generates a workflow", + "source_ids": [ + 135 + ], + "id": "Name: planning phase\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Reasoning is a cognitive process of drawing conclusions that is identified as a challenge in the text and is also used as a step to refine nodes in the process.", + "source_ids": [ + 179, + 135 + ], + "id": "Name: reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "6 experiments", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section details the empirical validation of the proposed BookRAG method, including experimental setup, benchmarks used, and performance results compared to baselines.", + "source_ids": [ + 136 + ], + "id": "Name: 6 experiments\nType: SECTION_TITLE" + }, + { + "entity_name": "experiments", + "entity_type": "TASK_OR_PROBLEM", + "description": "The experiments refer to the systematic computational procedures and evaluations conducted to validate the effectiveness of the BookRAG approach, as described in section 6, and represent the activities for which the datasets in table 4 were used.", + "source_ids": [ + 136, + 139 + ], + "id": "Name: experiments\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "baseline methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "baseline methods are the strong existing approaches used for comparison against bookrag in the experiments", + "source_ids": [ + 137 + ], + "id": "Name: baseline methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "Accuracy is a primary evaluation metric used to assess performance across various contexts, including the evaluation of bookrag and baseline methods, as well as the w o selector variant despite its high computational costs. In the Qasper dataset, it is represented by blue bars and is often contrasted with exact match, implying it is a less strict measure. Specific definitions include the proportion of cases where the set of named entities in a model's response is a subset of those in the ground truth, as well as a calculation of correctness based on whether the normalized ground truth is a substring of the normalized raw response.", + "source_ids": [ + 226, + 229, + 137, + 172, + 144, + 177, + 221 + ], + "id": "Name: accuracy\nType: EVALUATION_METRIC" + }, + { + "entity_name": "6.1 setup", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experiments' within the BookRAG paper, this section details the experimental configuration, including baseline methods, evaluation metrics (efficiency and accuracy), and the document QA tasks used to assess the proposed approach.", + "source_ids": [ + 138 + ], + "id": "Name: 6.1 setup\nType: SECTION_TITLE" + }, + { + "entity_name": "table 4", + "entity_type": "TABLE", + "description": "Table 4 is a table that lists the datasets used in experiments and presents the statistics of those mentioned datasets.", + "source_ids": [ + 139, + 141 + ], + "id": "Name: table 4\nType: TABLE" + }, + { + "entity_name": "em", + "entity_type": "EVALUATION_METRIC", + "description": "em, short for exact match, is an evaluation metric used in experiments to measure question answering performance.", + "source_ids": [ + 170, + 139 + ], + "id": "Name: em\nType: EVALUATION_METRIC" + }, + { + "entity_name": "f1", + "entity_type": "EVALUATION_METRIC", + "description": "F1 denotes the F1 score, an evaluation metric used in experiments to measure question answering performance.", + "source_ids": [ + 170, + 139 + ], + "id": "Name: f1\nType: EVALUATION_METRIC" + }, + { + "entity_name": "exact match", + "entity_type": "EVALUATION_METRIC", + "description": "Exact match, abbreviated as EM, is a strict evaluation metric used to assess performance in text-based tasks by measuring whether the normalized extracted answer is character-for-character identical to the ground truth. It serves as a primary metric for evaluating performance, including comparisons of BookRAG against baselines, and is represented by blue bars in the MMLongBench benchmark.", + "source_ids": [ + 229, + 170, + 139, + 144, + 177, + 152 + ], + "id": "Name: exact match\nType: EVALUATION_METRIC" + }, + { + "entity_name": "f1 score", + "entity_type": "EVALUATION_METRIC", + "description": "The F1 score is an evaluation metric used to measure the performance of text span answers by comparing extracted answers to ground truth, and it is often represented by red bars.", + "source_ids": [ + 177, + 170, + 139, + 231 + ], + "id": "Name: f1 score\nType: EVALUATION_METRIC" + }, + { + "entity_name": "datasets", + "entity_type": "DATASET_OR_CORPUS", + "description": "Datasets refer to the collection of data used in experiments, serving as various collections to evaluate the performance of methods, including the gradient-based ER method.", + "source_ids": [ + 176, + 153, + 139 + ], + "id": "Name: datasets\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "our", + "entity_type": "ORGANIZATION", + "description": "our refers to the research group or team conducting the experiments mentioned in the text", + "source_ids": [ + 139 + ], + "id": "Name: our\nType: ORGANIZATION" + }, + { + "entity_name": "table: cref='#/texts/143'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/143'", + "source_ids": [ + 140 + ], + "id": "Name: table: cref='#/texts/143'...\nType: TABLE" + }, + { + "entity_name": "texts/143", + "entity_type": "SECTION_TITLE", + "description": "A reference identifier extracted from the description string 'cref='#/texts/143'', likely pointing to a specific section or text element within a document structure.", + "source_ids": [ + 140 + ], + "id": "Name: texts/143\nType: SECTION_TITLE" + }, + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "mmlongbench is a comprehensive benchmark and dataset designed to evaluate question-answering capabilities on long-form documents, providing page numbers for filtering candidate blocks and measuring exact match performance. It is utilized to assess the token consumption of systems like DocETL and BookRAG, generate query types for case studies, and support global aggregation analyses. Additionally, the dataset served as the basis for sampling 200 queries for error analysis and was featured in comparative evaluations and charts.", + "source_ids": [ + 160, + 141, + 175, + 144, + 177, + 181, + 182, + 183, + 159 + ], + "id": "Name: mmlongbench\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "m3docvqa", + "entity_type": "DATASET_OR_CORPUS", + "description": "m3docvqa is an open-domain benchmark dataset designed to test retrieval-augmented generation (RAG) systems on HTML-type documents from Wikipedia. It is specifically used to evaluate the exact match performance and retrieval recall of the BookRAG system, serving as the second dataset in comparative evaluations.", + "source_ids": [ + 152, + 141, + 157, + 159 + ], + "id": "Name: m3docvqa\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "Qasper is a question-answering dataset focused on scientific papers that requires evidence retrieval from the entire document and provides evidence statements for filtering candidate blocks. It is used to measure computational cost in tokens, evaluate accuracy performance, and generate query types in case studies. Additionally, Qasper serves as the source dataset for single-hop and multi-hop case studies, and 200 sampled queries were taken from it for error analysis.", + "source_ids": [ + 172, + 141, + 175, + 144, + 177, + 181, + 182, + 183, + 159 + ], + "id": "Name: qasper\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "human annotators", + "entity_type": "PERSON", + "description": "human annotators are individuals who answer and refine the synthesized qa pairs", + "source_ids": [ + 141 + ], + "id": "Name: human annotators\nType: PERSON" + }, + { + "entity_name": "20", + "entity_type": "PERCENTAGE", + "description": "20 represents the proportion of the final QA pairs that are synthesized additional pairs and is also the percentage increase in graph density achieved by the gradient-based ER method across datasets.", + "source_ids": [ + 176, + 141 + ], + "id": "Name: 20\nType: PERCENTAGE" + }, + { + "entity_name": "html type documents", + "entity_type": "PRODUCT", + "description": "html type documents are the source material for the m3docvqa benchmark", + "source_ids": [ + 141 + ], + "id": "Name: html type documents\nType: PRODUCT" + }, + { + "entity_name": "wikipedia pages", + "entity_type": "LOCATION", + "description": "wikipedia pages are the specific source of the html type documents used in m3docvqa", + "source_ids": [ + 141 + ], + "id": "Name: wikipedia pages\nType: LOCATION" + }, + { + "entity_name": "guidebooks", + "entity_type": "PRODUCT", + "description": "guidebooks are one of the diverse categories of long form documents covered by mmlongbench", + "source_ids": [ + 141 + ], + "id": "Name: guidebooks\nType: PRODUCT" + }, + { + "entity_name": "financial reports", + "entity_type": "PRODUCT", + "description": "financial reports are one of the diverse categories of long form documents covered by mmlongbench", + "source_ids": [ + 141 + ], + "id": "Name: financial reports\nType: PRODUCT" + }, + { + "entity_name": "industry files", + "entity_type": "PRODUCT", + "description": "industry files are one of the diverse categories of long form documents covered by mmlongbench", + "source_ids": [ + 141 + ], + "id": "Name: industry files\nType: PRODUCT" + }, + { + "entity_name": "scientific papers", + "entity_type": "PRODUCT", + "description": "scientific papers are the focus of the qasper dataset", + "source_ids": [ + 141 + ], + "id": "Name: scientific papers\nType: PRODUCT" + }, + { + "entity_name": "figures", + "entity_type": "IMAGE", + "description": "Figures are visual elements mentioned in example queries regarding counting and serve as document elements from which the LLM generates global questions.", + "source_ids": [ + 258, + 141 + ], + "id": "Name: figures\nType: IMAGE" + }, + { + "entity_name": "global level questions", + "entity_type": "TASK_OR_PROBLEM", + "description": "global level questions are the specific type of questions synthesized to address scarcity in original benchmarks", + "source_ids": [ + 141 + ], + "id": "Name: global level questions\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "qa pairs", + "entity_type": "TASK_OR_PROBLEM", + "description": "qa pairs are the output units generated by the llm and refined by human annotators", + "source_ids": [ + 141 + ], + "id": "Name: qa pairs\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "rag systems", + "entity_type": "SOFTWARE", + "description": "rag systems are the target systems tested by the m3docvqa benchmark", + "source_ids": [ + 141 + ], + "id": "Name: rag systems\nType: SOFTWARE" + }, + { + "entity_name": "wikipedia", + "entity_type": "ORGANIZATION", + "description": "wikipedia is an organization associated with the url provided in the text", + "source_ids": [ + 142 + ], + "id": "Name: wikipedia\nType: ORGANIZATION" + }, + { + "entity_name": "https www wikipedia org", + "entity_type": "LOCATION", + "description": "https www wikipedia org is a web address mentioned in the text", + "source_ids": [ + 142 + ], + "id": "Name: https www wikipedia org\nType: LOCATION" + }, + { + "entity_name": "token based f1 score", + "entity_type": "EVALUATION_METRIC", + "description": "token based f1 score is a primary evaluation metric used to assess performance in the text", + "source_ids": [ + 144 + ], + "id": "Name: token based f1 score\nType: EVALUATION_METRIC" + }, + { + "entity_name": "time cost", + "entity_type": "EVALUATION_METRIC", + "description": "time cost is a metric used to assess efficiency during the response phase", + "source_ids": [ + 144 + ], + "id": "Name: time cost\nType: EVALUATION_METRIC" + }, + { + "entity_name": "token usage", + "entity_type": "EVALUATION_METRIC", + "description": "token usage is a metric used to assess efficiency during the response phase", + "source_ids": [ + 144 + ], + "id": "Name: token usage\nType: EVALUATION_METRIC" + }, + { + "entity_name": "pdf parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "pdf parsing is a method mentioned in the text that is evaluated using retrieval recall", + "source_ids": [ + 144 + ], + "id": "Name: pdf parsing\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "texts", + "entity_type": "TABLE", + "description": "texts are specific pdf blocks labeled to establish ground truth", + "source_ids": [ + 144 + ], + "id": "Name: texts\nType: TABLE" + }, + { + "entity_name": "titles", + "entity_type": "TABLE", + "description": "titles are specific pdf blocks labeled to establish ground truth", + "source_ids": [ + 144 + ], + "id": "Name: titles\nType: TABLE" + }, + { + "entity_name": "images", + "entity_type": "TABLE", + "description": "images are specific pdf blocks labeled to establish ground truth", + "source_ids": [ + 144 + ], + "id": "Name: images\nType: TABLE" + }, + { + "entity_name": "formulas", + "entity_type": "TABLE", + "description": "formulas are specific pdf blocks labeled to establish ground truth", + "source_ids": [ + 144 + ], + "id": "Name: formulas\nType: TABLE" + }, + { + "entity_name": "ground truth", + "entity_type": "CONCEPT", + "description": "Ground truth is the established standard used to evaluate retrieval recall and guide manual labeling, referring to the correct or expected answer used as a benchmark for evaluation.", + "source_ids": [ + 144, + 224 + ], + "id": "Name: ground truth\nType: CONCEPT" + }, + { + "entity_name": "metadata", + "entity_type": "CONCEPT", + "description": "metadata refers to the ground truth evidence information provided in each dataset that guides the labeling process", + "source_ids": [ + 144 + ], + "id": "Name: metadata\nType: CONCEPT" + }, + { + "entity_name": "modality", + "entity_type": "CONCEPT", + "description": "modality is a given attribute used to filter candidate blocks across all datasets", + "source_ids": [ + 144 + ], + "id": "Name: modality\nType: CONCEPT" + }, + { + "entity_name": "pdf blocks", + "entity_type": "TABLE", + "description": "pdf blocks are the specific units of content texts titles tables images formulas that are manually labeled", + "source_ids": [ + 144 + ], + "id": "Name: pdf blocks\nType: TABLE" + }, + { + "entity_name": "candidate blocks", + "entity_type": "TABLE", + "description": "candidate blocks are the set of blocks filtered using modality page numbers and evidence statements before manual annotation", + "source_ids": [ + 144 + ], + "id": "Name: candidate blocks\nType: TABLE" + }, + { + "entity_name": "response phase", + "entity_type": "TIME", + "description": "the response phase is the specific time period during which time cost and token usage are measured", + "source_ids": [ + 144 + ], + "id": "Name: response phase\nType: TIME" + }, + { + "entity_name": "page numbers", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 144 + ], + "id": "Name: page numbers\nType: UNKNOWN" + }, + { + "entity_name": "evidence statements", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 144 + ], + "id": "Name: evidence statements\nType: UNKNOWN" + }, + { + "entity_name": "baselines", + "entity_type": "TASK_OR_PROBLEM", + "description": "baselines refer to the standard configurations used for comparison in the experiments", + "source_ids": [ + 145 + ], + "id": "Name: baselines\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "three model configurations", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "three model configurations are the specific experimental setups considered in the study", + "source_ids": [ + 145 + ], + "id": "Name: three model configurations\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "our experiments", + "entity_type": "EVENT", + "description": "our experiments refer to the specific study or set of trials being conducted to evaluate the model configurations", + "source_ids": [ + 145 + ], + "id": "Name: our experiments\nType: EVENT" + }, + { + "entity_name": "conventional rag", + "entity_type": "TASK_OR_PROBLEM", + "description": "conventional rag is described as the most common pipeline for document analysis involving text extraction and chunking", + "source_ids": [ + 146 + ], + "id": "Name: conventional rag\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "bm25", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "bm25 is identified as a strong and widely used retrieval model selected for implementation", + "source_ids": [ + 146 + ], + "id": "Name: bm25\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "vanilla rag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "vanilla rag is identified as a strong and widely used retrieval model selected for implementation", + "source_ids": [ + 146 + ], + "id": "Name: vanilla rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "layout vanilla", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "layout vanilla is a variant of vanilla rag that utilizes document layout analysis for semantic chunking", + "source_ids": [ + 146 + ], + "id": "Name: layout vanilla\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "document analysis", + "entity_type": "TASK_OR_PROBLEM", + "description": "document analysis is the general task where raw text is extracted and processed in the described pipeline", + "source_ids": [ + 146 + ], + "id": "Name: document analysis\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "raw text", + "entity_type": "MATERIAL", + "description": "raw text is the input material that is first extracted in the pipeline", + "source_ids": [ + 146 + ], + "id": "Name: raw text\nType: MATERIAL" + }, + { + "entity_name": "segments", + "entity_type": "MEASUREMENT", + "description": "segments are the chunks of specified size that the raw text is divided into", + "source_ids": [ + 146 + ], + "id": "Name: segments\nType: MEASUREMENT" + }, + { + "entity_name": "document layout analysis", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "document layout analysis is the technique used by layout vanilla for semantic chunking", + "source_ids": [ + 146 + ], + "id": "Name: document layout analysis\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "semantic chunking", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "semantic chunking is the process of dividing text into segments based on meaning utilized by layout vanilla", + "source_ids": [ + 146 + ], + "id": "Name: semantic chunking\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "raptor", + "entity_type": "TECHNOLOGY", + "description": "raptor is a specific technology selected as an example of graph based rag methods", + "source_ids": [ + 147 + ], + "id": "Name: raptor\nType: TECHNOLOGY" + }, + { + "entity_name": "graphrag", + "entity_type": "TECHNOLOGY", + "description": "graphrag is a specific technology selected as an example of graph based rag methods", + "source_ids": [ + 147 + ], + "id": "Name: graphrag\nType: TECHNOLOGY" + }, + { + "entity_name": "graphrag global", + "entity_type": "TECHNOLOGY", + "description": "graphrag global is a version of graphrag that employs global search methods", + "source_ids": [ + 147 + ], + "id": "Name: graphrag global\nType: TECHNOLOGY" + }, + { + "entity_name": "graphrag local", + "entity_type": "TECHNOLOGY", + "description": "graphrag local is a version of graphrag that employs local search methods", + "source_ids": [ + 147 + ], + "id": "Name: graphrag local\nType: TECHNOLOGY" + }, + { + "entity_name": "documents", + "entity_type": "PRODUCT", + "description": "documents are the textual content from which graph based rag methods extract information", + "source_ids": [ + 147 + ], + "id": "Name: documents\nType: PRODUCT" + }, + { + "entity_name": "graph data", + "entity_type": "TECHNOLOGY", + "description": "graph data is the type of data leveraged during the retrieval process in graph based rag methods", + "source_ids": [ + 147 + ], + "id": "Name: graph data\nType: TECHNOLOGY" + }, + { + "entity_name": "global search methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "global search methods are employed by the graphrag global version", + "source_ids": [ + 147 + ], + "id": "Name: global search methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "local search methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "local search methods are employed by the graphrag local version", + "source_ids": [ + 147 + ], + "id": "Name: local search methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "layoutsegmentedrag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "layoutsegmentedrag is a category of methods that utilize layout analysis to segment document content into discrete structural units", + "source_ids": [ + 148 + ], + "id": "Name: layoutsegmentedrag\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "mm vanilla", + "entity_type": "PRODUCT", + "description": "mm vanilla is a method that utilizes multi modal embeddings for visual and textual content", + "source_ids": [ + 148 + ], + "id": "Name: mm vanilla\nType: PRODUCT" + }, + { + "entity_name": "pageindex", + "entity_type": "PRODUCT", + "description": "pageindex is a method or system referenced as an inspiration for a tree based method", + "source_ids": [ + 148 + ], + "id": "Name: pageindex\nType: PRODUCT" + }, + { + "entity_name": "treetraverse", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "treetraverse is a tree based method inspired by pageindex where an llm navigates the document s tree structure", + "source_ids": [ + 148 + ], + "id": "Name: treetraverse\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "graphranker", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "GraphRanker is a graph-based method extended from HippoRAG that applies personalized PageRank to rank relevant nodes and is listed in the chart legend as a ranking method utilizing graph structures.", + "source_ids": [ + 148, + 159 + ], + "id": "Name: graphranker\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "hipporag", + "entity_type": "METHOD_OR_ARCHITECTURE", + "description": "hipporag is a method or architecture from which graphranker is extended", + "source_ids": [ + 148 + ], + "id": "Name: hipporag\nType: METHOD_OR_ARCHITECTURE" + }, + { + "entity_name": "personalized pagerank", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "personalized pagerank is a technique applied by graphranker to rank relevant nodes", + "source_ids": [ + 148 + ], + "id": "Name: personalized pagerank\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "page 39", + "entity_type": "PUBLICATION_VENUE", + "description": "page 39 is a citation reference associated with the pageindex method", + "source_ids": [ + 148 + ], + "id": "Name: page 39\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "page 47", + "entity_type": "PUBLICATION_VENUE", + "description": "page 47 is a citation reference associated with the docetl system", + "source_ids": [ + 148 + ], + "id": "Name: page 47\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "page 19", + "entity_type": "PUBLICATION_VENUE", + "description": "page 19 is a citation reference associated with the hipporag method", + "source_ids": [ + 148 + ], + "id": "Name: page 19\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "page 20", + "entity_type": "PUBLICATION_VENUE", + "description": "page 20 is a citation reference associated with the personalized pagerank technique", + "source_ids": [ + 148 + ], + "id": "Name: page 20\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "qwen family", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The Qwen family refers to a set of state-of-the-art backbone models used to power BookRAG and baseline methods.", + "source_ids": [ + 149, + 238 + ], + "id": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "mineru", + "entity_type": "SOFTWARE", + "description": "Mineru is a software tool employed for robust document layout parsing.", + "source_ids": [ + 149, + 238 + ], + "id": "Name: mineru\nType: SOFTWARE" + }, + { + "entity_name": "github com sam234990 bookrag", + "entity_type": "LOCATION", + "description": "github com sam234990 bookrag is the url where source code prompts and configurations for bookrag are available", + "source_ids": [ + 149 + ], + "id": "Name: github com sam234990 bookrag\nType: LOCATION" + }, + { + "entity_name": "0 6", + "entity_type": "MEASUREMENT", + "description": "0 6 is the threshold value set for the gradient g in the implementation details", + "source_ids": [ + 149 + ], + "id": "Name: 0 6\nType: MEASUREMENT" + }, + { + "entity_name": "technical report", + "entity_type": "PUBLICATION_VENUE", + "description": "A technical report is a publication venue that serves as a document containing more details about an implementation, often referenced by a specific identifier such as 57, and it describes the type of document being referenced.", + "source_ids": [ + 194, + 149 + ], + "id": "Name: technical report\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "gradient g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "gradient g is a parameter with a threshold set to 0 6 in the implementation details", + "source_ids": [ + 149 + ], + "id": "Name: gradient g\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "appendix", + "entity_type": "SECTION_TITLE", + "description": "the appendix is a section of the technical report where more details are provided", + "source_ids": [ + 149 + ], + "id": "Name: appendix\nType: SECTION_TITLE" + }, + { + "entity_name": "prompts", + "entity_type": "TASK_OR_PROBLEM", + "description": "prompts are specific instructions or inputs used in the bookrag system available on github", + "source_ids": [ + 149 + ], + "id": "Name: prompts\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "detailed configurations", + "entity_type": "TASK_OR_PROBLEM", + "description": "detailed configurations are specific settings for the bookrag system available on github", + "source_ids": [ + 149 + ], + "id": "Name: detailed configurations\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "state of theart", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "state of theart describes the quality of the backbone models used in the comparison", + "source_ids": [ + 149 + ], + "id": "Name: state of theart\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "robust document layout parsing", + "entity_type": "TASK_OR_PROBLEM", + "description": "Robust document layout parsing is the specific task performed by and utilized for Mineru.", + "source_ids": [ + 149, + 238 + ], + "id": "Name: robust document layout parsing\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "fair comparison", + "entity_type": "TASK_OR_PROBLEM", + "description": "fair comparison is the goal of the experimental setup described in the text", + "source_ids": [ + 149 + ], + "id": "Name: fair comparison\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "baseline methods", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 149 + ], + "id": "Name: baseline methods\nType: UNKNOWN" + }, + { + "entity_name": "implementation details", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 149 + ], + "id": "Name: implementation details\nType: UNKNOWN" + }, + { + "entity_name": "6.2 overall results", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experiments' within the BookRAG paper, this section presents the aggregate performance metrics comparing the proposed method against baseline approaches on document QA tasks.", + "source_ids": [ + 150 + ], + "id": "Name: 6.2 overall results\nType: SECTION_TITLE" + }, + { + "entity_name": "query efficiency", + "entity_type": "TASK_OR_PROBLEM", + "description": "query efficiency is a metric being analyzed to determine the system s performance", + "source_ids": [ + 151 + ], + "id": "Name: query efficiency\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "evaluation", + "entity_type": "EVENT", + "description": "evaluation is the comprehensive process of analyzing bookrag s performance described in the text", + "source_ids": [ + 151 + ], + "id": "Name: evaluation\nType: EVENT" + }, + { + "entity_name": "table 5", + "entity_type": "TABLE", + "description": "Table 5 is a performance comparison table that displays the results of different methods on document question answering tasks, specifically highlighting the comparison of QA performance between BookRAG and various baselines.", + "source_ids": [ + 152, + 153 + ], + "id": "Name: table 5\nType: TABLE" + }, + { + "entity_name": "layout vanilla", + "entity_type": "PRODUCT", + "description": "layout vanilla is a baseline method that consistently outperforms vanilla rag", + "source_ids": [ + 152 + ], + "id": "Name: layout vanilla\nType: PRODUCT" + }, + { + "entity_name": "vanilla rag", + "entity_type": "PRODUCT", + "description": "vanilla rag is a baseline method that is outperformed by layout vanilla", + "source_ids": [ + 152 + ], + "id": "Name: vanilla rag\nType: PRODUCT" + }, + { + "entity_name": "tree traverse", + "entity_type": "PRODUCT", + "description": "tree traverse is a method highlighted for having suboptimal results due to limitations in hierarchical navigation", + "source_ids": [ + 152 + ], + "id": "Name: tree traverse\nType: PRODUCT" + }, + { + "entity_name": "graphranker", + "entity_type": "PRODUCT", + "description": "Graphranker is a layout-based baseline system compared against BookRag, but it is highlighted for having suboptimal results due to limitations in graph-based reasoning.", + "source_ids": [ + 152, + 157 + ], + "id": "Name: graphranker\nType: PRODUCT" + }, + { + "entity_name": "tree graph bookindex", + "entity_type": "PRODUCT", + "description": "tree graph bookindex is a component of bookrag that contributes to its superior performance", + "source_ids": [ + 152 + ], + "id": "Name: tree graph bookindex\nType: PRODUCT" + }, + { + "entity_name": "agent based planning", + "entity_type": "PRODUCT", + "description": "agent based planning is a component of bookrag that contributes to its superior performance", + "source_ids": [ + 152 + ], + "id": "Name: agent based planning\nType: PRODUCT" + }, + { + "entity_name": "18 0", + "entity_type": "PERCENTAGE", + "description": "18 0 is the margin by which bookrag outperforms the top performing baseline in exact match on m3docvqa", + "source_ids": [ + 152 + ], + "id": "Name: 18 0\nType: PERCENTAGE" + }, + { + "entity_name": "qa performance", + "entity_type": "TASK_OR_PROBLEM", + "description": "QA performance is the specific task being evaluated and compared in the text, referring to the quality of answers generated which is analyzed under different query types.", + "source_ids": [ + 152, + 179 + ], + "id": "Name: qa performance\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "hierarchical navigation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "hierarchical navigation is a method used by tree traverse that is noted for missing cross sectional context", + "source_ids": [ + 152 + ], + "id": "Name: hierarchical navigation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "graph based reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graph based reasoning is a method used by graphranker that is noted for drifting into irrelevant scopes", + "source_ids": [ + 152 + ], + "id": "Name: graph based reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "context fragmentation", + "entity_type": "TASK_OR_PROBLEM", + "description": "context fragmentation is a limitation of existing baselines that bookrag overcomes", + "source_ids": [ + 152 + ], + "id": "Name: context fragmentation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "static query workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "static query workflow is a limitation of existing baselines that bookrag overcomes", + "source_ids": [ + 152 + ], + "id": "Name: static query workflow\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "cross sectional context", + "entity_type": "CONCEPT", + "description": "cross sectional context is information often missed by methods relying solely on hierarchical navigation", + "source_ids": [ + 152 + ], + "id": "Name: cross sectional context\nType: CONCEPT" + }, + { + "entity_name": "irrelevant scopes", + "entity_type": "CONCEPT", + "description": "irrelevant scopes are areas that methods relying solely on graph based reasoning may drift into", + "source_ids": [ + 152 + ], + "id": "Name: irrelevant scopes\nType: CONCEPT" + }, + { + "entity_name": "queries", + "entity_type": "CONCEPT", + "description": "queries are inputs that bookrag effectively classifies to configure optimal workflows", + "source_ids": [ + 152 + ], + "id": "Name: queries\nType: CONCEPT" + }, + { + "entity_name": "workflows", + "entity_type": "CONCEPT", + "description": "workflows are configured by bookrag to ensure precise evidence retrieval and accurate generation", + "source_ids": [ + 152 + ], + "id": "Name: workflows\nType: CONCEPT" + }, + { + "entity_name": "baselines", + "entity_type": "PRODUCT", + "description": "baselines are the three categories of methods against which bookrag is compared", + "source_ids": [ + 152 + ], + "id": "Name: baselines\nType: PRODUCT" + }, + { + "entity_name": "top performing baseline", + "entity_type": "PRODUCT", + "description": "top performing baseline is the specific baseline that bookrag substantially outperforms", + "source_ids": [ + 152 + ], + "id": "Name: top performing baseline\nType: PRODUCT" + }, + { + "entity_name": "performance comparison", + "entity_type": "TASK_OR_PROBLEM", + "description": "performance comparison refers to the evaluation of different methods across various datasets", + "source_ids": [ + 153 + ], + "id": "Name: performance comparison\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "different methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "different methods are the various approaches being compared in the table for solving document qa tasks", + "source_ids": [ + 153 + ], + "id": "Name: different methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "best results", + "entity_type": "EVALUATION_METRIC", + "description": "best results refer to the top performing outcomes marked in bold in the table", + "source_ids": [ + 153 + ], + "id": "Name: best results\nType: EVALUATION_METRIC" + }, + { + "entity_name": "second best results", + "entity_type": "EVALUATION_METRIC", + "description": "second best results refer to the runner up outcomes marked in underlined in the table", + "source_ids": [ + 153 + ], + "id": "Name: second best results\nType: EVALUATION_METRIC" + }, + { + "entity_name": "bold", + "entity_type": "COLOR", + "description": "bold refers to the text formatting style used to mark the best results in the table", + "source_ids": [ + 153 + ], + "id": "Name: bold\nType: COLOR" + }, + { + "entity_name": "underlined", + "entity_type": "SHAPE", + "description": "underlined refers to the text formatting style used to mark the second best results in the table", + "source_ids": [ + 153 + ], + "id": "Name: underlined\nType: SHAPE" + }, + { + "entity_name": "table: cref='#/texts/156'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/156'", + "source_ids": [ + 154 + ], + "id": "Name: table: cref='#/texts/156'...\nType: TABLE" + }, + { + "entity_name": "cref", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "cref is a reference identifier or cross-reference key found in the description text, pointing to specific text locations such as '#/texts/156' and '#/texts/220'.", + "source_ids": [ + 154, + 171 + ], + "id": "Name: cref\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "table 6", + "entity_type": "TABLE", + "description": "table 6 is a table presenting a comparison of retrieval recall among layout based methods", + "source_ids": [ + 155 + ], + "id": "Name: table 6\nType: TABLE" + }, + { + "entity_name": "layout based methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "layout based methods are the techniques being evaluated for their retrieval recall performance", + "source_ids": [ + 155 + ], + "id": "Name: layout based methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "cref='#/texts/158'", + "entity_type": "TABLE", + "description": "A table entity identified by the reference string provided in the description, representing a specific text section or data block.", + "source_ids": [ + 156 + ], + "id": "Name: cref='#/texts/158'\nType: TABLE" + }, + { + "entity_name": "ift inspired selector reasoner workflow", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the ift inspired selector reasoner workflow is the process used by bookrag to classify queries and analyze information", + "source_ids": [ + 157 + ], + "id": "Name: ift inspired selector reasoner workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "71 2", + "entity_type": "PERCENTAGE", + "description": "71 2 is the retrieval recall achieved by bookrag on the m3docvqa dataset", + "source_ids": [ + 157 + ], + "id": "Name: 71 2\nType: PERCENTAGE" + }, + { + "entity_name": "44 5", + "entity_type": "PERCENTAGE", + "description": "44 5 is the maximum retrieval recall achieved by the graphranker baseline", + "source_ids": [ + 157 + ], + "id": "Name: 44 5\nType: PERCENTAGE" + }, + { + "entity_name": "9 87", + "entity_type": "MEASUREMENT", + "description": "9 87 is the average number of retained nodes on one of the three datasets after the skyline ranker process", + "source_ids": [ + 157 + ], + "id": "Name: 9 87\nType: MEASUREMENT" + }, + { + "entity_name": "6 86", + "entity_type": "MEASUREMENT", + "description": "6 86 is the average number of retained nodes on another of the three datasets after the skyline ranker process", + "source_ids": [ + 157 + ], + "id": "Name: 6 86\nType: MEASUREMENT" + }, + { + "entity_name": "8 6", + "entity_type": "MEASUREMENT", + "description": "8 6 is the average number of retained nodes on the third dataset after the skyline ranker process", + "source_ids": [ + 157 + ], + "id": "Name: 8 6\nType: MEASUREMENT" + }, + { + "entity_name": "10", + "entity_type": "MEASUREMENT", + "description": "The value 10 serves multiple roles depending on the context: it is the standard top k setting used for comparison, a numerical measurement or count, the issue number of a publication volume, the retrieval top k value configured to maintain consistent candidate pool sizes, and the ending page number in a given example range.", + "source_ids": [ + 161, + 258, + 196, + 238, + 157 + ], + "id": "Name: 10\nType: MEASUREMENT" + }, + { + "entity_name": "retrieval performance", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval performance is the specific metric being evaluated to validate the retrieval design of bookrag", + "source_ids": [ + 157 + ], + "id": "Name: retrieval performance\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "ground truth layout blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "ground truth layout blocks are the reference data used to evaluate the retrieval recall", + "source_ids": [ + 157 + ], + "id": "Name: ground truth layout blocks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "layout based baselines", + "entity_type": "PRODUCT", + "description": "layout based baselines are the group of systems against which bookrag is compared", + "source_ids": [ + 157 + ], + "id": "Name: layout based baselines\nType: PRODUCT" + }, + { + "entity_name": "information patch", + "entity_type": "TASK_OR_PROBLEM", + "description": "the information patch is the precise data segment targeted by the selector component", + "source_ids": [ + 157 + ], + "id": "Name: information patch\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "candidate size", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "candidate size is the variable representing the number of candidates which is kept from inflating by the skyline ranker process", + "source_ids": [ + 157 + ], + "id": "Name: candidate size\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "three datasets", + "entity_type": "DATASET_OR_CORPUS", + "description": "three datasets are the collective group of data used to measure the average number of retained nodes", + "source_ids": [ + 157 + ], + "id": "Name: three datasets\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "standard top k setting", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the standard top k setting is the baseline configuration used for comparison with the skyline ranker results", + "source_ids": [ + 157 + ], + "id": "Name: standard top k setting\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "figure 5", + "entity_type": "IMAGE", + "description": "Figure 5 is a visual illustration that presents a comparison of query efficiency for various Retrieval-Augmented Generation (RAG) methods across three datasets, specifically evaluating BookRAG in terms of query time and token consumption.", + "source_ids": [ + 160, + 158, + 159 + ], + "id": "Name: figure 5\nType: IMAGE" + }, + { + "entity_name": "query efficiency", + "entity_type": "EVALUATION_METRIC", + "description": "query efficiency is a metric being compared in the text", + "source_ids": [ + 158 + ], + "id": "Name: query efficiency\nType: EVALUATION_METRIC" + }, + { + "entity_name": "bm25", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A classical probabilistic ranking function used for information retrieval, listed in the chart legend.", + "source_ids": [ + 159 + ], + "id": "Name: bm25\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "vanilla rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The baseline Retrieval-Augmented Generation model without additional enhancements, listed in the chart legend.", + "source_ids": [ + 159 + ], + "id": "Name: vanilla rag\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "layout + vanilla", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A variant of the vanilla RAG method that incorporates layout information, listed in the chart legend.", + "source_ids": [ + 159 + ], + "id": "Name: layout + vanilla\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "raptor", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Recursive Abstractive Processing for Tree-Organized Retrieval, a specific RAG approach listed in the chart legend.", + "source_ids": [ + 159 + ], + "id": "Name: raptor\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "graphrag-local", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A local graph-based retrieval method, listed in the chart legend.", + "source_ids": [ + 159 + ], + "id": "Name: graphrag-local\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "graphrag-global", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A global graph-based retrieval method, listed in the chart legend.", + "source_ids": [ + 159 + ], + "id": "Name: graphrag-global\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "mm-vanilla", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A multi-modal vanilla RAG baseline, listed in the chart legend.", + "source_ids": [ + 159 + ], + "id": "Name: mm-vanilla\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "tree-traverse", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A tree-traversal based retrieval or processing method, listed in the chart legend.", + "source_ids": [ + 159 + ], + "id": "Name: tree-traverse\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "query time", + "entity_type": "EVALUATION_METRIC", + "description": "A performance metric measuring the time taken to process a query, displayed on the x-axis of the left charts.", + "source_ids": [ + 159 + ], + "id": "Name: query time\nType: EVALUATION_METRIC" + }, + { + "entity_name": "token cost", + "entity_type": "EVALUATION_METRIC", + "description": "A performance metric measuring the number of tokens consumed, displayed on the x-axis of the right charts.", + "source_ids": [ + 159 + ], + "id": "Name: token cost\nType: EVALUATION_METRIC" + }, + { + "entity_name": "time (s)", + "entity_type": "MEASUREMENT", + "description": "The unit of measurement for the y-axis in the Query Time charts, representing seconds.", + "source_ids": [ + 159 + ], + "id": "Name: time (s)\nType: MEASUREMENT" + }, + { + "entity_name": "token (m)", + "entity_type": "MEASUREMENT", + "description": "The unit of measurement for the y-axis in the Token cost charts, representing millions of tokens.", + "source_ids": [ + 159 + ], + "id": "Name: token (m)\nType: MEASUREMENT" + }, + { + "entity_name": "image cref='#/texts/161'", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 159 + ], + "id": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "entity_name": "graph based rag methods", + "entity_type": "TECHNOLOGY", + "description": "graph based rag methods are existing methods used as a baseline for comparing bookrag s efficiency", + "source_ids": [ + 160 + ], + "id": "Name: graph based rag methods\nType: TECHNOLOGY" + }, + { + "entity_name": "text based rag approaches", + "entity_type": "TECHNOLOGY", + "description": "text based rag approaches are methods that generally exhibit lower latency and token usage due to the absence of vlm processing", + "source_ids": [ + 160 + ], + "id": "Name: text based rag approaches\nType: TECHNOLOGY" + }, + { + "entity_name": "vlm", + "entity_type": "TECHNOLOGY", + "description": "vlm refers to vision language models the processing component absent in purely text based rag approaches", + "source_ids": [ + 160 + ], + "id": "Name: vlm\nType: TECHNOLOGY" + }, + { + "entity_name": "docetl", + "entity_type": "PRODUCT", + "description": "docetl is a baseline method against which bookrag s token consumption and query latency are compared", + "source_ids": [ + 160 + ], + "id": "Name: docetl\nType: PRODUCT" + }, + { + "entity_name": "53 million tokens", + "entity_type": "MEASUREMENT", + "description": "53 million tokens is the amount of token consumption recorded for docetl on the mmlongbench dataset", + "source_ids": [ + 160 + ], + "id": "Name: 53 million tokens\nType: MEASUREMENT" + }, + { + "entity_name": "5 million", + "entity_type": "MEASUREMENT", + "description": "5 million is the upper limit of token consumption required by bookrag on the mmlongbench dataset", + "source_ids": [ + 160 + ], + "id": "Name: 5 million\nType: MEASUREMENT" + }, + { + "entity_name": "order of magnitude", + "entity_type": "MEASUREMENT", + "description": "order of magnitude describes the scale of reduction in token consumption by bookrag compared to docetl", + "source_ids": [ + 160 + ], + "id": "Name: order of magnitude\nType: MEASUREMENT" + }, + { + "entity_name": "6.3 detailed analysis", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experiments' within the BookRAG paper, this section provides an in-depth comparative analysis of the proposed method against strong baseline methods, specifically focusing on efficiency and accuracy metrics for document QA tasks.", + "source_ids": [ + 162 + ], + "id": "Name: 6.3 detailed analysis\nType: SECTION_TITLE" + }, + { + "entity_name": "ablation study", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "ablation study is a method used to validate the contribution of each component of bookrag", + "source_ids": [ + 163 + ], + "id": "Name: ablation study\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "gradient based er", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "gradient based er is a method used in experiments to analyze its impact on qa performance", + "source_ids": [ + 163 + ], + "id": "Name: gradient based er\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "qa performance", + "entity_type": "EVALUATION_METRIC", + "description": "qa performance is the metric being evaluated in the experiments across different query types", + "source_ids": [ + 163 + ], + "id": "Name: qa performance\nType: EVALUATION_METRIC" + }, + { + "entity_name": "entity resolution method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "entity resolution method is a technique compared for effectiveness in the text", + "source_ids": [ + 163 + ], + "id": "Name: entity resolution method\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "case study", + "entity_type": "TASK_OR_PROBLEM", + "description": "A case study is a specific analysis presented in the text, serving as the context or type of analysis being presented.", + "source_ids": [ + 186, + 163 + ], + "id": "Name: case study\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "query types", + "entity_type": "TASK_OR_PROBLEM", + "description": "Query types are the different categories of questions used to evaluate the performance of systems and the quality of responses in experiments and case studies. These categories include single hop, multi hop, and global queries, which are specifically analyzed to assess QA capabilities.", + "source_ids": [ + 177, + 163, + 179, + 181 + ], + "id": "Name: query types\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "error analysis", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "error analysis is a comprehensive method performed to examine the results of the study", + "source_ids": [ + 163 + ], + "id": "Name: error analysis\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "ablation study", + "entity_type": "TASK_OR_PROBLEM", + "description": "ablation study is a task designed to evaluate the contribution of core components in bookrag", + "source_ids": [ + 164 + ], + "id": "Name: ablation study\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "gradient er", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Gradient ER is a gradient-based entity resolution method mentioned in the text, and it serves as a specific component whose removal in the WO variant highlights the role of the knowledge graph.", + "source_ids": [ + 172, + 165 + ], + "id": "Name: gradient er\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "basic er", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "basic er is a method used to merge same name entities replacing gradient er in the described scenario", + "source_ids": [ + 165 + ], + "id": "Name: basic er\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "w o gradient er", + "entity_type": "TASK_OR_PROBLEM", + "description": "w o gradient er is a scenario or condition described where the gradient based entity resolution is replaced", + "source_ids": [ + 165 + ], + "id": "Name: w o gradient er\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "same name entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "same name entities are the specific entities targeted for merging in the basic er process", + "source_ids": [ + 165 + ], + "id": "Name: same name entities\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "static standard workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "static standard workflow is the default process used for all queries when agent based planning is removed", + "source_ids": [ + 166 + ], + "id": "Name: static standard workflow\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "reasoners", + "entity_type": "TECHNOLOGY", + "description": "reasoners are systems or components that score candidate nodes affected by the removal of selector operators", + "source_ids": [ + 167 + ], + "id": "Name: reasoners\nType: TECHNOLOGY" + }, + { + "entity_name": "candidate nodes", + "entity_type": "TASK_OR_PROBLEM", + "description": "candidate nodes are the items being scored by reasoners when the selector operators are removed", + "source_ids": [ + 167 + ], + "id": "Name: candidate nodes\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "selector operators", + "entity_type": "TECHNOLOGY", + "description": "selector operators are specific components that can be removed to alter the behavior of reasoners", + "source_ids": [ + 167 + ], + "id": "Name: selector operators\nType: TECHNOLOGY" + }, + { + "entity_name": "graph reasoning", + "entity_type": "TECHNOLOGY", + "description": "graph reasoning is an operator that when removed disables the skyline ranker", + "source_ids": [ + 168 + ], + "id": "Name: graph reasoning\nType: TECHNOLOGY" + }, + { + "entity_name": "text reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "text reasoning is an operator that is removed in the described scenario", + "source_ids": [ + 169 + ], + "id": "Name: text reasoning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "table 7", + "entity_type": "TABLE", + "description": "Table 7 is a reference in the text that compares the QA performance of different variants of BookRAG, illustrating performance degradation across these variants.", + "source_ids": [ + 170, + 172 + ], + "id": "Name: table 7\nType: TABLE" + }, + { + "entity_name": "table: cref='#/texts/220'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/220'", + "source_ids": [ + 171 + ], + "id": "Name: table: cref='#/texts/220'...\nType: TABLE" + }, + { + "entity_name": "kg", + "entity_type": "DATASET_OR_CORPUS", + "description": "kg refers to a knowledge graph used to support effective reasoning in the bookrag system", + "source_ids": [ + 172 + ], + "id": "Name: kg\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "ift inspired selection mechanism", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "ift inspired selection mechanism is a strategy evaluated for its role in the system s efficiency", + "source_ids": [ + 172 + ], + "id": "Name: ift inspired selection mechanism\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "multi dimensional reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "multi dimensional reasoning is a strategy validated for its effectiveness in the system", + "source_ids": [ + 172 + ], + "id": "Name: multi dimensional reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "dynamic skyline filtering strategy", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "dynamic skyline filtering strategy is a method validated for its effectiveness in the system", + "source_ids": [ + 172 + ], + "id": "Name: dynamic skyline filtering strategy\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "w o gradient er variant", + "entity_type": "TASK_OR_PROBLEM", + "description": "the w o gradient er variant is a specific configuration used to test the role of the knowledge graph", + "source_ids": [ + 172 + ], + "id": "Name: w o gradient er variant\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "planning mechanism", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the planning mechanism is a component whose removal causes significant performance loss", + "source_ids": [ + 172 + ], + "id": "Name: planning mechanism\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "w o selector variant", + "entity_type": "TASK_OR_PROBLEM", + "description": "the w o selector variant is a configuration used to validate the efficiency of the selection strategy", + "source_ids": [ + 172 + ], + "id": "Name: w o selector variant\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "tokens", + "entity_type": "MEASUREMENT", + "description": "tokens are the unit of measurement used to quantify computational cost", + "source_ids": [ + 172 + ], + "id": "Name: tokens\nType: MEASUREMENT" + }, + { + "entity_name": "selector", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the selector is a component whose removal in the w o variant validates the efficiency of the selection strategy", + "source_ids": [ + 172 + ], + "id": "Name: selector\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "narrow then reason strategy", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the narrow then reason strategy is the specific approach inspired by ift that is being validated for efficiency", + "source_ids": [ + 172 + ], + "id": "Name: narrow then reason strategy\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "static workflow", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "a static workflow is described as insufficient for handling diverse types of queries contrasting with the dynamic approach", + "source_ids": [ + 172 + ], + "id": "Name: static workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "retrieval performance", + "entity_type": "EVALUATION_METRIC", + "description": "retrieval performance is the metric used to evaluate the impact of kg quality", + "source_ids": [ + 172 + ], + "id": "Name: retrieval performance\nType: EVALUATION_METRIC" + }, + { + "entity_name": "computational cost", + "entity_type": "MEASUREMENT", + "description": "computational cost is a metric measured in tokens to evaluate the efficiency of the variants", + "source_ids": [ + 172 + ], + "id": "Name: computational cost\nType: MEASUREMENT" + }, + { + "entity_name": "performance degradation", + "entity_type": "EVALUATION_METRIC", + "description": "performance degradation is the observed outcome across all variants confirming the essential role of each module", + "source_ids": [ + 172 + ], + "id": "Name: performance degradation\nType: EVALUATION_METRIC" + }, + { + "entity_name": "performance loss", + "entity_type": "EVALUATION_METRIC", + "description": "performance loss is the significant drop observed when the planning mechanism is removed", + "source_ids": [ + 172 + ], + "id": "Name: performance loss\nType: EVALUATION_METRIC" + }, + { + "entity_name": "11", + "entity_type": "NUMBER", + "description": "11 is a number mentioned in the text though its specific context or role is not defined", + "source_ids": [ + 173 + ], + "id": "Name: 11\nType: NUMBER" + }, + { + "entity_name": "figure 6", + "entity_type": "IMAGE", + "description": "Figure 6 is an image that presents the comparative results of an evaluation between two methods, specifically comparing graph statistics with values normalized to a basic setting.", + "source_ids": [ + 176, + 174 + ], + "id": "Name: figure 6\nType: IMAGE" + }, + { + "entity_name": "basic setting", + "entity_type": "TASK_OR_PROBLEM", + "description": "the basic setting serves as the baseline 1 0 for normalizing graph statistics values", + "source_ids": [ + 174 + ], + "id": "Name: basic setting\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "3 6e 3", + "entity_type": "MEASUREMENT", + "description": "3 6e 3 is an abbreviated density value representing 3 6 10 3", + "source_ids": [ + 174 + ], + "id": "Name: 3 6e 3\nType: MEASUREMENT" + }, + { + "entity_name": "graph statistics", + "entity_type": "TASK_OR_PROBLEM", + "description": "graph statistics are the subject of comparison in figure 6", + "source_ids": [ + 174 + ], + "id": "Name: graph statistics\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "absolute values", + "entity_type": "MEASUREMENT", + "description": "absolute values for the basic setting are annotated in the text", + "source_ids": [ + 174 + ], + "id": "Name: absolute values\nType: MEASUREMENT" + }, + { + "entity_name": "density values", + "entity_type": "MEASUREMENT", + "description": "density values are a specific type of metric mentioned that are abbreviated in the text", + "source_ids": [ + 174 + ], + "id": "Name: density values\nType: MEASUREMENT" + }, + { + "entity_name": "cref='#/texts/224'", + "entity_type": "IMAGE", + "description": "A figure containing two bar charts comparing 'Basic' and 'Gradient-based ER' performance metrics across '# Entity', 'Density', 'Diameter', and '# CC' for MMLongBench and Qasper datasets.", + "source_ids": [ + 175 + ], + "id": "Name: cref='#/texts/224'\nType: IMAGE" + }, + { + "entity_name": "basic", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The baseline method represented by blue bars in the legend, used as a comparison point against the Gradient-based ER approach.", + "source_ids": [ + 175 + ], + "id": "Name: basic\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "gradient-based er", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The proposed or specific method represented by red bars in the legend, evaluated on various metrics against the Basic model.", + "source_ids": [ + 175 + ], + "id": "Name: gradient-based er\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "ratio", + "entity_type": "EVALUATION_METRIC", + "description": "The Y-axis label indicating the metric being measured, representing the ratio of performance between the compared methods.", + "source_ids": [ + 175 + ], + "id": "Name: ratio\nType: EVALUATION_METRIC" + }, + { + "entity_name": "# entity", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A metric measuring the number of entities, shown as the first category of bars in both charts.", + "source_ids": [ + 175 + ], + "id": "Name: # entity\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "density", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A metric measuring graph density, showing significant variation between the Basic and Gradient-based ER methods.", + "source_ids": [ + 175 + ], + "id": "Name: density\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "diameter", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A metric measuring the longest shortest path in the graph, presented as the third category of bars.", + "source_ids": [ + 175 + ], + "id": "Name: diameter\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "# cc", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A metric likely representing the number of Connected Components, shown as the fourth category of bars.", + "source_ids": [ + 175 + ], + "id": "Name: # cc\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "figure (a)", + "entity_type": "SECTION_TITLE", + "description": "The label identifying the left-hand chart which displays results for the MMLongBench dataset.", + "source_ids": [ + 175 + ], + "id": "Name: figure (a)\nType: SECTION_TITLE" + }, + { + "entity_name": "figure (b)", + "entity_type": "SECTION_TITLE", + "description": "The label identifying the right-hand chart which displays results for the Qasper dataset.", + "source_ids": [ + 175 + ], + "id": "Name: figure (b)\nType: SECTION_TITLE" + }, + { + "entity_name": "1327", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the '# Entity' bar for the Basic method in chart (a).", + "source_ids": [ + 175 + ], + "id": "Name: 1327\nType: MEASUREMENT" + }, + { + "entity_name": "3.6e-3", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the 'Density' bar for the Basic method in chart (a).", + "source_ids": [ + 175 + ], + "id": "Name: 3.6e-3\nType: MEASUREMENT" + }, + { + "entity_name": "14.8", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the 'Diameter' bar for the Basic method in chart (a).", + "source_ids": [ + 175 + ], + "id": "Name: 14.8\nType: MEASUREMENT" + }, + { + "entity_name": "169", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the '# CC' bar for the Basic method in chart (a).", + "source_ids": [ + 175 + ], + "id": "Name: 169\nType: MEASUREMENT" + }, + { + "entity_name": "531", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the '# Entity' bar for the Basic method in chart (b).", + "source_ids": [ + 175 + ], + "id": "Name: 531\nType: MEASUREMENT" + }, + { + "entity_name": "5.4e-3", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the 'Density' bar for the Basic method in chart (b).", + "source_ids": [ + 175 + ], + "id": "Name: 5.4e-3\nType: MEASUREMENT" + }, + { + "entity_name": "15.0", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the 'Diameter' bar for the Basic method in chart (b).", + "source_ids": [ + 175 + ], + "id": "Name: 15.0\nType: MEASUREMENT" + }, + { + "entity_name": "106", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the '# CC' bar for the Basic method in chart (b).", + "source_ids": [ + 175 + ], + "id": "Name: 106\nType: MEASUREMENT" + }, + { + "entity_name": "gradient based entity resolution", + "entity_type": "TASK_OR_PROBLEM", + "description": "gradient based entity resolution is a method used to evaluate the quality of a constructed knowledge graph kg", + "source_ids": [ + 176 + ], + "id": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "basic kg construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "basic kg construction is a standard practice using simple exact name matching for entity merging", + "source_ids": [ + 176 + ], + "id": "Name: basic kg construction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "entity count", + "entity_type": "EVALUATION_METRIC", + "description": "entity count is a metric used to measure the number of entities in the graph", + "source_ids": [ + 176 + ], + "id": "Name: entity count\nType: EVALUATION_METRIC" + }, + { + "entity_name": "density", + "entity_type": "EVALUATION_METRIC", + "description": "density is a metric used to measure the connectivity of the graph", + "source_ids": [ + 176 + ], + "id": "Name: density\nType: EVALUATION_METRIC" + }, + { + "entity_name": "diameter of the largest connected component", + "entity_type": "EVALUATION_METRIC", + "description": "diameter of the largest connected component is a metric measuring the longest shortest path in the largest connected part of the graph", + "source_ids": [ + 176 + ], + "id": "Name: diameter of the largest connected component\nType: EVALUATION_METRIC" + }, + { + "entity_name": "number of connected components", + "entity_type": "EVALUATION_METRIC", + "description": "number of connected components is a metric counting the separate parts of the graph", + "source_ids": [ + 176 + ], + "id": "Name: number of connected components\nType: EVALUATION_METRIC" + }, + { + "entity_name": "basic baseline", + "entity_type": "BENCHMARK", + "description": "the basic baseline serves as the standard for comparison in the evaluation of the gradient based er method", + "source_ids": [ + 176 + ], + "id": "Name: basic baseline\nType: BENCHMARK" + }, + { + "entity_name": "er module", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the er module is the component responsible for identifying conceptual entities with different names", + "source_ids": [ + 176 + ], + "id": "Name: er module\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "12", + "entity_type": "PERCENTAGE", + "description": "12 is the percentage reduction in the number of entities achieved by the gradient based er method", + "source_ids": [ + 176 + ], + "id": "Name: 12\nType: PERCENTAGE" + }, + { + "entity_name": "many graph based methods", + "entity_type": "ORGANIZATION", + "description": "many graph based methods are a group of techniques that employ simple exact name matching for entity merging", + "source_ids": [ + 176 + ], + "id": "Name: many graph based methods\nType: ORGANIZATION" + }, + { + "entity_name": "graph reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "graph reasoning is a task facilitated by the improved connectivity of the resulting graphs", + "source_ids": [ + 176 + ], + "id": "Name: graph reasoning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "figure 7", + "entity_type": "IMAGE", + "description": "Figure 7 is an image presenting a performance breakdown of QA by different query types and serves as a visual representation that breaks down the performance of BookRag.", + "source_ids": [ + 177, + 179 + ], + "id": "Name: figure 7\nType: IMAGE" + }, + { + "entity_name": "multi hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "Multi hop is a type of query used in the QA performance breakdown and a query case handled by BookRag's answering workflow. It is a task that requires decomposition into multiple simple sub-questions.", + "source_ids": [ + 177, + 186, + 247 + ], + "id": "Name: multi hop\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "global", + "entity_type": "TASK_OR_PROBLEM", + "description": "Global is a type of query used in QA performance breakdown and one of the three categories used to classify user questions. It represents a configuration category on the X-axis that denotes a global or holistic setting, specifically referring to questions that require an aggregation operation over a set of items identified by a structural filter.", + "source_ids": [ + 177, + 178, + 250, + 241 + ], + "id": "Name: global\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "blue bars", + "entity_type": "IMAGE", + "description": "blue bars represent the visual elements in the figure corresponding to exact match and accuracy metrics", + "source_ids": [ + 177 + ], + "id": "Name: blue bars\nType: IMAGE" + }, + { + "entity_name": "red bars", + "entity_type": "IMAGE", + "description": "red bars represent the visual elements in the figure corresponding to the f1 score metric", + "source_ids": [ + 177 + ], + "id": "Name: red bars\nType: IMAGE" + }, + { + "entity_name": "cref='#/texts/259'", + "entity_type": "IMAGE", + "description": "A figure containing two bar charts comparing EM/Accuracy and F1-score across Single, Multi, and Global configurations for MMLongBench and Qasper datasets.", + "source_ids": [ + 178 + ], + "id": "Name: cref='#/texts/259'\nType: IMAGE" + }, + { + "entity_name": "em / accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "Evaluation metric represented by blue bars in the chart, standing for Exact Match or Accuracy.", + "source_ids": [ + 178 + ], + "id": "Name: em / accuracy\nType: EVALUATION_METRIC" + }, + { + "entity_name": "f1-score", + "entity_type": "EVALUATION_METRIC", + "description": "Evaluation metric represented by red bars in the chart, representing the harmonic mean of precision and recall.", + "source_ids": [ + 178 + ], + "id": "Name: f1-score\nType: EVALUATION_METRIC" + }, + { + "entity_name": "single", + "entity_type": "TASK_OR_PROBLEM", + "description": "A configuration category on the X-axis representing a single-task or single-passage setting.", + "source_ids": [ + 178 + ], + "id": "Name: single\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "multi", + "entity_type": "TASK_OR_PROBLEM", + "description": "A configuration category on the X-axis representing a multi-task or multi-passage setting.", + "source_ids": [ + 178 + ], + "id": "Name: multi\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "(a) mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "MMLongBench is the first dataset evaluated in the left chart, focusing on long-context benchmarks, and the left diagram illustrates the breakdown of query processing results for this dataset.", + "source_ids": [ + 184, + 178 + ], + "id": "Name: (a) mmlongbench\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "(b) qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "The Qasper dataset, formally known as Question Answering in Scientific Papers with Reasoning, is the second dataset evaluated in the right chart and is illustrated in the right diagram, which shows the breakdown of query processing results for this dataset.", + "source_ids": [ + 184, + 178 + ], + "id": "Name: (b) qasper\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "multihop", + "entity_type": "TASK_OR_PROBLEM", + "description": "multihop is a type of query that presents a greater challenge compared to single hop queries", + "source_ids": [ + 179 + ], + "id": "Name: multihop\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "agent based planning strategy", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the agent based planning strategy is a method used to handle different query types separately", + "source_ids": [ + 179 + ], + "id": "Name: agent based planning strategy\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "disjoint pieces of evidence", + "entity_type": "DATASET_OR_CORPUS", + "description": "disjoint pieces of evidence are the fragmented information sources that make reasoning difficult", + "source_ids": [ + 179 + ], + "id": "Name: disjoint pieces of evidence\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "retrieving", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "retrieving is the process of finding information identified as a challenge in the text", + "source_ids": [ + 179 + ], + "id": "Name: retrieving\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "figure 9", + "entity_type": "IMAGE", + "description": "Figure 9 is an image presenting an error analysis on sampled queries, visually representing the error propagation traced during the analysis.", + "source_ids": [ + 180, + 183 + ], + "id": "Name: figure 9\nType: IMAGE" + }, + { + "entity_name": "error response analysis", + "entity_type": "TASK_OR_PROBLEM", + "description": "error response analysis is the specific task conducted to diagnose performance bottlenecks", + "source_ids": [ + 180 + ], + "id": "Name: error response analysis\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "200 sampled queries", + "entity_type": "MEASUREMENT", + "description": "200 sampled queries refers to the quantity of queries from each dataset used for the analysis", + "source_ids": [ + 180 + ], + "id": "Name: 200 sampled queries\nType: MEASUREMENT" + }, + { + "entity_name": "four types", + "entity_type": "MEASUREMENT", + "description": "four types refers to the number of categories into which failures are classified", + "source_ids": [ + 180 + ], + "id": "Name: four types\nType: MEASUREMENT" + }, + { + "entity_name": "figure 8", + "entity_type": "IMAGE", + "description": "Figure 8 is an image presenting a case study of responses across different query types, illustrating BookRags' answering workflow for those various query types.", + "source_ids": [ + 186, + 181 + ], + "id": "Name: figure 8\nType: IMAGE" + }, + { + "entity_name": "cyan text", + "entity_type": "COLOR", + "description": "cyan text refers to the color used to highlight correct content generated by bookrag in the figure", + "source_ids": [ + 181 + ], + "id": "Name: cyan text\nType: COLOR" + }, + { + "entity_name": "gray text", + "entity_type": "COLOR", + "description": "gray text refers to the color used to describe the internal process in the figure", + "source_ids": [ + 181 + ], + "id": "Name: gray text\nType: COLOR" + }, + { + "entity_name": "case study", + "entity_type": "EVENT", + "description": "case study is the specific analysis of responses across different query types presented in the text", + "source_ids": [ + 181 + ], + "id": "Name: case study\nType: EVENT" + }, + { + "entity_name": "internal process", + "entity_type": "TASK_OR_PROBLEM", + "description": "internal process refers to the underlying mechanisms described in the gray text", + "source_ids": [ + 181 + ], + "id": "Name: internal process\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "bookrag response of different query types", + "entity_type": "IMAGE", + "description": "A document illustrating BookRAG's responses to three distinct query types: Single-hop, Multi-hop, and Global Aggregation cases.", + "source_ids": [ + 182 + ], + "id": "Name: bookrag response of different query types\nType: IMAGE" + }, + { + "entity_name": "single-hop case from qasper", + "entity_type": "SECTION_TITLE", + "description": "The title of the first section detailing a single-hop query example involving a reward model for reinforcement learning.", + "source_ids": [ + 182 + ], + "id": "Name: single-hop case from qasper\nType: SECTION_TITLE" + }, + { + "entity_name": "select_by_entity operator", + "entity_type": "SOFTWARE", + "description": "An operator that identifies relevant sub-trees (e.g., Introduction, Related work) to prune the reasoning space.", + "source_ids": [ + 182 + ], + "id": "Name: select_by_entity operator\nType: SOFTWARE" + }, + { + "entity_name": "graph_reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "A reasoning step performed after the Select_by_Entity operator focuses on a specific scope.", + "source_ids": [ + 182 + ], + "id": "Name: graph_reasoning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "text_reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "A reasoning step involved in retrieving nodes for the final response.", + "source_ids": [ + 182 + ], + "id": "Name: text_reasoning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "skyline_ranker", + "entity_type": "SOFTWARE", + "description": "An operator used to retrieve 8 nodes for the final response based on focused scope.", + "source_ids": [ + 182 + ], + "id": "Name: skyline_ranker\nType: SOFTWARE" + }, + { + "entity_name": "binary reward system", + "entity_type": "TECHNOLOGY", + "description": "A system that evaluates the success or failure of dialog interactions with a discount factor.", + "source_ids": [ + 182 + ], + "id": "Name: binary reward system\nType: TECHNOLOGY" + }, + { + "entity_name": "discount factor", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A variable used in the reward model calculation, specifically noted as 0.95 in the text.", + "source_ids": [ + 182 + ], + "id": "Name: discount factor\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "multi-hop case from qasper", + "entity_type": "SECTION_TITLE", + "description": "The title of the second section detailing a multi-hop query comparing interpretable systems and LSTM models.", + "source_ids": [ + 182 + ], + "id": "Name: multi-hop case from qasper\nType: SECTION_TITLE" + }, + { + "entity_name": "interpretable system", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "A system type compared against LSTM-ELMo, utilizing vectors and cosine distance.", + "source_ids": [ + 182 + ], + "id": "Name: interpretable system\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "lstm with elmo system", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "A machine learning model mentioned in the comparison, achieving an accuracy of 0.6818.", + "source_ids": [ + 182 + ], + "id": "Name: lstm with elmo system\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "lstm-elmo net", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "Another reference to the Long Short-Term Memory network combined with ELMo embeddings.", + "source_ids": [ + 182 + ], + "id": "Name: lstm-elmo net\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "diacritic swapping", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A method mentioned as showing remarkably poor performance in the context of the experiment.", + "source_ids": [ + 182 + ], + "id": "Name: diacritic swapping\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "cross-entropy", + "entity_type": "EVALUATION_METRIC", + "description": "The loss measure used for the test results in the multi-hop query analysis.", + "source_ids": [ + 182 + ], + "id": "Name: cross-entropy\nType: EVALUATION_METRIC" + }, + { + "entity_name": "decompose operator", + "entity_type": "SOFTWARE", + "description": "An operator used in Agent-based Planning for multi-hop queries to break down the question.", + "source_ids": [ + 182 + ], + "id": "Name: decompose operator\nType: SOFTWARE" + }, + { + "entity_name": "global aggregation case from mmlongbench", + "entity_type": "SECTION_TITLE", + "description": "The title of the third section detailing a global query about counting charts in a document.", + "source_ids": [ + 182 + ], + "id": "Name: global aggregation case from mmlongbench\nType: SECTION_TITLE" + }, + { + "entity_name": "filter operators", + "entity_type": "SOFTWARE", + "description": "Operators applied to filter data based on specific criteria like page range or modality.", + "source_ids": [ + 182 + ], + "id": "Name: filter operators\nType: SOFTWARE" + }, + { + "entity_name": "filter_range", + "entity_type": "SOFTWARE", + "description": "A filter operator specifying a range of pages (e.g., '1-10') to search within.", + "source_ids": [ + 182 + ], + "id": "Name: filter_range\nType: SOFTWARE" + }, + { + "entity_name": "filter_modal", + "entity_type": "SOFTWARE", + "description": "A filter operator specifying the modality of content, such as 'image'.", + "source_ids": [ + 182 + ], + "id": "Name: filter_modal\nType: SOFTWARE" + }, + { + "entity_name": "reduce", + "entity_type": "SOFTWARE", + "description": "A process step that synthesizes the final output after analyzing images.", + "source_ids": [ + 182 + ], + "id": "Name: reduce\nType: SOFTWARE" + }, + { + "entity_name": "image cref='#/texts/282'", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 182 + ], + "id": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "entity_name": "200", + "entity_type": "MEASUREMENT", + "description": "200 is the number of sampled queries used in the error analysis", + "source_ids": [ + 183 + ], + "id": "Name: 200\nType: MEASUREMENT" + }, + { + "entity_name": "error analysis", + "entity_type": "TASK_OR_PROBLEM", + "description": "error analysis is the task being performed on the sampled queries from the datasets", + "source_ids": [ + 183 + ], + "id": "Name: error analysis\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "cref='#/texts/348'", + "entity_type": "IMAGE", + "description": "A figure containing two funnel diagrams comparing error analysis for the MMLongBench and Qasper datasets.", + "source_ids": [ + 184 + ], + "id": "Name: cref='#/texts/348'\nType: IMAGE" + }, + { + "entity_name": "all queries (200)", + "entity_type": "MEASUREMENT", + "description": "The initial total number of queries processed in both the MMLongBench and Qasper experiments.", + "source_ids": [ + 184 + ], + "id": "Name: all queries (200)\nType: MEASUREMENT" + }, + { + "entity_name": "successful parsing (194)", + "entity_type": "MEASUREMENT", + "description": "The count of queries that were successfully parsed within the MMLongBench experiment.", + "source_ids": [ + 184 + ], + "id": "Name: successful parsing (194)\nType: MEASUREMENT" + }, + { + "entity_name": "retrieval error (52)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to retrieval failures in the MMLongBench experiment.", + "source_ids": [ + 184 + ], + "id": "Name: retrieval error (52)\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "generation error (36)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to generation failures in the MMLongBench experiment.", + "source_ids": [ + 184 + ], + "id": "Name: generation error (36)\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "plan error (27)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to planning failures in the MMLongBench experiment.", + "source_ids": [ + 184 + ], + "id": "Name: plan error (27)\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "parsing error (6)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to parsing failures in the MMLongBench experiment.", + "source_ids": [ + 184 + ], + "id": "Name: parsing error (6)\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "correct (79)", + "entity_type": "EVALUATION_METRIC", + "description": "The final count of correctly answered queries in the MMLongBench experiment.", + "source_ids": [ + 184 + ], + "id": "Name: correct (79)\nType: EVALUATION_METRIC" + }, + { + "entity_name": "successful parsing (193)", + "entity_type": "MEASUREMENT", + "description": "The count of queries that were successfully parsed within the Qasper experiment.", + "source_ids": [ + 184 + ], + "id": "Name: successful parsing (193)\nType: MEASUREMENT" + }, + { + "entity_name": "generation error (30)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to generation failures in the Qasper experiment.", + "source_ids": [ + 184 + ], + "id": "Name: generation error (30)\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "retrieval error (26)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to retrieval failures in the Qasper experiment.", + "source_ids": [ + 184 + ], + "id": "Name: retrieval error (26)\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "plan error (20)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to planning failures in the Qasper experiment.", + "source_ids": [ + 184 + ], + "id": "Name: plan error (20)\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "parsing error (7)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to parsing failures in the Qasper experiment.", + "source_ids": [ + 184 + ], + "id": "Name: parsing error (7)\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "correct (117)", + "entity_type": "EVALUATION_METRIC", + "description": "The final count of correctly answered queries in the Qasper experiment.", + "source_ids": [ + 184 + ], + "id": "Name: correct (117)\nType: EVALUATION_METRIC" + }, + { + "entity_name": "pdf parsing", + "entity_type": "TASK_OR_PROBLEM", + "description": "pdf parsing is identified as a task or problem area within the context of the study", + "source_ids": [ + 185 + ], + "id": "Name: pdf parsing\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "retrieval error", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval error is the dominant failure mode identified in the results", + "source_ids": [ + 185 + ], + "id": "Name: retrieval error\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "generation error", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation error is the second most common failure mode identified in the results", + "source_ids": [ + 185 + ], + "id": "Name: generation error\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "plan error", + "entity_type": "TASK_OR_PROBLEM", + "description": "plan error is a specific failure pattern where the planner over decomposes queries", + "source_ids": [ + 185 + ], + "id": "Name: plan error\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "multimodal evidence", + "entity_type": "TASK_OR_PROBLEM", + "description": "multimodal evidence is the type of information that is challenging to locate and synthesize", + "source_ids": [ + 185 + ], + "id": "Name: multimodal evidence\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "single hop queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "single hop queries are detailed queries that are incorrectly decomposed by the planner", + "source_ids": [ + 185 + ], + "id": "Name: single hop queries\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "multi hop sub tasks", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi hop sub tasks are unnecessary tasks created by the over decomposition of single hop queries", + "source_ids": [ + 185 + ], + "id": "Name: multi hop sub tasks\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "disjointed retrieval paths", + "entity_type": "TASK_OR_PROBLEM", + "description": "disjointed retrieval paths are the result of fragmentation preventing cohesive synthesis", + "source_ids": [ + 185 + ], + "id": "Name: disjointed retrieval paths\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "cohesive final answer", + "entity_type": "TASK_OR_PROBLEM", + "description": "cohesive final answer is the desired outcome that is prevented by disjointed retrieval paths", + "source_ids": [ + 185 + ], + "id": "Name: cohesive final answer\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "model", + "entity_type": "TASK_OR_PROBLEM", + "description": "the model is the entity attempting to synthesize answers from sub responses", + "source_ids": [ + 185 + ], + "id": "Name: model\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "planner", + "entity_type": "TASK_OR_PROBLEM", + "description": "the planner is the component that tends to over decompose queries", + "source_ids": [ + 185 + ], + "id": "Name: planner\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "qualitative analysis", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "qualitative analysis is the method used to reveal specific failure patterns", + "source_ids": [ + 185 + ], + "id": "Name: qualitative analysis\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "results", + "entity_type": "TASK_OR_PROBLEM", + "description": "the results are the findings that identify retrieval error as the dominant failure mode", + "source_ids": [ + 185 + ], + "id": "Name: results\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "fragmentation", + "entity_type": "TASK_OR_PROBLEM", + "description": "fragmentation is the process leading to disjointed retrieval paths", + "source_ids": [ + 185 + ], + "id": "Name: fragmentation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "scattered sub responses", + "entity_type": "TASK_OR_PROBLEM", + "description": "scattered sub responses are the outputs that fail to form a cohesive answer", + "source_ids": [ + 185 + ], + "id": "Name: scattered sub responses\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "global queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "global queries are a type of query case processed by bookrag s answering workflow", + "source_ids": [ + 186 + ], + "id": "Name: global queries\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "select", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "select is a specific operator leveraged by bookrag to prune search spaces", + "source_ids": [ + 186 + ], + "id": "Name: select\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "filter", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "filter is a specific operator leveraged by bookrag to prune search spaces", + "source_ids": [ + 186 + ], + "id": "Name: filter\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "134", + "entity_type": "MEASUREMENT", + "description": "134 represents the initial number of nodes in the reasoning space for the single hop case", + "source_ids": [ + 186 + ], + "id": "Name: 134\nType: MEASUREMENT" + }, + { + "entity_name": "24", + "entity_type": "MEASUREMENT", + "description": "24 represents the reduced number of nodes in the reasoning space for the single hop case", + "source_ids": [ + 186 + ], + "id": "Name: 24\nType: MEASUREMENT" + }, + { + "entity_name": "answering workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "answering workflow is the process illustrated by figure 8 that bookrag uses to handle queries", + "source_ids": [ + 186 + ], + "id": "Name: answering workflow\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "search spaces", + "entity_type": "TASK_OR_PROBLEM", + "description": "search spaces are the areas that bookrag prunes using specific operators to improve efficiency", + "source_ids": [ + 186 + ], + "id": "Name: search spaces\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "relevant evidence", + "entity_type": "TASK_OR_PROBLEM", + "description": "relevant evidence is the specific information that bookrag isolates from noise", + "source_ids": [ + 186 + ], + "id": "Name: relevant evidence\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "noise", + "entity_type": "TASK_OR_PROBLEM", + "description": "noise refers to irrelevant data from which bookrag isolates relevant evidence", + "source_ids": [ + 186 + ], + "id": "Name: noise\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "precise answer generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "precise answer generation is the outcome ensured by bookrag s ability to isolate relevant evidence", + "source_ids": [ + 186 + ], + "id": "Name: precise answer generation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "7 conclusion", + "entity_type": "SECTION_TITLE", + "description": "As the final substantive section of the paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section summarizes the key contributions, specifically the BookRAG framework and BookIndex structure, and highlights the state-of-the-art performance achieved in retrieval recall and QA accuracy.", + "source_ids": [ + 187 + ], + "id": "Name: 7 conclusion\nType: SECTION_TITLE" + }, + { + "entity_name": "book index", + "entity_type": "PRODUCT", + "description": "book index is a document native structured tree graph index designed to capture intricate relations of structural documents", + "source_ids": [ + 188 + ], + "id": "Name: book index\nType: PRODUCT" + }, + { + "entity_name": "agent based method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "an agent based method is employed to dynamically configure retrieval and reasoning operators", + "source_ids": [ + 188 + ], + "id": "Name: agent based method\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "retrieval precision", + "entity_type": "EVALUATION_METRIC", + "description": "retrieval precision is a metric where the proposed approach demonstrates significant superiority over existing baselines", + "source_ids": [ + 188 + ], + "id": "Name: retrieval precision\nType: EVALUATION_METRIC" + }, + { + "entity_name": "answer accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "answer accuracy is a metric where the proposed approach demonstrates significant superiority over existing baselines", + "source_ids": [ + 188 + ], + "id": "Name: answer accuracy\nType: EVALUATION_METRIC" + }, + { + "entity_name": "benchmarks", + "entity_type": "BENCHMARK", + "description": "benchmarks are multiple tests on which the approach achieves state of the art performance", + "source_ids": [ + 188 + ], + "id": "Name: benchmarks\nType: BENCHMARK" + }, + { + "entity_name": "document native database system", + "entity_type": "PRODUCT", + "description": "a document native database system is a future exploration goal that supports data formatting knowledge extraction and intelligent querying", + "source_ids": [ + 188 + ], + "id": "Name: document native database system\nType: PRODUCT" + }, + { + "entity_name": "paper", + "entity_type": "PUBLICATION_VENUE", + "description": "the paper is the document in which the bookrag method is proposed", + "source_ids": [ + 188 + ], + "id": "Name: paper\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "tree graph index", + "entity_type": "TECHNOLOGY", + "description": "the tree graph index is the specific structure of the book index document native system", + "source_ids": [ + 188 + ], + "id": "Name: tree graph index\nType: TECHNOLOGY" + }, + { + "entity_name": "retrieval operators", + "entity_type": "SOFTWARE", + "description": "retrieval operators are components dynamically configured by the agent based method", + "source_ids": [ + 188 + ], + "id": "Name: retrieval operators\nType: SOFTWARE" + }, + { + "entity_name": "reasoning operators", + "entity_type": "SOFTWARE", + "description": "reasoning operators are components dynamically configured by the agent based method", + "source_ids": [ + 188 + ], + "id": "Name: reasoning operators\nType: SOFTWARE" + }, + { + "entity_name": "data formatting", + "entity_type": "TASK_OR_PROBLEM", + "description": "data formatting is a capability supported by the future document native database system", + "source_ids": [ + 188 + ], + "id": "Name: data formatting\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "knowledge extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "knowledge extraction is a capability supported by the future document native database system", + "source_ids": [ + 188 + ], + "id": "Name: knowledge extraction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "intelligent querying", + "entity_type": "TASK_OR_PROBLEM", + "description": "intelligent querying is a capability supported by the future document native database system", + "source_ids": [ + 188 + ], + "id": "Name: intelligent querying\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "12", + "entity_type": "MEASUREMENT", + "description": "12 is a numerical value mentioned in the text potentially representing a count or measurement", + "source_ids": [ + 189 + ], + "id": "Name: 12\nType: MEASUREMENT" + }, + { + "entity_name": "references", + "entity_type": "SECTION_TITLE", + "description": "The references section, appearing as a top-level component following the main title \"BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents,\" functions as the bibliography for the paper by listing all cited works and sources that support the research presented. Additionally, it is recognized as a structural part of a document within the definition of section filters.", + "source_ids": [ + 258, + 190 + ], + "id": "Name: references\nType: SECTION_TITLE" + }, + { + "entity_name": "simran arora", + "entity_type": "PERSON", + "description": "simran arora is listed as one of the authors of the paper", + "source_ids": [ + 191 + ], + "id": "Name: simran arora\nType: PERSON" + }, + { + "entity_name": "brandon yang", + "entity_type": "PERSON", + "description": "brandon yang is listed as one of the authors of the paper", + "source_ids": [ + 191 + ], + "id": "Name: brandon yang\nType: PERSON" + }, + { + "entity_name": "sabri eyuboglu", + "entity_type": "PERSON", + "description": "sabri eyuboglu is listed as one of the authors of the paper", + "source_ids": [ + 191 + ], + "id": "Name: sabri eyuboglu\nType: PERSON" + }, + { + "entity_name": "avanika narayan", + "entity_type": "PERSON", + "description": "avanika narayan is listed as one of the authors of the paper", + "source_ids": [ + 191 + ], + "id": "Name: avanika narayan\nType: PERSON" + }, + { + "entity_name": "andrew hojel", + "entity_type": "PERSON", + "description": "andrew hojel is listed as one of the authors of the paper", + "source_ids": [ + 191 + ], + "id": "Name: andrew hojel\nType: PERSON" + }, + { + "entity_name": "immanuel trummer", + "entity_type": "PERSON", + "description": "immanuel trummer is listed as one of the authors of the paper", + "source_ids": [ + 191 + ], + "id": "Name: immanuel trummer\nType: PERSON" + }, + { + "entity_name": "christopher r", + "entity_type": "PERSON", + "description": "christopher r is listed as one of the authors of the paper", + "source_ids": [ + 191 + ], + "id": "Name: christopher r\nType: PERSON" + }, + { + "entity_name": "language models", + "entity_type": "TECHNOLOGY", + "description": "language models are the technology enabling the simple systems described in the paper", + "source_ids": [ + 191 + ], + "id": "Name: language models\nType: TECHNOLOGY" + }, + { + "entity_name": "heterogeneous data lakes", + "entity_type": "DATASET_OR_CORPUS", + "description": "heterogeneous data lakes are the type of data being structured by the systems in the paper", + "source_ids": [ + 191 + ], + "id": "Name: heterogeneous data lakes\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "17", + "entity_type": "MEASUREMENT", + "description": "17 refers to the volume number of the publication", + "source_ids": [ + 191 + ], + "id": "Name: 17\nType: MEASUREMENT" + }, + { + "entity_name": "simple systems", + "entity_type": "PRODUCT", + "description": "simple systems are the systems generated by language models as described in the paper title", + "source_ids": [ + 191 + ], + "id": "Name: simple systems\nType: PRODUCT" + }, + { + "entity_name": "structured views", + "entity_type": "PRODUCT", + "description": "structured views are the output generated for heterogeneous data lakes in the paper", + "source_ids": [ + 191 + ], + "id": "Name: structured views\nType: PRODUCT" + }, + { + "entity_name": "2023", + "entity_type": "DATE", + "description": "2023 is the year associated with the publication of the paper Self-RAG, the survey, and the corresponding arXiv preprint.", + "source_ids": [ + 193, + 200, + 205, + 207, + 191 + ], + "id": "Name: 2023\nType: DATE" + }, + { + "entity_name": "92 105", + "entity_type": "MEASUREMENT", + "description": "92 105 represents the page range of the article", + "source_ids": [ + 191 + ], + "id": "Name: 92 105\nType: MEASUREMENT" + }, + { + "entity_name": "akari asai", + "entity_type": "PERSON", + "description": "Akari Asai is an author of the 2023 paper titled \"Self-RAG.\"", + "source_ids": [ + 192, + 193 + ], + "id": "Name: akari asai\nType: PERSON" + }, + { + "entity_name": "zeqiu wu", + "entity_type": "PERSON", + "description": "Zeqiu Wu is an author of the 2023 paper titled \"Self-RAG\".", + "source_ids": [ + 192, + 193 + ], + "id": "Name: zeqiu wu\nType: PERSON" + }, + { + "entity_name": "yizhong wang", + "entity_type": "PERSON", + "description": "Yizhong Wang is an author of the 2023 paper titled \"Self-RAG\".", + "source_ids": [ + 192, + 193 + ], + "id": "Name: yizhong wang\nType: PERSON" + }, + { + "entity_name": "self rag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "Self RAG is a method designed to learn retrieval, generation, and critique through the process of self-reflection.", + "source_ids": [ + 192, + 193 + ], + "id": "Name: self rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "international conference on learning representations", + "entity_type": "PUBLICATION_VENUE", + "description": "international conference on learning representations iclr is the venue where the paper was published", + "source_ids": [ + 192 + ], + "id": "Name: international conference on learning representations\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year associated with the publication of the paper, the m3docrag preprint, the arxiv preprint, and the survey paper by the listed authors, serving as the date linked to the arxiv identifier and the authors' work.", + "source_ids": [ + 192, + 199, + 201, + 206, + 208, + 209, + 211, + 212, + 213, + 216 + ], + "id": "Name: 2024\nType: DATE" + }, + { + "entity_name": "et al", + "entity_type": "PERSON", + "description": "\"et al\" refers to additional authors of a paper who are not explicitly named or listed in the text.", + "source_ids": [ + 192, + 194, + 203, + 213 + ], + "id": "Name: et al\nType: PERSON" + }, + { + "entity_name": "iclr", + "entity_type": "PUBLICATION_VENUE", + "description": "iclr is the abbreviation for the international conference on learning representations where the paper was published", + "source_ids": [ + 192 + ], + "id": "Name: iclr\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "avirup sil", + "entity_type": "PERSON", + "description": "avirup sil is one of the authors of the 2023 paper titled self rag", + "source_ids": [ + 193 + ], + "id": "Name: avirup sil\nType: PERSON" + }, + { + "entity_name": "hannaneh hajishirzi", + "entity_type": "PERSON", + "description": "hannaneh hajishirzi is one of the authors of the 2023 paper titled self rag", + "source_ids": [ + 193 + ], + "id": "Name: hannaneh hajishirzi\nType: PERSON" + }, + { + "entity_name": "arxiv preprint arxiv 2310 11511", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2310 11511 is the specific identifier and venue for the publication of the paper", + "source_ids": [ + 193 + ], + "id": "Name: arxiv preprint arxiv 2310 11511\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "learning to retrieve generate and critique through self reflection", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "this is the specific technique described in the text that the self rag model learns to perform", + "source_ids": [ + 193 + ], + "id": "Name: learning to retrieve generate and critique through self reflection\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "arxiv", + "entity_type": "ORGANIZATION", + "description": "ArXiv is an organization and platform that hosts preprints, including the specific preprint arxiv 2302 09051.", + "source_ids": [ + 193, + 205, + 207 + ], + "id": "Name: arxiv\nType: ORGANIZATION" + }, + { + "entity_name": "shuai bai", + "entity_type": "PERSON", + "description": "shuai bai is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: shuai bai\nType: PERSON" + }, + { + "entity_name": "keqin chen", + "entity_type": "PERSON", + "description": "keqin chen is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: keqin chen\nType: PERSON" + }, + { + "entity_name": "xuejing liu", + "entity_type": "PERSON", + "description": "xuejing liu is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: xuejing liu\nType: PERSON" + }, + { + "entity_name": "jialin wang", + "entity_type": "PERSON", + "description": "jialin wang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: jialin wang\nType: PERSON" + }, + { + "entity_name": "wenbin ge", + "entity_type": "PERSON", + "description": "wenbin ge is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: wenbin ge\nType: PERSON" + }, + { + "entity_name": "sibo song", + "entity_type": "PERSON", + "description": "sibo song is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: sibo song\nType: PERSON" + }, + { + "entity_name": "kai dang", + "entity_type": "PERSON", + "description": "kai dang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: kai dang\nType: PERSON" + }, + { + "entity_name": "peng wang", + "entity_type": "PERSON", + "description": "peng wang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: peng wang\nType: PERSON" + }, + { + "entity_name": "shijie wang", + "entity_type": "PERSON", + "description": "shijie wang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: shijie wang\nType: PERSON" + }, + { + "entity_name": "jun tang", + "entity_type": "PERSON", + "description": "jun tang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "id": "Name: jun tang\nType: PERSON" + }, + { + "entity_name": "qwen2 5 vl technical report", + "entity_type": "PUBLICATION_VENUE", + "description": "qwen2 5 vl technical report is the title of the document authored by the listed individuals", + "source_ids": [ + 194 + ], + "id": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "ArXiv is a preprint server and platform where numerous papers and technical reports are published and hosted, including the Qwen2.5 VL technical report, a survey paper, the M3DocRAG preprint, and specific preprints such as arXiv:2404.16130 and arXiv:2403.14403.", + "source_ids": [ + 194, + 195, + 201, + 203, + 206, + 209, + 211, + 212, + 213 + ], + "id": "Name: arxiv\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "arxiv 2502 13923", + "entity_type": "FILE_TYPE", + "description": "arxiv 2502 13923 is the specific identifier for the preprint document", + "source_ids": [ + 194 + ], + "id": "Name: arxiv 2502 13923\nType: FILE_TYPE" + }, + { + "entity_name": "qwen2 5 vl", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen2 5 vl is the specific model or architecture discussed in the technical report", + "source_ids": [ + 194 + ], + "id": "Name: qwen2 5 vl\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "preprint", + "entity_type": "FILE_TYPE", + "description": "A preprint indicates that the document is a preliminary version of a research paper.", + "source_ids": [ + 194, + 195 + ], + "id": "Name: preprint\nType: FILE_TYPE" + }, + { + "entity_name": "camille barboule", + "entity_type": "PERSON", + "description": "camille barboule is one of the authors of the 2025 survey on question answering over visually rich documents", + "source_ids": [ + 195 + ], + "id": "Name: camille barboule\nType: PERSON" + }, + { + "entity_name": "benjamin piwowarski", + "entity_type": "PERSON", + "description": "benjamin piwowarski is one of the authors of the 2025 survey on question answering over visually rich documents", + "source_ids": [ + 195 + ], + "id": "Name: benjamin piwowarski\nType: PERSON" + }, + { + "entity_name": "yoan chabot", + "entity_type": "PERSON", + "description": "yoan chabot is one of the authors of the 2025 survey on question answering over visually rich documents", + "source_ids": [ + 195 + ], + "id": "Name: yoan chabot\nType: PERSON" + }, + { + "entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "entity_type": "BOOK", + "description": "this is the title of the survey paper published in 2025", + "source_ids": [ + 195 + ], + "id": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK" + }, + { + "entity_name": "arxiv 2501 02235", + "entity_type": "FILE_TYPE", + "description": "arxiv 2501 02235 is the specific identifier for the preprint version of the survey", + "source_ids": [ + 195 + ], + "id": "Name: arxiv 2501 02235\nType: FILE_TYPE" + }, + { + "entity_name": "visually rich documents", + "entity_type": "DATASET_OR_CORPUS", + "description": "visually rich documents are the type of documents analyzed in the survey", + "source_ids": [ + 195 + ], + "id": "Name: visually rich documents\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "methods refers to the techniques discussed in the survey for handling visually rich documents", + "source_ids": [ + 195 + ], + "id": "Name: methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "challenges", + "entity_type": "TASK_OR_PROBLEM", + "description": "challenges refers to the difficulties identified in the field of question answering over visually rich documents", + "source_ids": [ + 195 + ], + "id": "Name: challenges\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "trends", + "entity_type": "RESEARCH_FIELD", + "description": "trends refers to the current directions and future outlooks in the research area", + "source_ids": [ + 195 + ], + "id": "Name: trends\nType: RESEARCH_FIELD" + }, + { + "entity_name": "yukun cao", + "entity_type": "PERSON", + "description": "yukun cao is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ], + "id": "Name: yukun cao\nType: PERSON" + }, + { + "entity_name": "zengyi gao", + "entity_type": "PERSON", + "description": "zengyi gao is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ], + "id": "Name: zengyi gao\nType: PERSON" + }, + { + "entity_name": "zhiyang li", + "entity_type": "PERSON", + "description": "zhiyang li is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ], + "id": "Name: zhiyang li\nType: PERSON" + }, + { + "entity_name": "xike xie", + "entity_type": "PERSON", + "description": "xike xie is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ], + "id": "Name: xike xie\nType: PERSON" + }, + { + "entity_name": "s kevin zhou", + "entity_type": "PERSON", + "description": "s kevin zhou is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ], + "id": "Name: s kevin zhou\nType: PERSON" + }, + { + "entity_name": "jianliang xu", + "entity_type": "PERSON", + "description": "jianliang xu is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ], + "id": "Name: jianliang xu\nType: PERSON" + }, + { + "entity_name": "lego graphrag", + "entity_type": "PRODUCT", + "description": "lego graphrag is a modularized graph based retrieval augmented generation system designed for design space exploration", + "source_ids": [ + 196 + ], + "id": "Name: lego graphrag\nType: PRODUCT" + }, + { + "entity_name": "proc vldb endow", + "entity_type": "PUBLICATION_VENUE", + "description": "proc vldb endow is the publication venue where the paper was published", + "source_ids": [ + 196 + ], + "id": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "june 2025", + "entity_type": "DATE", + "description": "june 2025 is the specific date of publication for the paper", + "source_ids": [ + 196 + ], + "id": "Name: june 2025\nType: DATE" + }, + { + "entity_name": "3269 3283", + "entity_type": "MEASUREMENT", + "description": "3269 3283 represents the page range of the article in the publication", + "source_ids": [ + 196 + ], + "id": "Name: 3269 3283\nType: MEASUREMENT" + }, + { + "entity_name": "18", + "entity_type": "MEASUREMENT", + "description": "18 is the volume number of the publication and the proceedings of the VLDB Endowment where the paper was published.", + "source_ids": [ + 196, + 197 + ], + "id": "Name: 18\nType: MEASUREMENT" + }, + { + "entity_name": "design space exploration", + "entity_type": "TASK_OR_PROBLEM", + "description": "design space exploration is the specific problem domain that the lego graphrag system is designed to address", + "source_ids": [ + 196 + ], + "id": "Name: design space exploration\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "graph based retrieval augmented generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graph based retrieval augmented generation is the underlying technique being modularized in the paper", + "source_ids": [ + 196 + ], + "id": "Name: graph based retrieval augmented generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "modularizing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "modularizing is the specific method or approach applied to the graph based retrieval augmented generation system", + "source_ids": [ + 196 + ], + "id": "Name: modularizing\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "https doi org 10 14778 3748191 3748194", + "entity_type": "URL", + "description": "https doi org 10 14778 3748191 3748194 is the digital object identifier link for the paper", + "source_ids": [ + 196 + ], + "id": "Name: https doi org 10 14778 3748191 3748194\nType: URL" + }, + { + "entity_name": "chengliang chai", + "entity_type": "PERSON", + "description": "Chengliang Chai is an author who has contributed to the paper titled \"Doctopus: Budget Aware Structural Table Extraction from Unstructured Documents\" and is also listed as one of the authors of the paper titled \"Haipipe.\"", + "source_ids": [ + 200, + 197 + ], + "id": "Name: chengliang chai\nType: PERSON" + }, + { + "entity_name": "jiajun li", + "entity_type": "PERSON", + "description": "jiajun li is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ], + "id": "Name: jiajun li\nType: PERSON" + }, + { + "entity_name": "yuhao deng", + "entity_type": "PERSON", + "description": "yuhao deng is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ], + "id": "Name: yuhao deng\nType: PERSON" + }, + { + "entity_name": "yuanhao zhong", + "entity_type": "PERSON", + "description": "yuanhao zhong is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ], + "id": "Name: yuanhao zhong\nType: PERSON" + }, + { + "entity_name": "ye yuan", + "entity_type": "PERSON", + "description": "ye yuan is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ], + "id": "Name: ye yuan\nType: PERSON" + }, + { + "entity_name": "guoren wang", + "entity_type": "PERSON", + "description": "guoren wang is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ], + "id": "Name: guoren wang\nType: PERSON" + }, + { + "entity_name": "lei cao", + "entity_type": "PERSON", + "description": "lei cao is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ], + "id": "Name: lei cao\nType: PERSON" + }, + { + "entity_name": "doctopus", + "entity_type": "PRODUCT", + "description": "doctopus is a system or method for budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ], + "id": "Name: doctopus\nType: PRODUCT" + }, + { + "entity_name": "budget aware structural table extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "budget aware structural table extraction is the specific task addressed by the doctopus system described in the text", + "source_ids": [ + 197 + ], + "id": "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "unstructured documents", + "entity_type": "DATASET_OR_CORPUS", + "description": "unstructured documents are the source material from which structural tables are extracted in the described work", + "source_ids": [ + 197 + ], + "id": "Name: unstructured documents\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "11", + "entity_type": "MEASUREMENT", + "description": "11 is the issue number of the proceedings of the vldb endowment where the paper was published", + "source_ids": [ + 197 + ], + "id": "Name: 11\nType: MEASUREMENT" + }, + { + "entity_name": "3695 3707", + "entity_type": "MEASUREMENT", + "description": "3695 3707 represents the page range of the paper within the publication", + "source_ids": [ + 197 + ], + "id": "Name: 3695 3707\nType: MEASUREMENT" + }, + { + "entity_name": "ilias chalkidis", + "entity_type": "PERSON", + "description": "ilias chalkidis is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ], + "id": "Name: ilias chalkidis\nType: PERSON" + }, + { + "entity_name": "manos fergadiotis", + "entity_type": "PERSON", + "description": "manos fergadiotis is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ], + "id": "Name: manos fergadiotis\nType: PERSON" + }, + { + "entity_name": "prodromos malakasiotis", + "entity_type": "PERSON", + "description": "prodromos malakasiotis is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ], + "id": "Name: prodromos malakasiotis\nType: PERSON" + }, + { + "entity_name": "nikolaos aletras", + "entity_type": "PERSON", + "description": "nikolaos aletras is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ], + "id": "Name: nikolaos aletras\nType: PERSON" + }, + { + "entity_name": "ion androutsopoulos", + "entity_type": "PERSON", + "description": "ion androutsopoulos is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ], + "id": "Name: ion androutsopoulos\nType: PERSON" + }, + { + "entity_name": "legal bert", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "legal bert is a model described as the muppets straight out of law school in the text", + "source_ids": [ + 198 + ], + "id": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "arxiv preprint arxiv 2010 02559", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2010 02559 is the specific publication venue and identifier for the paper", + "source_ids": [ + 198 + ], + "id": "Name: arxiv preprint arxiv 2010 02559\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "2020", + "entity_type": "DATE", + "description": "2020 is the year the paper was published.", + "source_ids": [ + 202, + 198 + ], + "id": "Name: 2020\nType: DATE" + }, + { + "entity_name": "muppets", + "entity_type": "PRODUCT", + "description": "muppets is a metaphorical term used in the text to describe the legal bert model", + "source_ids": [ + 198 + ], + "id": "Name: muppets\nType: PRODUCT" + }, + { + "entity_name": "law school", + "entity_type": "LOCATION", + "description": "law school is a location mentioned metaphorically to indicate the origin or training context of the legal bert model", + "source_ids": [ + 198 + ], + "id": "Name: law school\nType: LOCATION" + }, + { + "entity_name": "sibei chen", + "entity_type": "PERSON", + "description": "Sibei Chen is an author of the paper titled \"Auto Formula\" and is also listed as one of the authors of the paper titled \"Haipipe.\"", + "source_ids": [ + 200, + 199 + ], + "id": "Name: sibei chen\nType: PERSON" + }, + { + "entity_name": "yeye he", + "entity_type": "PERSON", + "description": "yeye he is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ], + "id": "Name: yeye he\nType: PERSON" + }, + { + "entity_name": "weiwei cui", + "entity_type": "PERSON", + "description": "weiwei cui is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ], + "id": "Name: weiwei cui\nType: PERSON" + }, + { + "entity_name": "ju fan", + "entity_type": "PERSON", + "description": "Ju Fan is listed as an author of the paper titled Auto Formula and is also one of the authors of the paper titled Haipipe.", + "source_ids": [ + 200, + 199 + ], + "id": "Name: ju fan\nType: PERSON" + }, + { + "entity_name": "song ge", + "entity_type": "PERSON", + "description": "song ge is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ], + "id": "Name: song ge\nType: PERSON" + }, + { + "entity_name": "haidong zhang", + "entity_type": "PERSON", + "description": "haidong zhang is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ], + "id": "Name: haidong zhang\nType: PERSON" + }, + { + "entity_name": "dongmei zhang", + "entity_type": "PERSON", + "description": "dongmei zhang is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ], + "id": "Name: dongmei zhang\nType: PERSON" + }, + { + "entity_name": "surajit chaudhuri", + "entity_type": "PERSON", + "description": "surajit chaudhuri is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ], + "id": "Name: surajit chaudhuri\nType: PERSON" + }, + { + "entity_name": "auto formula", + "entity_type": "PRODUCT", + "description": "auto formula is a system or method recommended in the paper for recommending formulas in spreadsheets using contrastive learning", + "source_ids": [ + 199 + ], + "id": "Name: auto formula\nType: PRODUCT" + }, + { + "entity_name": "proceedings of the acm on management of data", + "entity_type": "PUBLICATION_VENUE", + "description": "Proceedings of the ACM on Management of Data is a publication venue where papers, including those published in 2024, are released.", + "source_ids": [ + 200, + 199 + ], + "id": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "1 27", + "entity_type": "MEASUREMENT", + "description": "1 27 represents the page range of the article in the publication", + "source_ids": [ + 199 + ], + "id": "Name: 1 27\nType: MEASUREMENT" + }, + { + "entity_name": "table representations", + "entity_type": "DATASET_OR_CORPUS", + "description": "table representations is the subject of the contrastive learning method used in the paper", + "source_ids": [ + 199 + ], + "id": "Name: table representations\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "contrastive learning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "contrastive learning is the technique used to recommend formulas in spreadsheets", + "source_ids": [ + 199 + ], + "id": "Name: contrastive learning\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "spreadsheets", + "entity_type": "PRODUCT", + "description": "spreadsheets are the application domain where the auto formula system recommends formulas", + "source_ids": [ + 199 + ], + "id": "Name: spreadsheets\nType: PRODUCT" + }, + { + "entity_name": "formulas", + "entity_type": "PRODUCT", + "description": "formulas are the specific items being recommended by the auto formula system", + "source_ids": [ + 199 + ], + "id": "Name: formulas\nType: PRODUCT" + }, + { + "entity_name": "nan tang", + "entity_type": "PERSON", + "description": "nan tang is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ], + "id": "Name: nan tang\nType: PERSON" + }, + { + "entity_name": "xuemi yan", + "entity_type": "PERSON", + "description": "xuemi yan is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ], + "id": "Name: xuemi yan\nType: PERSON" + }, + { + "entity_name": "guoliang li", + "entity_type": "PERSON", + "description": "guoliang li is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ], + "id": "Name: guoliang li\nType: PERSON" + }, + { + "entity_name": "xiaoyong du", + "entity_type": "PERSON", + "description": "xiaoyong du is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ], + "id": "Name: xiaoyong du\nType: PERSON" + }, + { + "entity_name": "haipipe", + "entity_type": "PRODUCT", + "description": "haipipe is a system or method described in the paper that combines human generated and machine generated pipelines for data preparation", + "source_ids": [ + 200 + ], + "id": "Name: haipipe\nType: PRODUCT" + }, + { + "entity_name": "1 26", + "entity_type": "MEASUREMENT", + "description": "1 26 refers to the page range of the paper in the publication", + "source_ids": [ + 200 + ], + "id": "Name: 1 26\nType: MEASUREMENT" + }, + { + "entity_name": "acm", + "entity_type": "ORGANIZATION", + "description": "acm is the organization associated with the publication venue mentioned in the text", + "source_ids": [ + 200 + ], + "id": "Name: acm\nType: ORGANIZATION" + }, + { + "entity_name": "data preparation", + "entity_type": "TASK_OR_PROBLEM", + "description": "data preparation is the specific task addressed by the haipipe system described in the text", + "source_ids": [ + 200 + ], + "id": "Name: data preparation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "human generated pipelines", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "human generated pipelines are a type of pipeline combined with machine generated ones in the haipipe system", + "source_ids": [ + 200 + ], + "id": "Name: human generated pipelines\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "machine generated pipelines", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "machine generated pipelines are a type of pipeline combined with human generated ones in the haipipe system", + "source_ids": [ + 200 + ], + "id": "Name: machine generated pipelines\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "jaemin cho", + "entity_type": "PERSON", + "description": "jaemin cho is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ], + "id": "Name: jaemin cho\nType: PERSON" + }, + { + "entity_name": "debanjan mahata", + "entity_type": "PERSON", + "description": "debanjan mahata is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ], + "id": "Name: debanjan mahata\nType: PERSON" + }, + { + "entity_name": "ozan irsoy", + "entity_type": "PERSON", + "description": "ozan irsoy is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ], + "id": "Name: ozan irsoy\nType: PERSON" + }, + { + "entity_name": "yujie he", + "entity_type": "PERSON", + "description": "yujie he is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ], + "id": "Name: yujie he\nType: PERSON" + }, + { + "entity_name": "mohit bansal", + "entity_type": "PERSON", + "description": "mohit bansal is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ], + "id": "Name: mohit bansal\nType: PERSON" + }, + { + "entity_name": "m3docrag", + "entity_type": "PRODUCT", + "description": "m3docrag is a multi modal retrieval system designed for multi page multidocument understanding", + "source_ids": [ + 201 + ], + "id": "Name: m3docrag\nType: PRODUCT" + }, + { + "entity_name": "arxiv 2411 04952", + "entity_type": "FILE_TYPE", + "description": "arxiv 2411 04952 is the specific identifier for the m3docrag preprint", + "source_ids": [ + 201 + ], + "id": "Name: arxiv 2411 04952\nType: FILE_TYPE" + }, + { + "entity_name": "multi modal retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "multi modal retrieval is the technique described as what is needed for multi page multidocument understanding in the m3docrag paper", + "source_ids": [ + 201 + ], + "id": "Name: multi modal retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "multi page multidocument understanding", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi page multidocument understanding is the specific task or problem that the m3docrag system addresses", + "source_ids": [ + 201 + ], + "id": "Name: multi page multidocument understanding\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "arxiv preprint", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint is the type of publication venue where the m3docrag paper was released", + "source_ids": [ + 201 + ], + "id": "Name: arxiv preprint\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "vassilis christophides", + "entity_type": "PERSON", + "description": "vassilis christophides is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "id": "Name: vassilis christophides\nType: PERSON" + }, + { + "entity_name": "vasilis efthymiou", + "entity_type": "PERSON", + "description": "vasilis efthymiou is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "id": "Name: vasilis efthymiou\nType: PERSON" + }, + { + "entity_name": "themis palpanas", + "entity_type": "PERSON", + "description": "themis palpanas is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "id": "Name: themis palpanas\nType: PERSON" + }, + { + "entity_name": "george papadakis", + "entity_type": "PERSON", + "description": "george papadakis is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "id": "Name: george papadakis\nType: PERSON" + }, + { + "entity_name": "kostas stefanidis", + "entity_type": "PERSON", + "description": "kostas stefanidis is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "id": "Name: kostas stefanidis\nType: PERSON" + }, + { + "entity_name": "acm computing surveys", + "entity_type": "PUBLICATION_VENUE", + "description": "acm computing surveys is the journal where the paper was published", + "source_ids": [ + 202 + ], + "id": "Name: acm computing surveys\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "an overview of end to end entity resolution for big data", + "entity_type": "BOOK", + "description": "an overview of end to end entity resolution for big data is the title of the paper discussed in the text", + "source_ids": [ + 202 + ], + "id": "Name: an overview of end to end entity resolution for big data\nType: BOOK" + }, + { + "entity_name": "csur", + "entity_type": "PUBLICATION_VENUE", + "description": "csur is the abbreviation for acm computing surveys the journal where the paper was published", + "source_ids": [ + 202 + ], + "id": "Name: csur\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "53", + "entity_type": "MEASUREMENT", + "description": "53 is the volume number of the journal acm computing surveys where the paper was published", + "source_ids": [ + 202 + ], + "id": "Name: 53\nType: MEASUREMENT" + }, + { + "entity_name": "1 42", + "entity_type": "MEASUREMENT", + "description": "1 42 represents the page range of the paper within the journal", + "source_ids": [ + 202 + ], + "id": "Name: 1 42\nType: MEASUREMENT" + }, + { + "entity_name": "end to end entity resolution", + "entity_type": "TASK_OR_PROBLEM", + "description": "end to end entity resolution is the specific technical problem addressed in the paper", + "source_ids": [ + 202 + ], + "id": "Name: end to end entity resolution\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "big data", + "entity_type": "DATASET_OR_CORPUS", + "description": "big data is the domain or subject matter discussed in the paper", + "source_ids": [ + 202 + ], + "id": "Name: big data\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "gheorghe comanici", + "entity_type": "PERSON", + "description": "gheorghe comanici is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: gheorghe comanici\nType: PERSON" + }, + { + "entity_name": "eric bieber", + "entity_type": "PERSON", + "description": "eric bieber is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: eric bieber\nType: PERSON" + }, + { + "entity_name": "mike schaekermann", + "entity_type": "PERSON", + "description": "mike schaekermann is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: mike schaekermann\nType: PERSON" + }, + { + "entity_name": "ice pasupat", + "entity_type": "PERSON", + "description": "ice pasupat is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: ice pasupat\nType: PERSON" + }, + { + "entity_name": "noveen sachdeva", + "entity_type": "PERSON", + "description": "noveen sachdeva is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: noveen sachdeva\nType: PERSON" + }, + { + "entity_name": "inderjit dhillon", + "entity_type": "PERSON", + "description": "inderjit dhillon is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: inderjit dhillon\nType: PERSON" + }, + { + "entity_name": "marcel blistein", + "entity_type": "PERSON", + "description": "marcel blistein is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: marcel blistein\nType: PERSON" + }, + { + "entity_name": "ori ram", + "entity_type": "PERSON", + "description": "ori ram is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: ori ram\nType: PERSON" + }, + { + "entity_name": "dan zhang", + "entity_type": "PERSON", + "description": "dan zhang is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: dan zhang\nType: PERSON" + }, + { + "entity_name": "evan rosen", + "entity_type": "PERSON", + "description": "evan rosen is listed as one of the authors of the paper", + "source_ids": [ + 203 + ], + "id": "Name: evan rosen\nType: PERSON" + }, + { + "entity_name": "arxiv 2507 06261", + "entity_type": "FILE_TYPE", + "description": "arxiv 2507 06261 is the specific identifier for the preprint document", + "source_ids": [ + 203 + ], + "id": "Name: arxiv 2507 06261\nType: FILE_TYPE" + }, + { + "entity_name": "advanced reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "advanced reasoning is a capability of gemini 2 5 mentioned in the text", + "source_ids": [ + 203 + ], + "id": "Name: advanced reasoning\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "multimodality", + "entity_type": "TASK_OR_PROBLEM", + "description": "multimodality is a capability of gemini 2 5 mentioned in the text", + "source_ids": [ + 203 + ], + "id": "Name: multimodality\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "long context", + "entity_type": "TASK_OR_PROBLEM", + "description": "long context is a capability of gemini 2 5 mentioned in the text", + "source_ids": [ + 203 + ], + "id": "Name: long context\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "next generation agentic capabilities", + "entity_type": "TASK_OR_PROBLEM", + "description": "next generation agentic capabilities are capabilities of gemini 2 5 mentioned in the text", + "source_ids": [ + 203 + ], + "id": "Name: next generation agentic capabilities\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "gemini 2 5 pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities", + "entity_type": "BOOK", + "description": "gemini 2 5 pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities is the title of the paper", + "source_ids": [ + 203 + ], + "id": "Name: gemini 2 5 pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities\nType: BOOK" + }, + { + "entity_name": "arxiv preprint", + "entity_type": "FILE_TYPE", + "description": "An arXiv preprint is a type of document in which research work is published, describing the format of the document released prior to formal peer-reviewed publication.", + "source_ids": [ + 203, + 211 + ], + "id": "Name: arxiv preprint\nType: FILE_TYPE" + }, + { + "entity_name": "pradeep dasigi", + "entity_type": "PERSON", + "description": "pradeep dasigi is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ], + "id": "Name: pradeep dasigi\nType: PERSON" + }, + { + "entity_name": "kyle lo", + "entity_type": "PERSON", + "description": "kyle lo is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ], + "id": "Name: kyle lo\nType: PERSON" + }, + { + "entity_name": "iz beltagy", + "entity_type": "PERSON", + "description": "iz beltagy is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ], + "id": "Name: iz beltagy\nType: PERSON" + }, + { + "entity_name": "arman cohan", + "entity_type": "PERSON", + "description": "arman cohan is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ], + "id": "Name: arman cohan\nType: PERSON" + }, + { + "entity_name": "noah a smith", + "entity_type": "PERSON", + "description": "noah a smith is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ], + "id": "Name: noah a smith\nType: PERSON" + }, + { + "entity_name": "matt gardner", + "entity_type": "PERSON", + "description": "matt gardner is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ], + "id": "Name: matt gardner\nType: PERSON" + }, + { + "entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "entity_type": "PRODUCT", + "description": "a dataset of information seeking questions and answers anchored in research papers is the title of the work described in the text", + "source_ids": [ + 204 + ], + "id": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT" + }, + { + "entity_name": "arxiv preprint arxiv 2105 03011", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2105 03011 is the specific publication venue and identifier for the work", + "source_ids": [ + 204 + ], + "id": "Name: arxiv preprint arxiv 2105 03011\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "2021", + "entity_type": "DATE", + "description": "2021 is the year the preprint was published", + "source_ids": [ + 204 + ], + "id": "Name: 2021\nType: DATE" + }, + { + "entity_name": "research papers", + "entity_type": "DATASET_OR_CORPUS", + "description": "research papers are the source material from which the information seeking questions and answers are anchored", + "source_ids": [ + 204 + ], + "id": "Name: research papers\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "information seeking questions", + "entity_type": "TASK_OR_PROBLEM", + "description": "information seeking questions are the specific type of queries included in the dataset", + "source_ids": [ + 204 + ], + "id": "Name: information seeking questions\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "answers", + "entity_type": "TASK_OR_PROBLEM", + "description": "answers are the responses paired with the questions in the dataset", + "source_ids": [ + 204 + ], + "id": "Name: answers\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "xavier daull", + "entity_type": "PERSON", + "description": "xavier daull is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ], + "id": "Name: xavier daull\nType: PERSON" + }, + { + "entity_name": "patrice bellot", + "entity_type": "PERSON", + "description": "patrice bellot is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ], + "id": "Name: patrice bellot\nType: PERSON" + }, + { + "entity_name": "emmanuel bruno", + "entity_type": "PERSON", + "description": "emmanuel bruno is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ], + "id": "Name: emmanuel bruno\nType: PERSON" + }, + { + "entity_name": "vincent martin", + "entity_type": "PERSON", + "description": "vincent martin is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ], + "id": "Name: vincent martin\nType: PERSON" + }, + { + "entity_name": "elisabeth murisasco", + "entity_type": "PERSON", + "description": "elisabeth murisasco is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ], + "id": "Name: elisabeth murisasco\nType: PERSON" + }, + { + "entity_name": "arxiv preprint arxiv 2302 09051", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2302 09051 is the specific identifier for the preprint where the survey was published", + "source_ids": [ + 205 + ], + "id": "Name: arxiv preprint arxiv 2302 09051\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "complex qa and language models hybrid architectures survey", + "entity_type": "BOOK", + "description": "complex qa and language models hybrid architectures survey is the title of the work authored by the listed individuals", + "source_ids": [ + 205 + ], + "id": "Name: complex qa and language models hybrid architectures survey\nType: BOOK" + }, + { + "entity_name": "2302 09051", + "entity_type": "FILE_TYPE", + "description": "2302 09051 is the unique identifier code for the specific preprint document", + "source_ids": [ + 205 + ], + "id": "Name: 2302 09051\nType: FILE_TYPE" + }, + { + "entity_name": "darren edge", + "entity_type": "PERSON", + "description": "darren edge is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ], + "id": "Name: darren edge\nType: PERSON" + }, + { + "entity_name": "ha trinh", + "entity_type": "PERSON", + "description": "ha trinh is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ], + "id": "Name: ha trinh\nType: PERSON" + }, + { + "entity_name": "newman cheng", + "entity_type": "PERSON", + "description": "newman cheng is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ], + "id": "Name: newman cheng\nType: PERSON" + }, + { + "entity_name": "joshua bradley", + "entity_type": "PERSON", + "description": "joshua bradley is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ], + "id": "Name: joshua bradley\nType: PERSON" + }, + { + "entity_name": "alex chao", + "entity_type": "PERSON", + "description": "alex chao is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ], + "id": "Name: alex chao\nType: PERSON" + }, + { + "entity_name": "apurva mody", + "entity_type": "PERSON", + "description": "apurva mody is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ], + "id": "Name: apurva mody\nType: PERSON" + }, + { + "entity_name": "steven truitt", + "entity_type": "PERSON", + "description": "steven truitt is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ], + "id": "Name: steven truitt\nType: PERSON" + }, + { + "entity_name": "jonathan larson", + "entity_type": "PERSON", + "description": "jonathan larson is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ], + "id": "Name: jonathan larson\nType: PERSON" + }, + { + "entity_name": "from local to global a graph rag approach to query focused summarization", + "entity_type": "BOOK", + "description": "from local to global a graph rag approach to query focused summarization is the title of the arxiv preprint", + "source_ids": [ + 206 + ], + "id": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "entity_name": "arxiv 2404 16130", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv 2404 16130 is the specific identifier for the preprint document", + "source_ids": [ + 206 + ], + "id": "Name: arxiv 2404 16130\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "graph rag", + "entity_type": "TECHNOLOGY", + "description": "graph rag is a technology approach mentioned in the title of the paper as a method for query focused summarization", + "source_ids": [ + 206 + ], + "id": "Name: graph rag\nType: TECHNOLOGY" + }, + { + "entity_name": "query focused summarization", + "entity_type": "TASK_OR_PROBLEM", + "description": "query focused summarization is the specific task or problem addressed by the graph rag approach in the paper", + "source_ids": [ + 206 + ], + "id": "Name: query focused summarization\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "local", + "entity_type": "CONCEPT", + "description": "local refers to a scope or scale mentioned in the paper s title contrasting with global", + "source_ids": [ + 206 + ], + "id": "Name: local\nType: CONCEPT" + }, + { + "entity_name": "global", + "entity_type": "CONCEPT", + "description": "Global refers to a scope or scale mentioned in the paper's title, contrasting with local, and also denotes a process that filters for all items of a specific type, such as a table.", + "source_ids": [ + 251, + 206 + ], + "id": "Name: global\nType: CONCEPT" + }, + { + "entity_name": "yunfan gao", + "entity_type": "PERSON", + "description": "yunfan gao is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ], + "id": "Name: yunfan gao\nType: PERSON" + }, + { + "entity_name": "yun xiong", + "entity_type": "PERSON", + "description": "yun xiong is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ], + "id": "Name: yun xiong\nType: PERSON" + }, + { + "entity_name": "xinyu gao", + "entity_type": "PERSON", + "description": "xinyu gao is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ], + "id": "Name: xinyu gao\nType: PERSON" + }, + { + "entity_name": "kangxiang jia", + "entity_type": "PERSON", + "description": "kangxiang jia is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ], + "id": "Name: kangxiang jia\nType: PERSON" + }, + { + "entity_name": "jinliu pan", + "entity_type": "PERSON", + "description": "jinliu pan is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ], + "id": "Name: jinliu pan\nType: PERSON" + }, + { + "entity_name": "yuxi bi", + "entity_type": "PERSON", + "description": "yuxi bi is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ], + "id": "Name: yuxi bi\nType: PERSON" + }, + { + "entity_name": "yi dai", + "entity_type": "PERSON", + "description": "yi dai is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ], + "id": "Name: yi dai\nType: PERSON" + }, + { + "entity_name": "jiawei sun", + "entity_type": "PERSON", + "description": "jiawei sun is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ], + "id": "Name: jiawei sun\nType: PERSON" + }, + { + "entity_name": "haofen wang", + "entity_type": "PERSON", + "description": "haofen wang is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ], + "id": "Name: haofen wang\nType: PERSON" + }, + { + "entity_name": "retrieval augmented generation for large language models a survey", + "entity_type": "BOOK", + "description": "retrieval augmented generation for large language models a survey is the title of the document authored by the listed individuals", + "source_ids": [ + 207 + ], + "id": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "entity_name": "arxiv preprint arxiv 2312 10997", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2312 10997 is the specific identifier and venue where the survey was published", + "source_ids": [ + 207 + ], + "id": "Name: arxiv preprint arxiv 2312 10997\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "2312 10997", + "entity_type": "FILE_TYPE", + "description": "2312 10997 is the unique identifier code for the preprint document", + "source_ids": [ + 207 + ], + "id": "Name: 2312 10997\nType: FILE_TYPE" + }, + { + "entity_name": "zirui guo", + "entity_type": "PERSON", + "description": "zirui guo is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ], + "id": "Name: zirui guo\nType: PERSON" + }, + { + "entity_name": "lianghao xia", + "entity_type": "PERSON", + "description": "lianghao xia is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ], + "id": "Name: lianghao xia\nType: PERSON" + }, + { + "entity_name": "yanhua yu", + "entity_type": "PERSON", + "description": "yanhua yu is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ], + "id": "Name: yanhua yu\nType: PERSON" + }, + { + "entity_name": "tu ao", + "entity_type": "PERSON", + "description": "tu ao is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ], + "id": "Name: tu ao\nType: PERSON" + }, + { + "entity_name": "chao huang", + "entity_type": "PERSON", + "description": "chao huang is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ], + "id": "Name: chao huang\nType: PERSON" + }, + { + "entity_name": "lightrag", + "entity_type": "PRODUCT", + "description": "lightrag is a retrieval augmented generation system described as simple and fast", + "source_ids": [ + 208 + ], + "id": "Name: lightrag\nType: PRODUCT" + }, + { + "entity_name": "arxiv e prints", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv e prints is the publication venue where the paper was released in 2024", + "source_ids": [ + 208 + ], + "id": "Name: arxiv e prints\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "arxiv2410", + "entity_type": "FILE_TYPE", + "description": "arxiv2410 is the specific identifier for the paper on arxiv", + "source_ids": [ + 208 + ], + "id": "Name: arxiv2410\nType: FILE_TYPE" + }, + { + "entity_name": "simple", + "entity_type": "CONCEPT", + "description": "simple is an attribute used to describe the lightrag system", + "source_ids": [ + 208 + ], + "id": "Name: simple\nType: CONCEPT" + }, + { + "entity_name": "fast", + "entity_type": "CONCEPT", + "description": "fast is an attribute used to describe the lightrag system", + "source_ids": [ + 208 + ], + "id": "Name: fast\nType: CONCEPT" + }, + { + "entity_name": "bernal jim nez guti rrez", + "entity_type": "PERSON", + "description": "bernal jim nez guti rrez is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ], + "id": "Name: bernal jim nez guti rrez\nType: PERSON" + }, + { + "entity_name": "yiheng shu", + "entity_type": "PERSON", + "description": "yiheng shu is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ], + "id": "Name: yiheng shu\nType: PERSON" + }, + { + "entity_name": "yu gu", + "entity_type": "PERSON", + "description": "yu gu is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ], + "id": "Name: yu gu\nType: PERSON" + }, + { + "entity_name": "michihiro yasunaga", + "entity_type": "PERSON", + "description": "michihiro yasunaga is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ], + "id": "Name: michihiro yasunaga\nType: PERSON" + }, + { + "entity_name": "yu su", + "entity_type": "PERSON", + "description": "yu su is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ], + "id": "Name: yu su\nType: PERSON" + }, + { + "entity_name": "hipporag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "hipporag is a neurobiologically inspired long term memory system designed for large language models", + "source_ids": [ + 209 + ], + "id": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "arxiv 2405 14831", + "entity_type": "FILE_TYPE", + "description": "arxiv 2405 14831 is the specific identifier for the preprint document", + "source_ids": [ + 209 + ], + "id": "Name: arxiv 2405 14831\nType: FILE_TYPE" + }, + { + "entity_name": "large language models", + "entity_type": "PRODUCT", + "description": "large language models are the target systems for which hipporag is designed as a memory solution", + "source_ids": [ + 209 + ], + "id": "Name: large language models\nType: PRODUCT" + }, + { + "entity_name": "neurobiologically inspired long term memory", + "entity_type": "TASK_OR_PROBLEM", + "description": "neurobiologically inspired long term memory is the specific problem domain or concept that hipporag addresses", + "source_ids": [ + 209 + ], + "id": "Name: neurobiologically inspired long term memory\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "taher h haveliwala", + "entity_type": "PERSON", + "description": "taher h haveliwala is the author of the paper titled topic sensitive pagerank", + "source_ids": [ + 210 + ], + "id": "Name: taher h haveliwala\nType: PERSON" + }, + { + "entity_name": "2002", + "entity_type": "DATE", + "description": "2002 is the year the paper topic sensitive pagerank was published", + "source_ids": [ + 210 + ], + "id": "Name: 2002\nType: DATE" + }, + { + "entity_name": "topic sensitive pagerank", + "entity_type": "TECHNOLOGY", + "description": "topic sensitive pagerank is the title of a paper presented at a conference", + "source_ids": [ + 210 + ], + "id": "Name: topic sensitive pagerank\nType: TECHNOLOGY" + }, + { + "entity_name": "11th international conference on world wide web", + "entity_type": "EVENT", + "description": "the 11th international conference on world wide web is the venue where the paper was presented", + "source_ids": [ + 210 + ], + "id": "Name: 11th international conference on world wide web\nType: EVENT" + }, + { + "entity_name": "world wide web", + "entity_type": "TECHNOLOGY", + "description": "world wide web is the technology platform associated with the conference where the paper was presented", + "source_ids": [ + 210 + ], + "id": "Name: world wide web\nType: TECHNOLOGY" + }, + { + "entity_name": "517 526", + "entity_type": "MEASUREMENT", + "description": "517 526 represents the page range of the paper in the conference proceedings", + "source_ids": [ + 210 + ], + "id": "Name: 517 526\nType: MEASUREMENT" + }, + { + "entity_name": "xiaoxin he", + "entity_type": "PERSON", + "description": "xiaoxin he is listed as one of the authors of the paper", + "source_ids": [ + 211 + ], + "id": "Name: xiaoxin he\nType: PERSON" + }, + { + "entity_name": "yijun tian", + "entity_type": "PERSON", + "description": "yijun tian is listed as one of the authors of the paper", + "source_ids": [ + 211 + ], + "id": "Name: yijun tian\nType: PERSON" + }, + { + "entity_name": "yifei sun", + "entity_type": "PERSON", + "description": "yifei sun is listed as one of the authors of the paper", + "source_ids": [ + 211 + ], + "id": "Name: yifei sun\nType: PERSON" + }, + { + "entity_name": "nitesh v chawla", + "entity_type": "PERSON", + "description": "nitesh v chawla is listed as one of the authors of the paper", + "source_ids": [ + 211 + ], + "id": "Name: nitesh v chawla\nType: PERSON" + }, + { + "entity_name": "thomas laurent", + "entity_type": "PERSON", + "description": "thomas laurent is listed as one of the authors of the paper", + "source_ids": [ + 211 + ], + "id": "Name: thomas laurent\nType: PERSON" + }, + { + "entity_name": "yann lecun", + "entity_type": "PERSON", + "description": "yann lecun is listed as one of the authors of the paper", + "source_ids": [ + 211 + ], + "id": "Name: yann lecun\nType: PERSON" + }, + { + "entity_name": "xavier bresson", + "entity_type": "PERSON", + "description": "xavier bresson is listed as one of the authors of the paper", + "source_ids": [ + 211 + ], + "id": "Name: xavier bresson\nType: PERSON" + }, + { + "entity_name": "bryan hooi", + "entity_type": "PERSON", + "description": "bryan hooi is listed as one of the authors of the paper", + "source_ids": [ + 211 + ], + "id": "Name: bryan hooi\nType: PERSON" + }, + { + "entity_name": "g retriever", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "g retriever is a retrieval augmented generation model for textual graph understanding and question answering", + "source_ids": [ + 211 + ], + "id": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "arxiv 2402 07630", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv 2402 07630 is the identifier for the preprint publication", + "source_ids": [ + 211 + ], + "id": "Name: arxiv 2402 07630\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "textual graph understanding", + "entity_type": "TASK_OR_PROBLEM", + "description": "textual graph understanding is a specific task addressed by the g retriever model", + "source_ids": [ + 211 + ], + "id": "Name: textual graph understanding\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "yucheng hu", + "entity_type": "PERSON", + "description": "yucheng hu is one of the authors of the 2024 survey on retrieval augmented language models", + "source_ids": [ + 212 + ], + "id": "Name: yucheng hu\nType: PERSON" + }, + { + "entity_name": "yuxing lu", + "entity_type": "PERSON", + "description": "yuxing lu is one of the authors of the 2024 survey on retrieval augmented language models", + "source_ids": [ + 212 + ], + "id": "Name: yuxing lu\nType: PERSON" + }, + { + "entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "entity_type": "BOOK", + "description": "rag and rau is the title of a survey paper published in 2024", + "source_ids": [ + 212 + ], + "id": "Name: rag and rau a survey on retrieval augmented language model in natural language processing\nType: BOOK" + }, + { + "entity_name": "natural language processing", + "entity_type": "RESEARCH_FIELD", + "description": "natural language processing is the field of study addressed by the survey paper", + "source_ids": [ + 212 + ], + "id": "Name: natural language processing\nType: RESEARCH_FIELD" + }, + { + "entity_name": "arxiv 2404 19543", + "entity_type": "PRODUCT", + "description": "arxiv 2404 19543 is the specific identifier for the preprint paper mentioned in the text", + "source_ids": [ + 212 + ], + "id": "Name: arxiv 2404 19543\nType: PRODUCT" + }, + { + "entity_name": "retrieval augmented language model", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "retrieval augmented language model is the specific technology subject of the survey", + "source_ids": [ + 212 + ], + "id": "Name: retrieval augmented language model\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "soyeong jeong", + "entity_type": "PERSON", + "description": "soyeong jeong is an author of the 2024 arxiv preprint titled adaptive rag", + "source_ids": [ + 213 + ], + "id": "Name: soyeong jeong\nType: PERSON" + }, + { + "entity_name": "jinheon baek", + "entity_type": "PERSON", + "description": "jinheon baek is an author of the 2024 arxiv preprint titled adaptive rag", + "source_ids": [ + 213 + ], + "id": "Name: jinheon baek\nType: PERSON" + }, + { + "entity_name": "adaptive rag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "adaptive rag is a model described as learning to adapt retrieval augmented large language models through question complexity", + "source_ids": [ + 213 + ], + "id": "Name: adaptive rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "retrieval augmented large language models", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "retrieval augmented large language models are the subject of adaptation in the adaptive rag study", + "source_ids": [ + 213 + ], + "id": "Name: retrieval augmented large language models\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "arxiv 2403 14403", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv 2403 14403 is the specific identifier for the preprint document", + "source_ids": [ + 213 + ], + "id": "Name: arxiv 2403 14403\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "question complexity", + "entity_type": "TASK_OR_PROBLEM", + "description": "question complexity is the factor through which adaptive rag learns to adapt models", + "source_ids": [ + 213 + ], + "id": "Name: question complexity\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "learning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "learning is the process by which adaptive rag adapts to question complexity", + "source_ids": [ + 213 + ], + "id": "Name: learning\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "13", + "entity_type": "NUMBER", + "description": "13 is a number mentioned in the text though its specific context or role is not defined", + "source_ids": [ + 214 + ], + "id": "Name: 13\nType: NUMBER" + }, + { + "entity_name": "table: node 215...", + "entity_type": "TABLE", + "description": "A table with no available description.", + "source_ids": [ + 215 + ], + "id": "Name: table: node 215...\nType: TABLE" + }, + { + "entity_name": "timo schick", + "entity_type": "PERSON", + "description": "timo schick is listed as one of the authors of the document", + "source_ids": [ + 216 + ], + "id": "Name: timo schick\nType: PERSON" + }, + { + "entity_name": "jane dwivedi yu", + "entity_type": "PERSON", + "description": "jane dwivedi yu is listed as one of the authors of the document", + "source_ids": [ + 216 + ], + "id": "Name: jane dwivedi yu\nType: PERSON" + }, + { + "entity_name": "roberto dess", + "entity_type": "PERSON", + "description": "roberto dess is listed as one of the authors of the document", + "source_ids": [ + 216 + ], + "id": "Name: roberto dess\nType: PERSON" + }, + { + "entity_name": "roberta raileanu", + "entity_type": "PERSON", + "description": "roberta raileanu is listed as one of the authors of the document", + "source_ids": [ + 216 + ], + "id": "Name: roberta raileanu\nType: PERSON" + }, + { + "entity_name": "maria lomeli", + "entity_type": "PERSON", + "description": "maria lomeli is listed as one of the authors of the document", + "source_ids": [ + 216 + ], + "id": "Name: maria lomeli\nType: PERSON" + }, + { + "entity_name": "eric hambro", + "entity_type": "PERSON", + "description": "eric hambro is listed as one of the authors of the document", + "source_ids": [ + 216 + ], + "id": "Name: eric hambro\nType: PERSON" + }, + { + "entity_name": "luke zettlemoyer", + "entity_type": "PERSON", + "description": "luke zettlemoyer is listed as one of the authors of the document", + "source_ids": [ + 216 + ], + "id": "Name: luke zettlemoyer\nType: PERSON" + }, + { + "entity_name": "nicola cancedda", + "entity_type": "PERSON", + "description": "nicola cancedda is listed as one of the authors of the document", + "source_ids": [ + 216 + ], + "id": "Name: nicola cancedda\nType: PERSON" + }, + { + "entity_name": "thomas scialom", + "entity_type": "PERSON", + "description": "thomas scialom is listed as one of the authors of the document", + "source_ids": [ + 216 + ], + "id": "Name: thomas scialom\nType: PERSON" + }, + { + "entity_name": "table: node 217...", + "entity_type": "TABLE", + "description": "A table with no available description.", + "source_ids": [ + 217 + ], + "id": "Name: table: node 217...\nType: TABLE" + }, + { + "entity_name": "table: node 218...", + "entity_type": "TABLE", + "description": "A table with no available description.", + "source_ids": [ + 218 + ], + "id": "Name: table: node 218...\nType: TABLE" + }, + { + "entity_name": "a experimental details", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section provides the specific configuration, setup, and parameters used to conduct the experiments described in the study.", + "source_ids": [ + 220 + ], + "id": "Name: a experimental details\nType: SECTION_TITLE" + }, + { + "entity_name": "a.1 evaluation metrics", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' within the paper 'BookRAG', this section defines the specific quantitative measures used to assess the performance of the retrieval-augmented generation system.", + "source_ids": [ + 221 + ], + "id": "Name: a.1 evaluation metrics\nType: SECTION_TITLE" + }, + { + "entity_name": "main experiments", + "entity_type": "EVENT", + "description": "main experiments are the primary experiments for which metrics are defined and calculated in the text", + "source_ids": [ + 222 + ], + "id": "Name: main experiments\nType: EVENT" + }, + { + "entity_name": "metrics", + "entity_type": "EVALUATION_METRIC", + "description": "metrics are the specific measures defined and calculated in the text for the main experiments", + "source_ids": [ + 222 + ], + "id": "Name: metrics\nType: EVALUATION_METRIC" + }, + { + "entity_name": "definitions", + "entity_type": "CONCEPT", + "description": "definitions are the detailed descriptions provided for the metrics in the text", + "source_ids": [ + 222 + ], + "id": "Name: definitions\nType: CONCEPT" + }, + { + "entity_name": "calculation procedures", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "calculation procedures are the step by step methods described for computing the metrics", + "source_ids": [ + 222 + ], + "id": "Name: calculation procedures\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "standard rag models", + "entity_type": "TECHNOLOGY", + "description": "standard rag models are described as systems that generate free form natural language responses", + "source_ids": [ + 223 + ], + "id": "Name: standard rag models\nType: TECHNOLOGY" + }, + { + "entity_name": "natural language responses", + "entity_type": "PRODUCT", + "description": "natural language responses are the output generated by standard rag models often containing extraneous conversational text", + "source_ids": [ + 223 + ], + "id": "Name: natural language responses\nType: PRODUCT" + }, + { + "entity_name": "ground truth labels", + "entity_type": "PRODUCT", + "description": "ground truth labels are concise reference answers e g option a or 12 5 used for comparison against model outputs", + "source_ids": [ + 223 + ], + "id": "Name: ground truth labels\nType: PRODUCT" + }, + { + "entity_name": "a 1 1 answer extraction and normalization", + "entity_type": "SECTION_TITLE", + "description": "a 1 1 answer extraction and normalization is the title of the section discussing the process of extracting and normalizing answers", + "source_ids": [ + 223 + ], + "id": "Name: a 1 1 answer extraction and normalization\nType: SECTION_TITLE" + }, + { + "entity_name": "option a", + "entity_type": "PRODUCT", + "description": "option a is an example of a concise ground truth label mentioned in the text", + "source_ids": [ + 223 + ], + "id": "Name: option a\nType: PRODUCT" + }, + { + "entity_name": "12 5", + "entity_type": "MEASUREMENT", + "description": "12 5 is an example of a concise ground truth label mentioned in the text", + "source_ids": [ + 223 + ], + "id": "Name: 12 5\nType: MEASUREMENT" + }, + { + "entity_name": "the answer is", + "entity_type": "PRODUCT", + "description": "the answer is is an example of extraneous conversational text that may appear in raw model outputs", + "source_ids": [ + 223 + ], + "id": "Name: the answer is\nType: PRODUCT" + }, + { + "entity_name": "llm based extraction step", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "llm based extraction step is a method used to align model output with the ground truth format before calculation", + "source_ids": [ + 224 + ], + "id": "Name: llm based extraction step\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "rag system", + "entity_type": "SYSTEM", + "description": "rag system is the system that generates the raw response denoted as y raw", + "source_ids": [ + 224 + ], + "id": "Name: rag system\nType: SYSTEM" + }, + { + "entity_name": "llmextract", + "entity_type": "SOFTWARE", + "description": "llmextract is a component or function that extracts key information from the raw response", + "source_ids": [ + 224 + ], + "id": "Name: llmextract\nType: SOFTWARE" + }, + { + "entity_name": "y raw", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "y raw denotes the raw response generated by the rag system", + "source_ids": [ + 224 + ], + "id": "Name: y raw\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "y gold", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "y gold denotes the ground truth", + "source_ids": [ + 224 + ], + "id": "Name: y gold\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "y hat", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "y hat denotes the extracted answer", + "source_ids": [ + 224 + ], + "id": "Name: y hat\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "n", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "n is a standard normalization function applied to y hat and y gold", + "source_ids": [ + 224 + ], + "id": "Name: n\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "equation 16", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 16 defines the relationship between the extracted answer the raw response and the instruction", + "source_ids": [ + 224 + ], + "id": "Name: equation 16\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "official evaluation protocols", + "entity_type": "TASK_OR_PROBLEM", + "description": "official evaluation protocols are the standards followed to ensure the extraction step aligns with the ground truth format", + "source_ids": [ + 224 + ], + "id": "Name: official evaluation protocols\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "key information", + "entity_type": "CONCEPT", + "description": "key information refers to the essential data such as key entities for span extraction that llmextract retrieves", + "source_ids": [ + 224 + ], + "id": "Name: key information\nType: CONCEPT" + }, + { + "entity_name": "key entity", + "entity_type": "CONCEPT", + "description": "key entity is an example of the key information extracted for span extraction", + "source_ids": [ + 224 + ], + "id": "Name: key entity\nType: CONCEPT" + }, + { + "entity_name": "span extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "span extraction is a specific task mentioned as an example of where key entities are extracted", + "source_ids": [ + 224 + ], + "id": "Name: span extraction\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "lowercasing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "lowercasing is a standard normalization technique applied to the text", + "source_ids": [ + 224 + ], + "id": "Name: lowercasing\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "removing punctuation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "removing punctuation is a standard normalization technique applied to the text", + "source_ids": [ + 224 + ], + "id": "Name: removing punctuation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "instruction", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "instruction is a parameter provided to the llmextract function to guide the extraction process", + "source_ids": [ + 224 + ], + "id": "Name: instruction\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "formula (16)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the predicted output y_hat as a function of raw input and instruction. LaTeX: ˆ 𝑦 = LLMextract ( 𝑦 𝑟𝑎𝑤 , Instruction ) (16)", + "source_ids": [ + 225 + ], + "id": "Name: formula (16)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "a.1.2 qa performance metrics", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' within the BookRAG paper, this section defines the specific metrics used to evaluate Question Answering performance, detailing the calculation of Accuracy based on substring inclusion between ground truth and model responses.", + "source_ids": [ + 226 + ], + "id": "Name: a.1.2 qa performance metrics\nType: SECTION_TITLE" + }, + { + "entity_name": "qa performance metrics", + "entity_type": "EVALUATION_METRIC", + "description": "Refers to the set of quantitative measures defined in section A.1.2 for assessing the quality of answers generated by the model.", + "source_ids": [ + 226 + ], + "id": "Name: qa performance metrics\nType: EVALUATION_METRIC" + }, + { + "entity_name": "ground truth (y_gold)", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The reference answer or expected output used as the baseline for calculating accuracy in section A.1.2.", + "source_ids": [ + 226 + ], + "id": "Name: ground truth (y_gold)\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "model response (y_raw)", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The raw output generated by the model, which is compared against the ground truth in section A.1.2.", + "source_ids": [ + 226 + ], + "id": "Name: model response (y_raw)\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "substring inclusion relation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The logical operation (denoted by ⊆) used in section A.1.2 to determine if one text sequence is contained within another for the purpose of evaluation.", + "source_ids": [ + 226 + ], + "id": "Name: substring inclusion relation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "accuracy inclusion based", + "entity_type": "EVALUATION_METRIC", + "description": "accuracy inclusion based is a soft match metric used to evaluate model predictions by checking if the normalized gold answer is included in the generated response", + "source_ids": [ + 227 + ], + "id": "Name: accuracy inclusion based\nType: EVALUATION_METRIC" + }, + { + "entity_name": "prior works", + "entity_type": "PUBLICATION_VENUE", + "description": "prior works refer to previous research studies cited in the text as a basis for the methodology", + "source_ids": [ + 227 + ], + "id": "Name: prior works\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "3", + "entity_type": "PUBLICATION_VENUE", + "description": "3 is a citation number referring to a specific prior work mentioned in the text", + "source_ids": [ + 227 + ], + "id": "Name: 3\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "34", + "entity_type": "PUBLICATION_VENUE", + "description": "34 is a citation number referring to a specific prior work mentioned in the text", + "source_ids": [ + 227 + ], + "id": "Name: 34\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "46", + "entity_type": "PUBLICATION_VENUE", + "description": "46 is a citation number referring to a specific prior work mentioned in the text", + "source_ids": [ + 227 + ], + "id": "Name: 46\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "soft match metric", + "entity_type": "EVALUATION_METRIC", + "description": "soft match metric is a category of evaluation methods described as being used in the text", + "source_ids": [ + 227 + ], + "id": "Name: soft match metric\nType: EVALUATION_METRIC" + }, + { + "entity_name": "normalized gold answer", + "entity_type": "DATASET_OR_CORPUS", + "description": "normalized gold answer is the reference data used to determine if a prediction is correct", + "source_ids": [ + 227 + ], + "id": "Name: normalized gold answer\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "model s generated response", + "entity_type": "PRODUCT", + "description": "model s generated response is the output produced by the model being evaluated", + "source_ids": [ + 227 + ], + "id": "Name: model s generated response\nType: PRODUCT" + }, + { + "entity_name": "strict exact match", + "entity_type": "EVALUATION_METRIC", + "description": "strict exact match is a comparison method explicitly contrasted with the soft match metric in the text", + "source_ids": [ + 227 + ], + "id": "Name: strict exact match\nType: EVALUATION_METRIC" + }, + { + "entity_name": "formula (17)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the Accuracy metric as the average of an indicator function comparing neighborhood sets. LaTeX: Accuracy = 1 𝑁 𝑁 ∑︁ 𝑖 = 1 I (N( 𝑦 𝑔𝑜𝑙𝑑,𝑖 ) ⊆ N( 𝑦 𝑟𝑎𝑤,𝑖 )) (17)", + "source_ids": [ + 228 + ], + "id": "Name: formula (17)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula (18)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the Error Metric (EM) as the average of indicator functions comparing predicted and ground truth labels. LaTeX: EM = 1 𝑁 𝑁 ∑︁ 𝑖 = 1 I (N( ˆ 𝑦 𝑖 ) = N( 𝑦 𝑔𝑜𝑙𝑑,𝑖 )) (18)", + "source_ids": [ + 230 + ], + "id": "Name: formula (18)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "token level f1 score", + "entity_type": "EVALUATION_METRIC", + "description": "token level f1 score is a specific type of f1 score used for questions requiring text span answers", + "source_ids": [ + 231 + ], + "id": "Name: token level f1 score\nType: EVALUATION_METRIC" + }, + { + "entity_name": "r", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "r represents recall calculated as the intersection of extracted and ground truth tokens divided by the ground truth tokens", + "source_ids": [ + 231 + ], + "id": "Name: r\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "f1", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "f1 is the harmonic mean of precision p and recall r calculated using the formula 2 p r p r", + "source_ids": [ + 231 + ], + "id": "Name: f1\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "equation 19", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 19 defines the calculation for the f1 score based on precision and recall", + "source_ids": [ + 231 + ], + "id": "Name: equation 19\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "formula (19)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining Precision, Recall, and F1 score metrics using set intersections. LaTeX: 𝑃 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 ˆ 𝑦 | , 𝑅 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 𝑔𝑜𝑙𝑑 | , F1 = 2 · 𝑃 · 𝑅 𝑃 + 𝑅 (19)", + "source_ids": [ + 232 + ], + "id": "Name: formula (19)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "15", + "entity_type": "MEASUREMENT", + "description": "15 is a numerical value mentioned in the text potentially representing a measurement or count", + "source_ids": [ + 233 + ], + "id": "Name: 15\nType: MEASUREMENT" + }, + { + "entity_name": "a.1.3 retrieval recall", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' within the 'BookRAG' paper, this section defines the Retrieval Recall metric used to evaluate retrieval quality based on parsed PDF block granularity (paragraphs, tables, images).", + "source_ids": [ + 234 + ], + "id": "Name: a.1.3 retrieval recall\nType: SECTION_TITLE" + }, + { + "entity_name": "retrieval quality", + "entity_type": "EVALUATION_METRIC", + "description": "The specific aspect of system performance being measured in this section, assessed via the granularity of retrieved blocks.", + "source_ids": [ + 234 + ], + "id": "Name: retrieval quality\nType: EVALUATION_METRIC" + }, + { + "entity_name": "pdf blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "The fundamental units of data (paragraphs, tables, images) from which ground-truth and retrieved sets are constructed for evaluation.", + "source_ids": [ + 234 + ], + "id": "Name: pdf blocks\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "query q", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The input query variable used to define the set of required ground-truth blocks.", + "source_ids": [ + 234 + ], + "id": "Name: query q\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "b_gold", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The set of manually labeled ground-truth blocks required to answer a given query.", + "source_ids": [ + 234 + ], + "id": "Name: b_gold\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "b_ret", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The set of unique blocks retrieved by the system for a given query.", + "source_ids": [ + 234 + ], + "id": "Name: b_ret\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "recall_ret", + "entity_type": "EVALUATION_METRIC", + "description": "The specific mathematical formula defined in this section to calculate retrieval recall, handling parsing errors.", + "source_ids": [ + 234 + ], + "id": "Name: recall_ret\nType: EVALUATION_METRIC" + }, + { + "entity_name": "formula (20)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the recall metric r_et as a conditional value based on parsing errors and set intersections. LaTeX: Recall 𝑟𝑒𝑡 = ( 0 if parsing error occurs on B 𝑔𝑜𝑙𝑑 | B 𝑟𝑒𝑡 ∩B 𝑔𝑜𝑙𝑑 | | B 𝑔𝑜𝑙𝑑 | otherwise (20)", + "source_ids": [ + 235 + ], + "id": "Name: formula (20)\nType: EQUATION_OR_FORMULA" + }, + { + "entity_name": "ground truth block", + "entity_type": "TASK_OR_PROBLEM", + "description": "a ground truth block is a specific unit of data that may be lost during parsing", + "source_ids": [ + 236 + ], + "id": "Name: ground truth block\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "candidate pool", + "entity_type": "DATASET_OR_CORPUS", + "description": "the candidate pool is a collection of items from which blocks are retrieved", + "source_ids": [ + 236 + ], + "id": "Name: candidate pool\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "recall", + "entity_type": "EVALUATION_METRIC", + "description": "recall is an evaluation metric used to measure the contribution of retrieved blocks", + "source_ids": [ + 236 + ], + "id": "Name: recall\nType: EVALUATION_METRIC" + }, + { + "entity_name": "0", + "entity_type": "NUMBER", + "description": "0 is the specific numerical value representing the recall contribution when a block is lost", + "source_ids": [ + 236 + ], + "id": "Name: 0\nType: NUMBER" + }, + { + "entity_name": "a.2 implementation details", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' and following 'Evaluation Metrics', this section provides the specific technical configurations, software environments, and parameter settings used to realize the BookRAG system.", + "source_ids": [ + 237 + ], + "id": "Name: a.2 implementation details\nType: SECTION_TITLE" + }, + { + "entity_name": "python", + "entity_type": "PROGRAMMING_LANGUAGE", + "description": "python is the programming language used to implement bookrag", + "source_ids": [ + 238 + ], + "id": "Name: python\nType: PROGRAMMING_LANGUAGE" + }, + { + "entity_name": "vlm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "vlm stands for vision language model a type of model within the qwen family used in the experiments", + "source_ids": [ + 238 + ], + "id": "Name: vlm\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "embedding models", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "embedding models are a type of model within the qwen family used for text and multi modal embedding", + "source_ids": [ + 238 + ], + "id": "Name: embedding models\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "qwen3 8b", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen3 8b is the default llm used in the experiments", + "source_ids": [ + 238 + ], + "id": "Name: qwen3 8b\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "qwen2 5vl 30b", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen2 5vl 30b is the vision language model vlm used in the experiments", + "source_ids": [ + 238 + ], + "id": "Name: qwen2 5vl 30b\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "qwen3 embedding 0 6b", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen3 embedding 0 6b is the model used for text embedding", + "source_ids": [ + 238 + ], + "id": "Name: qwen3 embedding 0 6b\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "gme qwen2 vl 2b instruct", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "gme qwen2 vl 2b instruct is the model used for multi modal embedding", + "source_ids": [ + 238 + ], + "id": "Name: gme qwen2 vl 2b instruct\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "qwen3 reranker 4b", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen3 reranker 4b is the model used for reranking", + "source_ids": [ + 238 + ], + "id": "Name: qwen3 reranker 4b\nType: MODEL_OR_ARCHITECTURE" + }, + { + "entity_name": "linux", + "entity_type": "SOFTWARE", + "description": "linux is the operating system on which the experiments were conducted", + "source_ids": [ + 238 + ], + "id": "Name: linux\nType: SOFTWARE" + }, + { + "entity_name": "intel xeon 2 0ghz cpu", + "entity_type": "HARDWARE", + "description": "intel xeon 2 0ghz cpu is the processor used in the high performance server", + "source_ids": [ + 238 + ], + "id": "Name: intel xeon 2 0ghz cpu\nType: HARDWARE" + }, + { + "entity_name": "nvidia geforce rtx a5000", + "entity_type": "HARDWARE", + "description": "nvidia geforce rtx a5000 is the gpu model used in the high performance server", + "source_ids": [ + 238 + ], + "id": "Name: nvidia geforce rtx a5000\nType: HARDWARE" + }, + { + "entity_name": "1024gb", + "entity_type": "MEASUREMENT", + "description": "1024gb refers to the amount of memory in the server", + "source_ids": [ + 238 + ], + "id": "Name: 1024gb\nType: MEASUREMENT" + }, + { + "entity_name": "24 gb", + "entity_type": "MEASUREMENT", + "description": "24 gb refers to the vram capacity of each gpu", + "source_ids": [ + 238 + ], + "id": "Name: 24 gb\nType: MEASUREMENT" + }, + { + "entity_name": "500 tokens", + "entity_type": "MEASUREMENT", + "description": "500 tokens is the standardized chunk size used for document chunking", + "source_ids": [ + 238 + ], + "id": "Name: 500 tokens\nType: MEASUREMENT" + }, + { + "entity_name": "10b parameter scale", + "entity_type": "MEASUREMENT", + "description": "10b parameter scale is the size range of models primarily selected to balance efficiency and effectiveness", + "source_ids": [ + 238 + ], + "id": "Name: 10b parameter scale\nType: MEASUREMENT" + }, + { + "entity_name": "30b version", + "entity_type": "MEASUREMENT", + "description": "the 30b version refers to the specific size of the vlm adopted due to performance deficits in the 8b counterpart", + "source_ids": [ + 238 + ], + "id": "Name: 30b version\nType: MEASUREMENT" + }, + { + "entity_name": "8b counterpart", + "entity_type": "MEASUREMENT", + "description": "the 8b counterpart refers to the smaller version of the vlm that exhibited significant performance deficits", + "source_ids": [ + 238 + ], + "id": "Name: 8b counterpart\nType: MEASUREMENT" + }, + { + "entity_name": "github repository", + "entity_type": "LOCATION", + "description": "the github repository is the location where source code and implementation configurations are publicly available", + "source_ids": [ + 238 + ], + "id": "Name: github repository\nType: LOCATION" + }, + { + "entity_name": "https github com sam234990 bookrag", + "entity_type": "LOCATION", + "description": "https github com sam234990 bookrag is the specific url of the repository", + "source_ids": [ + 238 + ], + "id": "Name: https github com sam234990 bookrag\nType: LOCATION" + }, + { + "entity_name": "baseline methods", + "entity_type": "TASK_OR_PROBLEM", + "description": "baseline methods refer to the existing methods used for fair comparison against bookrag", + "source_ids": [ + 238 + ], + "id": "Name: baseline methods\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "ground truth images", + "entity_type": "IMAGE", + "description": "ground truth images are the correct reference images provided to the models during evaluation", + "source_ids": [ + 238 + ], + "id": "Name: ground truth images\nType: IMAGE" + }, + { + "entity_name": "document chunking", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "document chunking is a technique used to split documents into smaller parts for processing", + "source_ids": [ + 238 + ], + "id": "Name: document chunking\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "retrieval ranking", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "retrieval ranking is a technique used to order retrieved candidates based on relevance", + "source_ids": [ + 238 + ], + "id": "Name: retrieval ranking\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "sequential processing mode", + "entity_type": "TASK_OR_PROBLEM", + "description": "sequential processing mode is the execution mode used to ensure fair comparison of efficiency", + "source_ids": [ + 238 + ], + "id": "Name: sequential processing mode\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "candidate pool", + "entity_type": "TASK_OR_PROBLEM", + "description": "the candidate pool refers to the set of items retrieved for ranking standardized across baselines", + "source_ids": [ + 238 + ], + "id": "Name: candidate pool\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "efficiency", + "entity_type": "CONCEPT", + "description": "efficiency is a key metric balanced against effectiveness in model selection and execution", + "source_ids": [ + 238 + ], + "id": "Name: efficiency\nType: CONCEPT" + }, + { + "entity_name": "effectiveness", + "entity_type": "CONCEPT", + "description": "effectiveness is a key metric balanced against efficiency in model selection and execution", + "source_ids": [ + 238 + ], + "id": "Name: effectiveness\nType: CONCEPT" + }, + { + "entity_name": "performance deficits", + "entity_type": "CONCEPT", + "description": "performance deficits describe the failure of the 8b vlm counterpart to answer correctly", + "source_ids": [ + 238 + ], + "id": "Name: performance deficits\nType: CONCEPT" + }, + { + "entity_name": "reproducibility", + "entity_type": "CONCEPT", + "description": "reproducibility is the goal achieved by making source code and configurations publicly available", + "source_ids": [ + 238 + ], + "id": "Name: reproducibility\nType: CONCEPT" + }, + { + "entity_name": "fair comparison", + "entity_type": "CONCEPT", + "description": "fair comparison is the objective driving the use of unified models and standardized parameters", + "source_ids": [ + 238 + ], + "id": "Name: fair comparison\nType: CONCEPT" + }, + { + "entity_name": "text embedding", + "entity_type": "TASK_OR_PROBLEM", + "description": "text embedding is the task performed by the qwen3 embedding 0 6b model", + "source_ids": [ + 238 + ], + "id": "Name: text embedding\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "multi modal embedding", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi modal embedding is the task performed by the gme qwen2 vl 2b instruct model", + "source_ids": [ + 238 + ], + "id": "Name: multi modal embedding\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "reranking", + "entity_type": "TASK_OR_PROBLEM", + "description": "reranking is the task performed by the qwen3 reranker 4b model", + "source_ids": [ + 238 + ], + "id": "Name: reranking\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "high performance server", + "entity_type": "LOCATION", + "description": "the high performance server is the physical location where all experiments were conducted", + "source_ids": [ + 238 + ], + "id": "Name: high performance server\nType: LOCATION" + }, + { + "entity_name": "implementation configurations", + "entity_type": "PRODUCT", + "description": "implementation configurations refer to the detailed settings used to run the experiments", + "source_ids": [ + 238 + ], + "id": "Name: implementation configurations\nType: PRODUCT" + }, + { + "entity_name": "reference 52", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 52 is the citation for the mineru tool", + "source_ids": [ + 238 + ], + "id": "Name: reference 52\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "reference 4", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 4 is the citation for the qwen2 5vl 30b model", + "source_ids": [ + 238 + ], + "id": "Name: reference 4\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "reference 60", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 60 is the citation for the qwen3 8b model", + "source_ids": [ + 238 + ], + "id": "Name: reference 60\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "reference 63", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 63 is the citation for the gme qwen2 vl 2b instruct model", + "source_ids": [ + 238 + ], + "id": "Name: reference 63\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "reference 64", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 64 is the citation for the qwen3 embedding 0 6b and qwen3 reranker 4b models", + "source_ids": [ + 238 + ], + "id": "Name: reference 64\nType: PUBLICATION_VENUE" + }, + { + "entity_name": "a.3 prompts", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' within the BookRAG paper, this section details the specific text prompts engineered and utilized to guide the Retrieval-Augmented Generation (RAG) system in processing complex documents.", + "source_ids": [ + 239 + ], + "id": "Name: a.3 prompts\nType: SECTION_TITLE" + }, + { + "entity_name": "prompts", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the structured input instructions provided to the language model to elicit specific behaviors or outputs, as defined in section A.3.", + "source_ids": [ + 239 + ], + "id": "Name: prompts\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "agent based query classification", + "entity_type": "TASK_OR_PROBLEM", + "description": "agent based query classification is a task for which prompts are designed as illustrated in figure 10", + "source_ids": [ + 240 + ], + "id": "Name: agent based query classification\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "question decomposition", + "entity_type": "TASK_OR_PROBLEM", + "description": "question decomposition is a task for which prompts are designed as illustrated in figure 11", + "source_ids": [ + 240 + ], + "id": "Name: question decomposition\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "filter operator generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "Filter operator generation is a task for which prompts are designed, as illustrated in figure 12.", + "source_ids": [ + 240, + 259 + ], + "id": "Name: filter operator generation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "entity resolution judgment", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity resolution judgment is a task for which a prompt is employed during the graph construction phase as illustrated in figure 13", + "source_ids": [ + 240 + ], + "id": "Name: entity resolution judgment\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "graph construction phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "graph construction phase is the specific phase during which entity resolution judgment is performed", + "source_ids": [ + 240 + ], + "id": "Name: graph construction phase\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "prompts", + "entity_type": "PRODUCT", + "description": "prompts are the specific designed items mentioned in the text for various tasks", + "source_ids": [ + 240 + ], + "id": "Name: prompts\nType: PRODUCT" + }, + { + "entity_name": "figure 10", + "entity_type": "IMAGE", + "description": "Figure 10 is a visual element illustrating prompts for agent-based query classification, serving as an image within the text that displays a prompt for query classification.", + "source_ids": [ + 240, + 253 + ], + "id": "Name: figure 10\nType: IMAGE" + }, + { + "entity_name": "figure 11", + "entity_type": "IMAGE", + "description": "Figure 11 is a visual element in the text that displays a prompt for query decomposition, illustrating the process of question decomposition.", + "source_ids": [ + 240, + 256 + ], + "id": "Name: figure 11\nType: IMAGE" + }, + { + "entity_name": "figure 12", + "entity_type": "IMAGE", + "description": "Figure 12 is a visual element and image within the text that illustrates and displays the prompt for filter operator generation.", + "source_ids": [ + 240, + 259 + ], + "id": "Name: figure 12\nType: IMAGE" + }, + { + "entity_name": "figure 13", + "entity_type": "IMAGE", + "description": "Figure 13 is a visual element and an image containing a prompt for entity resolution judgment.", + "source_ids": [ + 240, + 284 + ], + "id": "Name: figure 13\nType: IMAGE" + }, + { + "entity_name": "expert query analyzer", + "entity_type": "PERSON", + "description": "an expert query analyzer is a role described as someone tasked with classifying user questions into specific categories", + "source_ids": [ + 241 + ], + "id": "Name: expert query analyzer\nType: PERSON" + }, + { + "entity_name": "simple", + "entity_type": "TASK_OR_PROBLEM", + "description": "simple is one of the three categories used to classify user questions", + "source_ids": [ + 241 + ], + "id": "Name: simple\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "user", + "entity_type": "PERSON", + "description": "The user is the entity providing the query to the AI assistant, whose questions are being classified by the expert query analyzer.", + "source_ids": [ + 241, + 258 + ], + "id": "Name: user\nType: PERSON" + }, + { + "entity_name": "json object", + "entity_type": "FILE_TYPE", + "description": "The json object is the required format for responses from the expert query analyzer, the AI assistant, and systems containing filters and operations. It serves as the standard output structure for various tasks, including responses that contain a single key named \"sub_questions\" with a list of objects, outputs that include the ID of a matching candidate along with an explanation, and other structured data formats required by different components of the system.", + "source_ids": [ + 241, + 258, + 262, + 255 + ], + "id": "Name: json object\nType: FILE_TYPE" + }, + { + "entity_name": "category definitions", + "entity_type": "SECTION_TITLE", + "description": "category definitions is the title of the section containing definitions for entity types", + "source_ids": [ + 242 + ], + "id": "Name: category definitions\nType: SECTION_TITLE" + }, + { + "entity_name": "information", + "entity_type": "CONCEPT", + "description": "information is the data retrieved to answer the question", + "source_ids": [ + 243 + ], + "id": "Name: information\nType: CONCEPT" + }, + { + "entity_name": "document", + "entity_type": "CONCEPT", + "description": "document is the source material containing the information", + "source_ids": [ + 243 + ], + "id": "Name: document\nType: CONCEPT" + }, + { + "entity_name": "paragraph", + "entity_type": "SECTION_TITLE", + "description": "paragraph is an example of a contiguous location within a document", + "source_ids": [ + 243 + ], + "id": "Name: paragraph\nType: SECTION_TITLE" + }, + { + "entity_name": "table", + "entity_type": "SECTION_TITLE", + "description": "table is an example of a contiguous location within a document", + "source_ids": [ + 243 + ], + "id": "Name: table\nType: SECTION_TITLE" + }, + { + "entity_name": "figure", + "entity_type": "SECTION_TITLE", + "description": "figure is an example of a contiguous location within a document", + "source_ids": [ + 243 + ], + "id": "Name: figure\nType: SECTION_TITLE" + }, + { + "entity_name": "single", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 243 + ], + "id": "Name: single\nType: UNKNOWN" + }, + { + "entity_name": "contiguous location", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 243 + ], + "id": "Name: contiguous location\nType: UNKNOWN" + }, + { + "entity_name": "5", + "entity_type": "PERCENTAGE", + "description": "5 represents a specific portion of the latino population mentioned in the context of economic upward mobility", + "source_ids": [ + 246 + ], + "id": "Name: 5\nType: PERCENTAGE" + }, + { + "entity_name": "latinos", + "entity_type": "NATIONALITY", + "description": "latinos are the demographic group whose views on economic upward mobility for their children are being queried", + "source_ids": [ + 246 + ], + "id": "Name: latinos\nType: NATIONALITY" + }, + { + "entity_name": "economic upward mobility", + "entity_type": "TASK_OR_PROBLEM", + "description": "economic upward mobility is the specific issue regarding the children of latinos that is the subject of the inquiry", + "source_ids": [ + 246 + ], + "id": "Name: economic upward mobility\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "children", + "entity_type": "PERSON", + "description": "children are the offspring of the latinos whose economic upward mobility is being discussed", + "source_ids": [ + 246 + ], + "id": "Name: children\nType: PERSON" + }, + { + "entity_name": "personality vector", + "entity_type": "TASK_OR_PROBLEM", + "description": "the personality vector is a concept mentioned in a question regarding its color indicating it is a complex retrieval task", + "source_ids": [ + 249 + ], + "id": "Name: personality vector\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "counting", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "counting is an example of an aggregation operation mentioned in the text", + "source_ids": [ + 250 + ], + "id": "Name: counting\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "listing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "listing is an example of an aggregation operation mentioned in the text", + "source_ids": [ + 250 + ], + "id": "Name: listing\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "summarizing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "summarizing is an example of an aggregation operation mentioned in the text", + "source_ids": [ + 250 + ], + "id": "Name: summarizing\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "structural filter", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "structural filter is a clear filter used to identify items in the set for the global question", + "source_ids": [ + 250 + ], + "id": "Name: structural filter\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "aggregation operation", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 250 + ], + "id": "Name: aggregation operation\nType: UNKNOWN" + }, + { + "entity_name": "items", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 250 + ], + "id": "Name: items\nType: UNKNOWN" + }, + { + "entity_name": "example", + "entity_type": "TASK_OR_PROBLEM", + "description": "example is a task or problem asking how many tables are in the document", + "source_ids": [ + 251 + ], + "id": "Name: example\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "16", + "entity_type": "MEASUREMENT", + "description": "16 is a numerical value mentioned in the text potentially representing a count date or measurement", + "source_ids": [ + 254 + ], + "id": "Name: 16\nType: MEASUREMENT" + }, + { + "entity_name": "user a2gbifl43u1lkj", + "entity_type": "PERSON", + "description": "user a2gbifl43u1lkj is a specific user referenced in the example query regarding personality vectors and receptiviti scores", + "source_ids": [ + 255 + ], + "id": "Name: user a2gbifl43u1lkj\nType: PERSON" + }, + { + "entity_name": "foreign born latinos", + "entity_type": "PERSON", + "description": "foreign born latinos are a demographic group mentioned in the example query regarding population surveys", + "source_ids": [ + 255 + ], + "id": "Name: foreign born latinos\nType: PERSON" + }, + { + "entity_name": "latinos interviewed by cellphone", + "entity_type": "PERSON", + "description": "latinos interviewed by cellphone are a demographic group mentioned in the example query regarding population surveys", + "source_ids": [ + 255 + ], + "id": "Name: latinos interviewed by cellphone\nType: PERSON" + }, + { + "entity_name": "soft labeled personality embedding matrix", + "entity_type": "PRODUCT", + "description": "the soft labeled personality embedding matrix is a data structure containing personality vectors and their associated colors", + "source_ids": [ + 255 + ], + "id": "Name: soft labeled personality embedding matrix\nType: PRODUCT" + }, + { + "entity_name": "receptiviti score", + "entity_type": "EVALUATION_METRIC", + "description": "the receptiviti score is a metric used to evaluate personality vectors in the context of the example query", + "source_ids": [ + 255 + ], + "id": "Name: receptiviti score\nType: EVALUATION_METRIC" + }, + { + "entity_name": "population", + "entity_type": "MEASUREMENT", + "description": "population refers to the count of individuals in a specific demographic group within a survey", + "source_ids": [ + 255 + ], + "id": "Name: population\nType: MEASUREMENT" + }, + { + "entity_name": "query decomposition expert", + "entity_type": "PROFESSION", + "description": "the query decomposition expert is the role assigned to the ai to break down complex questions into atomic sub questions", + "source_ids": [ + 255 + ], + "id": "Name: query decomposition expert\nType: PROFESSION" + }, + { + "entity_name": "complex question", + "entity_type": "TASK_OR_PROBLEM", + "description": "a complex question is the input task that needs to be broken down into simple sub questions", + "source_ids": [ + 255 + ], + "id": "Name: complex question\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "simple atomic sub questions", + "entity_type": "TASK_OR_PROBLEM", + "description": "simple atomic sub questions are the output components of the decomposition process each being a direct information retrieval task", + "source_ids": [ + 255 + ], + "id": "Name: simple atomic sub questions\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "retrieval sub question", + "entity_type": "TASK_OR_PROBLEM", + "description": "a retrieval sub question is a specific type of sub question that requires looking up a specific fact number or value in the document", + "source_ids": [ + 255 + ], + "id": "Name: retrieval sub question\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "synthesis question", + "entity_type": "TASK_OR_PROBLEM", + "description": "a synthesis question is a specific type of sub question that requires comparing calculating or combining answers from previous retrieval questions", + "source_ids": [ + 255 + ], + "id": "Name: synthesis question\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "sub questions", + "entity_type": "SECTION_TITLE", + "description": "the sub questions key is the container within the json object that holds the list of decomposed questions", + "source_ids": [ + 255 + ], + "id": "Name: sub questions\nType: SECTION_TITLE" + }, + { + "entity_name": "question", + "entity_type": "SECTION_TITLE", + "description": "the question key within each sub question object holds the string of the actual question", + "source_ids": [ + 255 + ], + "id": "Name: question\nType: SECTION_TITLE" + }, + { + "entity_name": "type", + "entity_type": "SECTION_TITLE", + "description": "the type key within each sub question object specifies whether the question is retrieval or synthesis", + "source_ids": [ + 255 + ], + "id": "Name: type\nType: SECTION_TITLE" + }, + { + "entity_name": "example 1", + "entity_type": "EVENT", + "description": "example 1 is a demonstration of correct decomposition with independent lookups provided in the text", + "source_ids": [ + 255 + ], + "id": "Name: example 1\nType: EVENT" + }, + { + "entity_name": "example 2", + "entity_type": "EVENT", + "description": "example 2 is a demonstration of decomposition with retrieval and synthesis steps provided in the text", + "source_ids": [ + 255 + ], + "id": "Name: example 2\nType: EVENT" + }, + { + "entity_name": "personality vector", + "entity_type": "PRODUCT", + "description": "a personality vector is a data element within the soft labeled personality embedding matrix", + "source_ids": [ + 255 + ], + "id": "Name: personality vector\nType: PRODUCT" + }, + { + "entity_name": "color", + "entity_type": "COLOR", + "description": "color is an attribute mapped to personality vectors in the soft labeled personality embedding matrix", + "source_ids": [ + 255 + ], + "id": "Name: color\nType: COLOR" + }, + { + "entity_name": "survey", + "entity_type": "EVENT", + "description": "the survey is the context in which population data for latinos is collected in example 2", + "source_ids": [ + 255 + ], + "id": "Name: survey\nType: EVENT" + }, + { + "entity_name": "report", + "entity_type": "BOOK", + "description": "The report is a book that serves as a document referenced in example 2, containing population data, and is also cited in an example query regarding chapters.", + "source_ids": [ + 258, + 255 + ], + "id": "Name: report\nType: BOOK" + }, + { + "entity_name": "query decomposition", + "entity_type": "TASK_OR_PROBLEM", + "description": "query decomposition is the task or problem for which the prompt in figure 11 is designed", + "source_ids": [ + 256 + ], + "id": "Name: query decomposition\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "17", + "entity_type": "NUMBER", + "description": "17 is a number mentioned in the text though its specific context or role is not defined", + "source_ids": [ + 257 + ], + "id": "Name: 17\nType: NUMBER" + }, + { + "entity_name": "ai assistant", + "entity_type": "PERSON", + "description": "an ai assistant described as highly specialized with the function of analyzing a global query", + "source_ids": [ + 258 + ], + "id": "Name: ai assistant\nType: PERSON" + }, + { + "entity_name": "global query", + "entity_type": "TASK_OR_PROBLEM", + "description": "a query that the ai assistant is designed to analyze to determine filtering steps and aggregation operations", + "source_ids": [ + 258 + ], + "id": "Name: global query\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "filters", + "entity_type": "TASK_OR_PROBLEM", + "description": "a list of filtering steps to be applied which can include sections images tables or pages", + "source_ids": [ + 258 + ], + "id": "Name: filters\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "operation", + "entity_type": "TASK_OR_PROBLEM", + "description": "the final aggregation operation to be performed such as count list summarize or analyze", + "source_ids": [ + 258 + ], + "id": "Name: operation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "methodology", + "entity_type": "SECTION_TITLE", + "description": "a specific section title mentioned in an example query regarding data augmentation", + "source_ids": [ + 258 + ], + "id": "Name: methodology\nType: SECTION_TITLE" + }, + { + "entity_name": "paper", + "entity_type": "BOOK", + "description": "a document referenced in an example query regarding figures on specific pages", + "source_ids": [ + 258 + ], + "id": "Name: paper\nType: BOOK" + }, + { + "entity_name": "assistant", + "entity_type": "PERSON", + "description": "the assistant is the entity responding to the user with a json object", + "source_ids": [ + 258 + ], + "id": "Name: assistant\nType: PERSON" + }, + { + "entity_name": "chapter", + "entity_type": "SECTION_TITLE", + "description": "a structural part of a document mentioned in the example about counting chapters", + "source_ids": [ + 258 + ], + "id": "Name: chapter\nType: SECTION_TITLE" + }, + { + "entity_name": "appendices", + "entity_type": "SECTION_TITLE", + "description": "a structural part of a document mentioned in the definition of section filters", + "source_ids": [ + 258 + ], + "id": "Name: appendices\nType: SECTION_TITLE" + }, + { + "entity_name": "data augmentation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "a specific topic discussed in the methodology section in the example query", + "source_ids": [ + 258 + ], + "id": "Name: data augmentation\nType: METHOD_OR_TECHNIQUE" + }, + { + "entity_name": "discussion", + "entity_type": "TASK_OR_PROBLEM", + "description": "the content regarding data augmentation that needs to be summarized", + "source_ids": [ + 258 + ], + "id": "Name: discussion\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "3 10", + "entity_type": "MEASUREMENT", + "description": "a specific page range mentioned as a filter value in the example query", + "source_ids": [ + 258 + ], + "id": "Name: 3 10\nType: MEASUREMENT" + }, + { + "entity_name": "count", + "entity_type": "TASK_OR_PROBLEM", + "description": "an aggregation operation used to count items", + "source_ids": [ + 258 + ], + "id": "Name: count\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "list", + "entity_type": "TASK_OR_PROBLEM", + "description": "an aggregation operation used to list items", + "source_ids": [ + 258 + ], + "id": "Name: list\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "summarize", + "entity_type": "TASK_OR_PROBLEM", + "description": "an aggregation operation used to summarize content", + "source_ids": [ + 258 + ], + "id": "Name: summarize\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "analyze", + "entity_type": "TASK_OR_PROBLEM", + "description": "an aggregation operation used to analyze content", + "source_ids": [ + 258 + ], + "id": "Name: analyze\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "page", + "entity_type": "MEASUREMENT", + "description": "a filter type used for specific page numbers", + "source_ids": [ + 258 + ], + "id": "Name: page\nType: MEASUREMENT" + }, + { + "entity_name": "null", + "entity_type": "TASK_OR_PROBLEM", + "description": "a value indicating that no specific value is provided for image or table filters", + "source_ids": [ + 258 + ], + "id": "Name: null\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "18", + "entity_type": "NUMBER", + "description": "18 is a number mentioned in the text though its specific context or meaning is not provided", + "source_ids": [ + 260 + ], + "id": "Name: 18\nType: NUMBER" + }, + { + "entity_name": "entity resolution adjudicator", + "entity_type": "PERSON", + "description": "entity resolution adjudicator is an expert role tasked with determining if a new entity refers to the same real world concept as candidate entities", + "source_ids": [ + 262 + ], + "id": "Name: entity resolution adjudicator\nType: PERSON" + }, + { + "entity_name": "candidate entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "candidate entities are a list of semantically similar entities retrieved from an existing knowledge base for comparison", + "source_ids": [ + 262 + ], + "id": "Name: candidate entities\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "knowledge graph", + "entity_type": "TASK_OR_PROBLEM", + "description": "knowledge graph is the existing database from which candidate entities are retrieved", + "source_ids": [ + 262 + ], + "id": "Name: knowledge graph\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "knowledge base", + "entity_type": "TASK_OR_PROBLEM", + "description": "knowledge base is the source of semantically similar candidate entities", + "source_ids": [ + 262 + ], + "id": "Name: knowledge base\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "id", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The id is a unique identifier used to reference candidate entities in the output and serves as the identifier for the candidate determined to be an exact match.", + "source_ids": [ + 276, + 262 + ], + "id": "Name: id\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "1", + "entity_type": "VALUE", + "description": "1 is a specific value indicating that no matching candidate was found for the new entity", + "source_ids": [ + 262 + ], + "id": "Name: 1\nType: VALUE" + }, + { + "entity_name": "text", + "entity_type": "DATASET_OR_CORPUS", + "description": "text is the source material from which the new entity is recently extracted", + "source_ids": [ + 262 + ], + "id": "Name: text\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "explanation", + "entity_type": "TASK_OR_PROBLEM", + "description": "An explanation is a brief, one-sentence string that serves as a task or problem by providing the reasoning behind a decision, specifically justifying the outcome in contexts such as entity matching.", + "source_ids": [ + 277, + 262 + ], + "id": "Name: explanation\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "field by field adjudication", + "entity_type": "TASK_OR_PROBLEM", + "description": "field by field adjudication is a task described as a method to determine a match by evaluating each field with a specific focus", + "source_ids": [ + 266 + ], + "id": "Name: field by field adjudication\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "entity name", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity name is a placeholder term used to denote the name of an entity in the context of matching criteria", + "source_ids": [ + 267 + ], + "id": "Name: entity name\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "large language model", + "entity_type": "TECHNOLOGY", + "description": "large language model is the full form of the abbreviation llm used as an example of a direct abbreviation match", + "source_ids": [ + 267 + ], + "id": "Name: large language model\nType: TECHNOLOGY" + }, + { + "entity_name": "event detection", + "entity_type": "TASK_OR_PROBLEM", + "description": "event detection is a task mentioned as a distinct concept that should not be matched with named entity recognition", + "source_ids": [ + 267 + ], + "id": "Name: event detection\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "named entity recognition", + "entity_type": "TASK_OR_PROBLEM", + "description": "named entity recognition is a task mentioned as a distinct concept that should not be matched with event detection", + "source_ids": [ + 267 + ], + "id": "Name: named entity recognition\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "high importance", + "entity_type": "CONCEPT", + "description": "high importance is a criterion mentioned for determining the similarity of entity names", + "source_ids": [ + 267 + ], + "id": "Name: high importance\nType: CONCEPT" + }, + { + "entity_name": "distinct concepts", + "entity_type": "CONCEPT", + "description": "distinct concepts refers to parallel concepts that are explicitly excluded from being considered a match", + "source_ids": [ + 267 + ], + "id": "Name: distinct concepts\nType: CONCEPT" + }, + { + "entity_name": "entity type", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity type is a task or problem described as having medium importance in the context of type compatibility", + "source_ids": [ + 268 + ], + "id": "Name: entity type\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "description", + "entity_type": "CONCEPT", + "description": "description refers to the contextual importance of text segments which may differ as they are extracted from different parts of a document", + "source_ids": [ + 269 + ], + "id": "Name: description\nType: CONCEPT" + }, + { + "entity_name": "contextual importance", + "entity_type": "CONCEPT", + "description": "contextual importance is a property of descriptions that requires looking past surface level text similarity to determine if they describe the same underlying object or concept", + "source_ids": [ + 269 + ], + "id": "Name: contextual importance\nType: CONCEPT" + }, + { + "entity_name": "be strict and conservative", + "entity_type": "TASK_OR_PROBLEM", + "description": "be strict and conservative is a guideline or instruction regarding the standard for matching emphasizing high standards to avoid corrupting the knowledge graph", + "source_ids": [ + 270 + ], + "id": "Name: be strict and conservative\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "apple", + "entity_type": "PRODUCT", + "description": "apple is mentioned as an example of a fruit", + "source_ids": [ + 272 + ], + "id": "Name: apple\nType: PRODUCT" + }, + { + "entity_name": "apple inc", + "entity_type": "ORGANIZATION", + "description": "apple inc is mentioned as an example of a company", + "source_ids": [ + 272 + ], + "id": "Name: apple inc\nType: ORGANIZATION" + }, + { + "entity_name": "when in doubt", + "entity_type": "TASK_OR_PROBLEM", + "description": "when in doubt is a condition mentioned in the text that triggers a specific output requirement", + "source_ids": [ + 273 + ], + "id": "Name: when in doubt\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "1", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 273 + ], + "id": "Name: 1\nType: UNKNOWN" + }, + { + "entity_name": "json", + "entity_type": "FILE_TYPE", + "description": "json is a file format mentioned as the required output format for the answer", + "source_ids": [ + 275 + ], + "id": "Name: json\nType: FILE_TYPE" + }, + { + "entity_name": "output", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 275 + ], + "id": "Name: output\nType: UNKNOWN" + }, + { + "entity_name": "select id", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The select id is a parameter or variable defined as an integer within the provided text structure, representing the integer identifier for a candidate that has been determined to be an exact match.", + "source_ids": [ + 281, + 276 + ], + "id": "Name: select id\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "exact match", + "entity_type": "TASK_OR_PROBLEM", + "description": "exact match refers to the condition where a candidate is determined to be identical to a reference", + "source_ids": [ + 276 + ], + "id": "Name: exact match\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "1", + "entity_type": "MONEY", + "description": "1 is a specific integer value used to indicate that no exact match was found", + "source_ids": [ + 276 + ], + "id": "Name: 1\nType: MONEY" + }, + { + "entity_name": "candidate", + "entity_type": "TASK_OR_PROBLEM", + "description": "candidate refers to an item being evaluated to determine if it is an exact match", + "source_ids": [ + 276 + ], + "id": "Name: candidate\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "integer", + "entity_type": "MEASUREMENT", + "description": "An integer is a data type specified for the select id value and represents the specific type of output requested for the selection task.", + "source_ids": [ + 282, + 276 + ], + "id": "Name: integer\nType: MEASUREMENT" + }, + { + "entity_name": "explanation", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "explanation is a parameter or variable defined as a string in the provided text structure", + "source_ids": [ + 281 + ], + "id": "Name: explanation\nType: PARAMETER_OR_VARIABLE" + }, + { + "entity_name": "example 1", + "entity_type": "TASK_OR_PROBLEM", + "description": "example 1 is a task or problem scenario where a match was found", + "source_ids": [ + 281 + ], + "id": "Name: example 1\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "example 2", + "entity_type": "TASK_OR_PROBLEM", + "description": "example 2 is a task or problem scenario where no match was found", + "source_ids": [ + 281 + ], + "id": "Name: example 2\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "selection task", + "entity_type": "TASK_OR_PROBLEM", + "description": "the selection task is the activity described in the text that requires processing the provided data", + "source_ids": [ + 282 + ], + "id": "Name: selection task\nType: TASK_OR_PROBLEM" + }, + { + "entity_name": "examples", + "entity_type": "DATASET_OR_CORPUS", + "description": "examples are data instances that were omitted from the text due to space constraints", + "source_ids": [ + 284 + ], + "id": "Name: examples\nType: DATASET_OR_CORPUS" + }, + { + "entity_name": "19", + "entity_type": "NUMBER", + "description": "19 is a number mentioned in the text though its specific context or meaning is not provided", + "source_ids": [ + 285 + ], + "id": "Name: 19\nType: NUMBER" + } + ], + "links": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'BookRAG' is the primary subject defined in the main title.", + "source_ids": [ + 1 + ], + "source": "Name: bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents\nType: SECTION_TITLE", + "target": "Name: bookrag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "hierarchical structure-aware index-based approach", + "tgt_entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "relation_name": "", + "weight": 10.0, + "description": "The methodological approach is a key component described in the main title.", + "source_ids": [ + 1 + ], + "source": "Name: bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents\nType: SECTION_TITLE", + "target": "Name: hierarchical structure-aware index-based approach\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "retrieval-augmented generation", + "tgt_entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "relation_name": "", + "weight": 10.0, + "description": "The application domain or task is a central theme of the main title.", + "source_ids": [ + 1 + ], + "source": "Name: bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents\nType: SECTION_TITLE", + "target": "Name: retrieval-augmented generation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "complex documents", + "tgt_entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "relation_name": "", + "weight": 10.0, + "description": "The target data scope is explicitly mentioned as a focus area in the main title.", + "source_ids": [ + 1 + ], + "source": "Name: bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents\nType: SECTION_TITLE", + "target": "Name: complex documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "shu wang", + "tgt_entity_name": "the chinese university of hong kong shenzhen", + "relation_name": "", + "weight": 10.0, + "description": "shu wang is affiliated with the chinese university of hong kong shenzhen", + "source_ids": [ + 2 + ], + "source": "Name: shu wang\nType: PERSON", + "target": "Name: the chinese university of hong kong shenzhen\nType: ORGANIZATION" + }, + { + "src_entity_name": "shu wang", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "shu wang is an author of the bookrag paper", + "source_ids": [ + 5 + ], + "source": "Name: shu wang\nType: PERSON", + "target": "Name: bookrag\nType: PRODUCT" + }, + { + "src_entity_name": "shu wang", + "tgt_entity_name": "yingli zhou", + "relation_name": "", + "weight": 8.0, + "description": "shu wang and yingli zhou are co authors on the bookrag paper", + "source_ids": [ + 5 + ], + "source": "Name: shu wang\nType: PERSON", + "target": "Name: yingli zhou\nType: PERSON" + }, + { + "src_entity_name": "shu wang", + "tgt_entity_name": "yixiang fang", + "relation_name": "", + "weight": 8.0, + "description": "shu wang and yixiang fang are co authors on the bookrag paper", + "source_ids": [ + 5 + ], + "source": "Name: shu wang\nType: PERSON", + "target": "Name: yixiang fang\nType: PERSON" + }, + { + "src_entity_name": "yingli zhou", + "tgt_entity_name": "the chinese university of hong kong shenzhen", + "relation_name": "", + "weight": 10.0, + "description": "yingli zhou is affiliated with the chinese university of hong kong shenzhen", + "source_ids": [ + 2 + ], + "source": "Name: yingli zhou\nType: PERSON", + "target": "Name: the chinese university of hong kong shenzhen\nType: ORGANIZATION" + }, + { + "src_entity_name": "yingli zhou", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "yingli zhou is an author of the bookrag paper", + "source_ids": [ + 5 + ], + "source": "Name: yingli zhou\nType: PERSON", + "target": "Name: bookrag\nType: PRODUCT" + }, + { + "src_entity_name": "yingli zhou", + "tgt_entity_name": "yixiang fang", + "relation_name": "", + "weight": 8.0, + "description": "yingli zhou and yixiang fang are co authors on the bookrag paper", + "source_ids": [ + 5 + ], + "source": "Name: yingli zhou\nType: PERSON", + "target": "Name: yixiang fang\nType: PERSON" + }, + { + "src_entity_name": "yixiang fang", + "tgt_entity_name": "the chinese university of hong kong shenzhen", + "relation_name": "", + "weight": 10.0, + "description": "yixiang fang is affiliated with the chinese university of hong kong shenzhen", + "source_ids": [ + 2 + ], + "source": "Name: yixiang fang\nType: PERSON", + "target": "Name: the chinese university of hong kong shenzhen\nType: ORGANIZATION" + }, + { + "src_entity_name": "yixiang fang", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "yixiang fang is an author of the bookrag paper", + "source_ids": [ + 5 + ], + "source": "Name: yixiang fang\nType: PERSON", + "target": "Name: bookrag\nType: PRODUCT" + }, + { + "src_entity_name": "retrievalaugmented generation", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 9.0, + "description": "retrievalaugmented generation is used to boost the performance of large language models", + "source_ids": [ + 2 + ], + "source": "Name: large language models\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: retrievalaugmented generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrievalaugmented generation", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is a novel approach within the category of retrievalaugmented generation", + "source_ids": [ + 2 + ], + "source": "Name: retrievalaugmented generation\nType: METHOD_OR_TECHNIQUE", + "target": "Name: bookrag\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "retrievalaugmented generation", + "tgt_entity_name": "industry", + "relation_name": "", + "weight": 7.0, + "description": "industry has attracted attention to retrievalaugmented generation", + "source_ids": [ + 2 + ], + "source": "Name: retrievalaugmented generation\nType: METHOD_OR_TECHNIQUE", + "target": "Name: industry\nType: ORGANIZATION" + }, + { + "src_entity_name": "retrievalaugmented generation", + "tgt_entity_name": "academia", + "relation_name": "", + "weight": 7.0, + "description": "academia has attracted attention to retrievalaugmented generation", + "source_ids": [ + 2 + ], + "source": "Name: retrievalaugmented generation\nType: METHOD_OR_TECHNIQUE", + "target": "Name: academia\nType: ORGANIZATION" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is designed to improve performance on the question answering task", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: question answering\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is specifically targeted for documents like books that have hierarchical structures", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: books\nType: BOOK" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes the bookindex structure to exploit logical hierarchies and trace entity relations", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: bookindex\nType: SOFTWARE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "information foraging theory", + "relation_name": "", + "weight": 8.0, + "description": "the agent based query method in bookrag is inspired by information foraging theory", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: information foraging theory\nType: SCIENTIFIC_THEORY" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "three widely adopted benchmarks", + "relation_name": "", + "weight": 9.0, + "description": "bookrag was evaluated and demonstrated state of the art performance on three widely adopted benchmarks", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: three widely adopted benchmarks\nType: BENCHMARK" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "booklets", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is specifically targeted for documents like booklets that have hierarchical structures", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: booklets\nType: BOOK" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "handbooks", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is specifically targeted for documents like handbooks that have hierarchical structures", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: handbooks\nType: BOOK" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "bookrag significantly outperforms baselines in retrieval recall", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: retrieval recall\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 9.0, + "description": "bookrag significantly outperforms baselines in qa accuracy", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: qa accuracy\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 7.0, + "description": "bookrag maintains competitive efficiency", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: efficiency\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "baselines", + "relation_name": "", + "weight": 9.0, + "description": "bookrag significantly outperforms baselines in both retrieval recall and qa accuracy", + "source_ids": [ + 2 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: baselines\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookrag constructs the bookindex by integrating other components", + "source_ids": [ + 25 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: bookindex\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "hierarchical tree", + "relation_name": "", + "weight": 9.0, + "description": "bookrag integrates a hierarchical tree of document layout blocks", + "source_ids": [ + 25 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: hierarchical tree\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "bookrag integrates a kg storing fine grained entity relations", + "source_ids": [ + 25 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: kg\nType: SOFTWARE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "document layout blocks", + "relation_name": "", + "weight": 8.0, + "description": "bookrag integrates document layout blocks via a hierarchical tree", + "source_ids": [ + 25 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: document layout blocks\nType: MATERIAL" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "entity relations", + "relation_name": "", + "weight": 8.0, + "description": "bookrag utilizes a kg that stores entity relations", + "source_ids": [ + 25 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: entity relations\nType: CONCEPT" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to BookRAG", + "source_ids": [ + 159 + ], + "source": "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 8.0, + "description": "bookindex is built by extracting a hierarchical tree from documents such as books", + "source_ids": [ + 2 + ], + "source": "Name: bookindex\nType: SOFTWARE", + "target": "Name: books\nType: BOOK" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 9.0, + "description": "bookindex is built by extracting a hierarchical tree from the document", + "source_ids": [ + 2 + ], + "source": "Name: bookindex\nType: SOFTWARE", + "target": "Name: tree\nType: SOFTWARE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "graph", + "relation_name": "", + "weight": 8.0, + "description": "bookindex uses a graph to capture the intricate relationships between entities", + "source_ids": [ + 2 + ], + "source": "Name: bookindex\nType: SOFTWARE", + "target": "Name: graph\nType: SOFTWARE" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "the retrieval process using selector is grounded in information foraging theory", + "source_ids": [ + 22 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: selector\nType: SOFTWARE" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "the retrieval process using reasoner is grounded in information foraging theory", + "source_ids": [ + 22 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: reasoner\nType: SOFTWARE" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "retrieval workflows", + "relation_name": "", + "weight": 8.0, + "description": "the retrieval process mimics foraging as described by information foraging theory", + "source_ids": [ + 22 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: retrieval workflows\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "agent based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "information foraging theory serves as the inspiration for the agent based retrieval approach", + "source_ids": [ + 26 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: agent based retrieval\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "complex document qa", + "tgt_entity_name": "information foraging theory", + "relation_name": "", + "weight": 8.0, + "description": "the text states that the research problem of complex document qa is formalized alongside the introduction of information foraging theory", + "source_ids": [ + 35 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: complex document qa\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "ift", + "relation_name": "", + "weight": 10.0, + "description": "ift is the abbreviation used for information foraging theory in the text", + "source_ids": [ + 35 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: ift\nType: SCIENTIFIC_THEORY" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "3.2 information foraging theory", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Information Foraging Theory' is the primary subject matter detailed in section 3.2.", + "source_ids": [ + 41 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: 3.2 information foraging theory\nType: SECTION_TITLE" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "animal foraging", + "relation_name": "", + "weight": 10.0, + "description": "information foraging theory uses animal foraging as an analogy to explain information access", + "source_ids": [ + 42 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: animal foraging\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "information scent", + "relation_name": "", + "weight": 9.0, + "description": "information foraging theory suggests that users follow information scent cues to navigate content", + "source_ids": [ + 42 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: information scent\nType: CONCEPT" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "information foraging theory describes information patches as clusters of content that users navigate between", + "source_ids": [ + 42 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: information patches\nType: CONCEPT" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "reference 42", + "relation_name": "", + "weight": 8.0, + "description": "information foraging theory is cited with reference number 42 in the text", + "source_ids": [ + 42 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: reference 42\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "5 agent-based retrieval", + "relation_name": "", + "weight": 9.5, + "description": "'Information Foraging Theory' serves as the foundational inspiration for the methods discussed in section 5.", + "source_ids": [ + 78 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: 5 agent-based retrieval\nType: SECTION_TITLE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "information foraging theory", + "relation_name": "", + "weight": 10.0, + "description": "bookrag embodies the cognitive principles of information foraging theory during its execution phase", + "source_ids": [ + 124 + ], + "source": "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "target": "Name: bookrag\nType: SOFTWARE" + }, + { + "src_entity_name": "large language models", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 9.0, + "description": "large language models have revolutionized the question answering system", + "source_ids": [ + 9 + ], + "source": "Name: question answering\nType: TASK_OR_PROBLEM", + "target": "Name: large language models\nType: TECHNOLOGY" + }, + { + "src_entity_name": "industry", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 7.0, + "description": "the industry is building question answering systems to assist users and reduce manual effort", + "source_ids": [ + 9 + ], + "source": "Name: question answering\nType: TASK_OR_PROBLEM", + "target": "Name: industry\nType: ORGANIZATION" + }, + { + "src_entity_name": "question answering", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 10.0, + "description": "question answering aims to answer queries based on documents", + "source_ids": [ + 37 + ], + "source": "Name: question answering\nType: TASK_OR_PROBLEM", + "target": "Name: document\nType: PRODUCT" + }, + { + "src_entity_name": "question answering", + "tgt_entity_name": "user query", + "relation_name": "", + "weight": 10.0, + "description": "question answering processes user queries to generate answers", + "source_ids": [ + 37 + ], + "source": "Name: question answering\nType: TASK_OR_PROBLEM", + "target": "Name: user query\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "question answering", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 10.0, + "description": "the goal of question answering is to generate an accurate answer", + "source_ids": [ + 37 + ], + "source": "Name: question answering\nType: TASK_OR_PROBLEM", + "target": "Name: answer\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "question answering", + "tgt_entity_name": "references 5 11 33", + "relation_name": "", + "weight": 8.0, + "description": "the problem of question answering is associated with references 5 11 and 33", + "source_ids": [ + 37 + ], + "source": "Name: question answering\nType: TASK_OR_PROBLEM", + "target": "Name: references 5 11 33\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 9.0, + "description": "the survey focuses on the task of question answering", + "source_ids": [ + 195 + ], + "source": "Name: question answering\nType: TASK_OR_PROBLEM", + "target": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK" + }, + { + "src_entity_name": "question answering", + "tgt_entity_name": "visually rich documents", + "relation_name": "", + "weight": 8.0, + "description": "question answering is performed over visually rich documents in the context of the survey", + "source_ids": [ + 195 + ], + "source": "Name: question answering\nType: TASK_OR_PROBLEM", + "target": "Name: visually rich documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 10.0, + "description": "g retriever is designed to solve the problem of question answering", + "source_ids": [ + 211 + ], + "source": "Name: question answering\nType: TASK_OR_PROBLEM", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "industry", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 8.0, + "description": "the industry is adopting large language models to build question answering systems", + "source_ids": [ + 9 + ], + "source": "Name: industry\nType: ORGANIZATION", + "target": "Name: large language models\nType: TECHNOLOGY" + }, + { + "src_entity_name": "industry", + "tgt_entity_name": "qa system", + "relation_name": "", + "weight": 9.0, + "description": "the industry builds qa systems to assist users and reduce manual effort", + "source_ids": [ + 9 + ], + "source": "Name: industry\nType: ORGANIZATION", + "target": "Name: qa system\nType: PRODUCT" + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "table of contents", + "relation_name": "", + "weight": 8.0, + "description": "the hierarchical tree serves as the role of the table of contents", + "source_ids": [ + 2 + ], + "source": "Name: tree\nType: SOFTWARE", + "target": "Name: table of contents\nType: SOFTWARE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 10.0, + "description": "bookrag s retrieval recall is the specific metric measured to demonstrate its performance", + "source_ids": [ + 157 + ], + "source": "Name: retrieval recall\nType: EVALUATION_METRIC", + "target": "Name: bookrag\nType: PRODUCT" + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 7.0, + "description": "the high quality kg is a feature that contributes to the performance in retrieval recall", + "source_ids": [ + 23 + ], + "source": "Name: retrieval recall\nType: EVALUATION_METRIC", + "target": "Name: kg\nType: PRODUCT" + }, + { + "src_entity_name": "three widely adopted datasets", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 8.0, + "description": "the three widely adopted datasets are used to measure the retrieval recall performance of the system", + "source_ids": [ + 23 + ], + "source": "Name: retrieval recall\nType: EVALUATION_METRIC", + "target": "Name: three widely adopted datasets\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "state of the art baselines", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 7.0, + "description": "state of the art baselines are evaluated on retrieval recall to compare against bookrag", + "source_ids": [ + 23 + ], + "source": "Name: retrieval recall\nType: EVALUATION_METRIC", + "target": "Name: state of the art baselines\nType: PRODUCT" + }, + { + "src_entity_name": "pdf parsing", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 10.0, + "description": "retrieval recall is the specific metric used to evaluate the pdf parsing method", + "source_ids": [ + 144 + ], + "source": "Name: retrieval recall\nType: EVALUATION_METRIC", + "target": "Name: pdf parsing\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "ground truth", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "retrieval recall is measured against the ground truth", + "source_ids": [ + 144 + ], + "source": "Name: retrieval recall\nType: EVALUATION_METRIC", + "target": "Name: ground truth\nType: CONCEPT" + }, + { + "src_entity_name": "query", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "retrieval recall is recorded for a specific query when a pdf parsing error occurs", + "source_ids": [ + 144 + ], + "source": "Name: retrieval recall\nType: EVALUATION_METRIC", + "target": "Name: query\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "table 6", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 10.0, + "description": "table 6 displays the comparison results for the retrieval recall metric", + "source_ids": [ + 155 + ], + "source": "Name: retrieval recall\nType: EVALUATION_METRIC", + "target": "Name: table 6\nType: TABLE" + }, + { + "src_entity_name": "retrieval recall", + "tgt_entity_name": "layout based methods", + "relation_name": "", + "weight": 9.0, + "description": "retrieval recall is the specific metric used to evaluate the layout based methods", + "source_ids": [ + 155 + ], + "source": "Name: retrieval recall\nType: EVALUATION_METRIC", + "target": "Name: layout based methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 10.0, + "description": "bookrag achieves superior performance in qa accuracy as demonstrated by experimental results", + "source_ids": [ + 23 + ], + "source": "Name: qa accuracy\nType: EVALUATION_METRIC", + "target": "Name: bookrag\nType: PRODUCT" + }, + { + "src_entity_name": "agent based retrieval mechanism", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 7.0, + "description": "the agent based retrieval mechanism is a feature that contributes to the performance in qa accuracy", + "source_ids": [ + 23 + ], + "source": "Name: qa accuracy\nType: EVALUATION_METRIC", + "target": "Name: agent based retrieval mechanism\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "three widely adopted datasets", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 8.0, + "description": "the three widely adopted datasets are used to measure the qa accuracy performance of the system", + "source_ids": [ + 23 + ], + "source": "Name: qa accuracy\nType: EVALUATION_METRIC", + "target": "Name: three widely adopted datasets\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "state of the art baselines", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 7.0, + "description": "state of the art baselines are evaluated on qa accuracy to compare against bookrag", + "source_ids": [ + 23 + ], + "source": "Name: qa accuracy\nType: EVALUATION_METRIC", + "target": "Name: state of the art baselines\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 8.0, + "description": "the efficiency of bookrag is evaluated and compared in the experiments", + "source_ids": [ + 137 + ], + "source": "Name: efficiency\nType: EVALUATION_METRIC", + "target": "Name: bookrag\nType: PRODUCT" + }, + { + "src_entity_name": "baseline methods", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 8.0, + "description": "the efficiency of baseline methods is evaluated and compared in the experiments", + "source_ids": [ + 137 + ], + "source": "Name: efficiency\nType: EVALUATION_METRIC", + "target": "Name: baseline methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "document qa tasks", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 7.0, + "description": "efficiency is measured specifically on document qa tasks", + "source_ids": [ + 137 + ], + "source": "Name: efficiency\nType: EVALUATION_METRIC", + "target": "Name: document qa tasks\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "reference format", + "relation_name": "", + "weight": 9.0, + "description": "pvldb is associated with a specific reference format mentioned in the text", + "source_ids": [ + 4 + ], + "source": "Name: pvldb\nType: PUBLICATION_VENUE", + "target": "Name: reference format\nType: SECTION_TITLE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "pvldb", + "relation_name": "", + "weight": 10.0, + "description": "bookrag was published in the pvldb journal", + "source_ids": [ + 5 + ], + "source": "Name: pvldb\nType: PUBLICATION_VENUE", + "target": "Name: bookrag\nType: PRODUCT" + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "pvldb published the bookrag paper in the year 2025", + "source_ids": [ + 5 + ], + "source": "Name: pvldb\nType: PUBLICATION_VENUE", + "target": "Name: 2025\nType: DATE" + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "19", + "relation_name": "", + "weight": 8.0, + "description": "pvldb volume 19 contains the paper", + "source_ids": [ + 5 + ], + "source": "Name: pvldb\nType: PUBLICATION_VENUE", + "target": "Name: 19\nType: MEASUREMENT" + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 8.0, + "description": "pvldb issue 1 contains the paper", + "source_ids": [ + 5 + ], + "source": "Name: pvldb\nType: PUBLICATION_VENUE", + "target": "Name: 1\nType: MEASUREMENT" + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "xxx xxx", + "relation_name": "", + "weight": 8.0, + "description": "the paper appears on pages xxx xxx in pvldb", + "source_ids": [ + 5 + ], + "source": "Name: pvldb\nType: PUBLICATION_VENUE", + "target": "Name: xxx xxx\nType: MEASUREMENT" + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "xx xx xxx xx", + "relation_name": "", + "weight": 8.0, + "description": "the paper in pvldb has the doi xx xx xxx xx", + "source_ids": [ + 5 + ], + "source": "Name: pvldb\nType: PUBLICATION_VENUE", + "target": "Name: xx xx xxx xx\nType: MEASUREMENT" + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "artifact availability", + "relation_name": "", + "weight": 8.0, + "description": "pvldb is the venue where the topic of artifact availability is addressed", + "source_ids": [ + 6 + ], + "source": "Name: pvldb\nType: PUBLICATION_VENUE", + "target": "Name: artifact availability\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is an approach for retrieval augmented generation", + "source_ids": [ + 5 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: retrieval augmented generation\nType: TECHNOLOGY" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "hierarchical structure aware index based approach", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is defined as a hierarchical structure aware index based approach", + "source_ids": [ + 5 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: hierarchical structure aware index based approach\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "complex documents", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is designed for processing complex documents", + "source_ids": [ + 5 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: complex documents\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 1", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "figure 1 displays a comparison involving bookrag", + "source_ids": [ + 12 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: figure 1\nType: IMAGE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "complex document qa", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is a solution or method applied to the task of complex document qa", + "source_ids": [ + 12 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: complex document qa\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "table 1", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "table 1 contains the comparison data for bookrag", + "source_ids": [ + 16 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: table 1\nType: TABLE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "representative methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is being compared to representative methods in the text", + "source_ids": [ + 16 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: representative methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes a high quality kg as a key feature contributing to its performance", + "source_ids": [ + 23 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: kg\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based retrieval mechanism", + "relation_name": "", + "weight": 9.0, + "description": "bookrag employs an agent based retrieval mechanism as a key feature contributing to its performance", + "source_ids": [ + 23 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: agent based retrieval mechanism\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "three widely adopted datasets", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is extensively experimented upon using three widely adopted datasets to validate its effectiveness", + "source_ids": [ + 23 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: three widely adopted datasets\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "state of the art baselines", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is being compared against state of the art baselines to analyze its performance", + "source_ids": [ + 151 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: state of the art baselines\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "existing baselines", + "relation_name": "", + "weight": 9.0, + "description": "bookrag demonstrates significant superiority over existing baselines", + "source_ids": [ + 188 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: existing baselines\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 10.0, + "description": "bookrag attains state of the art performance in solving complex document qa tasks", + "source_ids": [ + 27 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: complex document qa tasks\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "extensive experiments", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "extensive experiments were performed on bookrag to demonstrate its capabilities", + "source_ids": [ + 27 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: extensive experiments\nType: EVENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "state of the art performance", + "relation_name": "", + "weight": 10.0, + "description": "bookrag attained state of the art performance as a result of the experiments", + "source_ids": [ + 27 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: state of the art performance\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "competitive efficiency", + "relation_name": "", + "weight": 8.0, + "description": "bookrag maintained competitive efficiency while solving tasks", + "source_ids": [ + 27 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: competitive efficiency\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "section 5", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "section 5 elaborates on the execution of bookrag", + "source_ids": [ + 29 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: section 5\nType: SECTION_TITLE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "structured execution", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is the system undergoing structured execution described in section 5", + "source_ids": [ + 29 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: structured execution\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 8.0, + "description": "bookrag utilizes query classification in its execution", + "source_ids": [ + 29 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: query classification\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "operators", + "relation_name": "", + "weight": 8.0, + "description": "bookrag uses operators in its structured execution", + "source_ids": [ + 29 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: operators\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is designed to intelligently navigate the bookindex", + "source_ids": [ + 88 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: bookindex\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "formulator", + "relation_name": "", + "weight": 9.0, + "description": "bookrag defines the formulator as one of its four types of operators", + "source_ids": [ + 88 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: formulator\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "bookrag defines the selector as one of its four types of operators", + "source_ids": [ + 88 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: selector\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "bookrag defines the reasoner as one of its four types of operators", + "source_ids": [ + 88 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: reasoner\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 9.0, + "description": "bookrag defines the synthesizer as one of its four types of operators", + "source_ids": [ + 88 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: synthesizer\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent", + "relation_name": "", + "weight": 8.0, + "description": "the agent performs the first step of the process within bookrag", + "source_ids": [ + 88 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: agent\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query categories", + "relation_name": "", + "weight": 9.0, + "description": "bookrag dynamically configures operators to adapt to the specific requirements of different query categories", + "source_ids": [ + 88 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: query categories\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "table 2", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "table 2 details query categories that are addressed within the bookrag system", + "source_ids": [ + 89 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: table 2\nType: TABLE" + }, + { + "src_entity_name": "table 3", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "table 3 details the operators used within the bookrag system", + "source_ids": [ + 131 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: table 3\nType: TABLE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "document qa tasks", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is evaluated for its efficiency and accuracy specifically on document qa tasks", + "source_ids": [ + 137 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: document qa tasks\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "baseline methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is compared against several strong baseline methods in the experiments", + "source_ids": [ + 137 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: baseline methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 8.0, + "description": "the accuracy of bookrag is evaluated and compared in the experiments", + "source_ids": [ + 137 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: accuracy\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "qwen family", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is powered by models from the qwen family", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "mineru", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes mineru for robust document layout parsing", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: mineru\nType: SOFTWARE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "github com sam234990 bookrag", + "relation_name": "", + "weight": 10.0, + "description": "the source code and configurations for bookrag are available at the specified github location", + "source_ids": [ + 149 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: github com sam234990 bookrag\nType: LOCATION" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "gradient g", + "relation_name": "", + "weight": 8.0, + "description": "bookrag s implementation sets the threshold of gradient g as 0 6", + "source_ids": [ + 149 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: gradient g\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "baseline methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag and baseline methods are compared fairly using the same backbone models", + "source_ids": [ + 149 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: baseline methods\nType: UNKNOWN" + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "qa is the task performed by the different variants of bookrag being compared", + "source_ids": [ + 170 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: qa\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 9.0, + "description": "bookrag ensures precise evidence retrieval by overcoming limitations of existing baselines", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: retrieval\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query efficiency", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is being analyzed for its query efficiency", + "source_ids": [ + 151 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: query efficiency\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "evaluation", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "the evaluation is the process being conducted on bookrag", + "source_ids": [ + 151 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: evaluation\nType: EVENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "table 5", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s qa performance is presented and compared in table 5", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: table 5\nType: TABLE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "m3docvqa", + "relation_name": "", + "weight": 10.0, + "description": "bookrag achieves a 71 2 recall on the m3docvqa dataset", + "source_ids": [ + 157 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: m3docvqa\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "18 0", + "relation_name": "", + "weight": 10.0, + "description": "bookrag outperforms the top baseline by 18 0 on the m3docvqa dataset", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: 18 0\nType: PERCENTAGE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "tree graph bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookrag s superiority stems from the synergy of its unified tree graph bookindex", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: tree graph bookindex\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 10.0, + "description": "bookrag s superiority stems from the synergy of its agent based planning", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: agent based planning\nType: PRODUCT" + }, + { + "src_entity_name": "qa performance", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "qa performance is the metric used to evaluate bookrag s capabilities", + "source_ids": [ + 179 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: qa performance\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s performance is measured using the exact match metric on m3docvqa", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: exact match\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 9.0, + "description": "bookrag ensures accurate generation by overcoming limitations of existing baselines", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: generation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "queries", + "relation_name": "", + "weight": 9.0, + "description": "bookrag effectively classifies queries to configure optimal workflows", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: queries\nType: CONCEPT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "workflows", + "relation_name": "", + "weight": 9.0, + "description": "bookrag configures optimal workflows to improve retrieval and generation", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: workflows\nType: CONCEPT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "context fragmentation", + "relation_name": "", + "weight": 9.0, + "description": "bookrag overcomes the limitation of context fragmentation found in existing baselines", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: context fragmentation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "static query workflow", + "relation_name": "", + "weight": 9.0, + "description": "bookrag overcomes the limitation of static query workflow found in existing baselines", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: static query workflow\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "top performing baseline", + "relation_name": "", + "weight": 10.0, + "description": "bookrag substantially outperforms the top performing baseline by 18 0", + "source_ids": [ + 152 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: top performing baseline\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "graphranker", + "relation_name": "", + "weight": 9.0, + "description": "bookrag significantly outperforms graphranker in retrieval recall", + "source_ids": [ + 157 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: graphranker\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "ift inspired selector reasoner workflow", + "relation_name": "", + "weight": 10.0, + "description": "the performance advantage of bookrag stems from its ift inspired selector reasoner workflow", + "source_ids": [ + 157 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: ift inspired selector reasoner workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval performance", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s retrieval performance is the subject of the validation described in the text", + "source_ids": [ + 157 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: retrieval performance\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "ground truth layout blocks", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is evaluated against ground truth layout blocks to validate its design", + "source_ids": [ + 157 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: ground truth layout blocks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "layout based baselines", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is evaluated against layout based baselines to demonstrate its superiority", + "source_ids": [ + 157 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: layout based baselines\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "graph based rag methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag maintains time and token costs comparable to existing graph based rag methods", + "source_ids": [ + 160 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: graph based rag methods\nType: TECHNOLOGY" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "text based rag approaches", + "relation_name": "", + "weight": 7.0, + "description": "bookrag maintains a balanced efficiency among multi modal methods compared to text based approaches which have lower latency", + "source_ids": [ + 160 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: text based rag approaches\nType: TECHNOLOGY" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "vlm", + "relation_name": "", + "weight": 8.0, + "description": "bookrag involves vlm processing for images unlike purely text based rag approaches", + "source_ids": [ + 160 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: vlm\nType: TECHNOLOGY" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "docetl", + "relation_name": "", + "weight": 10.0, + "description": "bookrag reduces token consumption by an order of magnitude and achieves a speedup of up to 2x compared to docetl", + "source_ids": [ + 160 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: docetl\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "bookrag requires less than 5 million tokens on the mmlongbench dataset", + "source_ids": [ + 160 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: mmlongbench\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "figure 5", + "relation_name": "", + "weight": 8.0, + "description": "figure 5 illustrates the efficiency evaluation of bookrag", + "source_ids": [ + 160 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: figure 5\nType: IMAGE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "5 million", + "relation_name": "", + "weight": 10.0, + "description": "bookrag requires less than 5 million tokens on the mmlongbench dataset", + "source_ids": [ + 160 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: 5 million\nType: MEASUREMENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "2", + "relation_name": "", + "weight": 10.0, + "description": "bookrag achieves a speedup of up to 2 compared to docetl", + "source_ids": [ + 160 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: 2\nType: MEASUREMENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "order of magnitude", + "relation_name": "", + "weight": 9.0, + "description": "bookrag reduces token consumption by an order of magnitude compared to docetl", + "source_ids": [ + 160 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: order of magnitude\nType: MEASUREMENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "ablation study", + "relation_name": "", + "weight": 9.0, + "description": "an ablation study is conducted on bookrag to validate its components", + "source_ids": [ + 163 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: ablation study\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "gradient based er", + "relation_name": "", + "weight": 8.0, + "description": "experiments on bookrag involve analyzing the impact of gradient based er", + "source_ids": [ + 163 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: gradient based er\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "entity resolution method", + "relation_name": "", + "weight": 8.0, + "description": "the effectiveness of the entity resolution method is compared in the context of bookrag", + "source_ids": [ + 163 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: entity resolution method\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "case study", + "relation_name": "", + "weight": 7.0, + "description": "a case study is presented as part of the examination of bookrag", + "source_ids": [ + 163 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: case study\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 8.0, + "description": "experiments on bookrag are conducted across different query types", + "source_ids": [ + 163 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: query types\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "error analysis", + "relation_name": "", + "weight": 9.0, + "description": "a comprehensive error analysis is performed as part of the examination of bookrag", + "source_ids": [ + 163 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: error analysis\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "ablation study", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "the ablation study is conducted to evaluate the core components of bookrag", + "source_ids": [ + 164 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: ablation study\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "table 7", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 7.0, + "description": "table 7 presents data regarding the performance of the bookrag system variants", + "source_ids": [ + 172 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: table 7\nType: TABLE" + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "the kg is a critical component within the bookrag system supporting effective reasoning", + "source_ids": [ + 172 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: kg\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "agent based planning", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 8.0, + "description": "agent based planning is a mechanism assessed for its necessity within the bookrag system", + "source_ids": [ + 172 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: agent based planning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "ift inspired selection mechanism", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 8.0, + "description": "the ift inspired selection mechanism is a strategy evaluated for its efficiency in the bookrag system", + "source_ids": [ + 172 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: ift inspired selection mechanism\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "multi dimensional reasoning", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 8.0, + "description": "multi dimensional reasoning is a strategy validated for its effectiveness in the bookrag system", + "source_ids": [ + 172 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: multi dimensional reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "dynamic skyline filtering strategy", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 8.0, + "description": "the dynamic skyline filtering strategy is a method validated for its effectiveness in the bookrag system", + "source_ids": [ + 172 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: dynamic skyline filtering strategy\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "planning mechanism", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "the planning mechanism is a component of bookrag whose removal causes significant performance loss", + "source_ids": [ + 172 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: planning mechanism\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "figure 7 displays the performance breakdown of bookrag", + "source_ids": [ + 179 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: figure 7\nType: IMAGE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "bookrag processes single hop queries reducing the reasoning space significantly", + "source_ids": [ + 186 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: single hop\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "multihop", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s performance is evaluated against multihop queries which present a greater challenge", + "source_ids": [ + 179 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: multihop\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "global aggregation", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s performance is evaluated against global aggregation queries", + "source_ids": [ + 179 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: global aggregation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "figure 9", + "relation_name": "", + "weight": 9.0, + "description": "figure 9 illustrates the error propagation traced while diagnosing the performance bottlenecks of bookrag", + "source_ids": [ + 180 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: figure 9\nType: IMAGE" + }, + { + "src_entity_name": "error response analysis", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "error response analysis is performed on bookrag to diagnose its performance bottlenecks", + "source_ids": [ + 180 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: error response analysis\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "figure 8", + "relation_name": "", + "weight": 10.0, + "description": "figure 8 illustrates the answering workflow of bookrag", + "source_ids": [ + 186 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: figure 8\nType: IMAGE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "multi hop", + "relation_name": "", + "weight": 9.0, + "description": "bookrag processes multi hop queries as part of its answering workflow", + "source_ids": [ + 186 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: multi hop\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "global queries", + "relation_name": "", + "weight": 9.0, + "description": "bookrag processes global queries as part of its answering workflow", + "source_ids": [ + 186 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: global queries\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "select", + "relation_name": "", + "weight": 10.0, + "description": "bookrag leverages the select operator to prune search spaces", + "source_ids": [ + 186 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: select\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "decompose", + "relation_name": "", + "weight": 10.0, + "description": "bookrag leverages the decompose operator to prune search spaces", + "source_ids": [ + 186 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: decompose\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "filter", + "relation_name": "", + "weight": 10.0, + "description": "bookrag leverages the filter operator to prune search spaces", + "source_ids": [ + 186 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: filter\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "book index", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is built upon book index", + "source_ids": [ + 188 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: book index\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based method", + "relation_name": "", + "weight": 9.0, + "description": "bookrag employs an agent based method to configure operators", + "source_ids": [ + 188 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: agent based method\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "benchmarks", + "relation_name": "", + "weight": 9.0, + "description": "bookrag achieves state of the art performance on multiple benchmarks", + "source_ids": [ + 188 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: benchmarks\nType: BENCHMARK" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval precision", + "relation_name": "", + "weight": 8.0, + "description": "bookrag demonstrates significant superiority in retrieval precision over existing baselines", + "source_ids": [ + 188 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: retrieval precision\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "answer accuracy", + "relation_name": "", + "weight": 8.0, + "description": "bookrag demonstrates significant superiority in answer accuracy over existing baselines", + "source_ids": [ + 188 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: answer accuracy\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "paper", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is proposed within the paper", + "source_ids": [ + 188 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: paper\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "python", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is implemented in python", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: python\nType: PROGRAMMING_LANGUAGE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "linux", + "relation_name": "", + "weight": 8.0, + "description": "experiments for bookrag were conducted on a linux operating system", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: linux\nType: SOFTWARE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "500 tokens", + "relation_name": "", + "weight": 8.0, + "description": "bookrag standardizes the chunk size at 500 tokens for document chunking", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: 500 tokens\nType: MEASUREMENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "10", + "relation_name": "", + "weight": 8.0, + "description": "bookrag sets the retrieval top k to 10 for consistent candidate pool sizes", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: 10\nType: MEASUREMENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "10b parameter scale", + "relation_name": "", + "weight": 9.0, + "description": "bookrag primarily selects models under the 10b parameter scale", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: 10b parameter scale\nType: MEASUREMENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "30b version", + "relation_name": "", + "weight": 9.0, + "description": "bookrag adopts the 30b version of the vlm due to performance issues with the 8b counterpart", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: 30b version\nType: MEASUREMENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "8b counterpart", + "relation_name": "", + "weight": 8.0, + "description": "the 8b counterpart of the vlm exhibited significant performance deficits leading to the adoption of the 30b version", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: 8b counterpart\nType: MEASUREMENT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "https github com sam234990 bookrag", + "relation_name": "", + "weight": 10.0, + "description": "the source code and configurations for bookrag are available at the specified github url", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: https github com sam234990 bookrag\nType: LOCATION" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "baseline methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is compared against baseline methods to ensure a fair comparison", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: baseline methods\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "document chunking", + "relation_name": "", + "weight": 8.0, + "description": "bookrag involves document chunking as part of its processing pipeline", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: document chunking\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval ranking", + "relation_name": "", + "weight": 8.0, + "description": "bookrag involves retrieval ranking as part of its processing pipeline", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: retrieval ranking\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "sequential processing mode", + "relation_name": "", + "weight": 9.0, + "description": "bookrag methods were executed in sequential processing mode to ensure fair efficiency comparison", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: sequential processing mode\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "candidate pool", + "relation_name": "", + "weight": 8.0, + "description": "bookrag standardizes the candidate pool size across baselines", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: candidate pool\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 9.0, + "description": "bookrag balances efficiency and effectiveness in model selection", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: efficiency\nType: CONCEPT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "effectiveness", + "relation_name": "", + "weight": 9.0, + "description": "bookrag balances efficiency and effectiveness in model selection", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: effectiveness\nType: CONCEPT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "reproducibility", + "relation_name": "", + "weight": 9.0, + "description": "bookrag aims for reproducibility by making code and configs public", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: reproducibility\nType: CONCEPT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "fair comparison", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is designed to enable a fair comparison with other methods", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: fair comparison\nType: CONCEPT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "source code", + "relation_name": "", + "weight": 10.0, + "description": "the source code for bookrag is available at the repository", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: source code\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "implementation configurations", + "relation_name": "", + "weight": 10.0, + "description": "the implementation configurations for bookrag are available at the repository", + "source_ids": [ + 238 + ], + "source": "Name: bookrag\nType: PRODUCT", + "target": "Name: implementation configurations\nType: PRODUCT" + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "the qwen2 5 vl technical report was published in the year 2025", + "source_ids": [ + 194 + ], + "source": "Name: 2025\nType: DATE", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper was published in the year 2025", + "source_ids": [ + 195 + ], + "source": "Name: 2025\nType: DATE", + "target": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK" + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "lego graphrag was published in the year 2025", + "source_ids": [ + 196 + ], + "source": "Name: 2025\nType: DATE", + "target": "Name: lego graphrag\nType: PRODUCT" + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "proc vldb endow published the paper in 2025", + "source_ids": [ + 196 + ], + "source": "Name: 2025\nType: DATE", + "target": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 8.0, + "description": "gemini 2 5 is the subject of a paper published in 2025", + "source_ids": [ + 203 + ], + "source": "Name: 2025\nType: DATE", + "target": "Name: gemini 2 5\nType: PRODUCT" + }, + { + "src_entity_name": "l", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 8.0, + "description": "the parameter l uses 1 to represent the root level", + "source_ids": [ + 57 + ], + "source": "Name: 1\nType: MEASUREMENT", + "target": "Name: l\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 10.0, + "description": "retrieval augmented generation is applied to large language models as described in the survey", + "source_ids": [ + 207 + ], + "source": "Name: retrieval augmented generation\nType: TECHNOLOGY", + "target": "Name: large language models\nType: TECHNOLOGY" + }, + { + "src_entity_name": "retrieval augmented generation for large language models a survey", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 9.0, + "description": "the survey is about the technology of retrieval augmented generation", + "source_ids": [ + 207 + ], + "source": "Name: retrieval augmented generation\nType: TECHNOLOGY", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 10.0, + "description": "lightrag is a type of retrieval augmented generation system", + "source_ids": [ + 208 + ], + "source": "Name: retrieval augmented generation\nType: TECHNOLOGY", + "target": "Name: lightrag\nType: PRODUCT" + }, + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "zirui guo is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ], + "source": "Name: retrieval augmented generation\nType: TECHNOLOGY", + "target": "Name: zirui guo\nType: PERSON" + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "lianghao xia is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ], + "source": "Name: retrieval augmented generation\nType: TECHNOLOGY", + "target": "Name: lianghao xia\nType: PERSON" + }, + { + "src_entity_name": "yanhua yu", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "yanhua yu is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ], + "source": "Name: retrieval augmented generation\nType: TECHNOLOGY", + "target": "Name: yanhua yu\nType: PERSON" + }, + { + "src_entity_name": "tu ao", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "tu ao is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ], + "source": "Name: retrieval augmented generation\nType: TECHNOLOGY", + "target": "Name: tu ao\nType: PERSON" + }, + { + "src_entity_name": "chao huang", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "chao huang is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ], + "source": "Name: retrieval augmented generation\nType: TECHNOLOGY", + "target": "Name: chao huang\nType: PERSON" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "github", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is hosted on the github platform as indicated by the provided url", + "source_ids": [ + 7 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: github\nType: ORGANIZATION" + }, + { + "src_entity_name": "sam234990", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "sam234990 is the creator or owner of the bookrag repository", + "source_ids": [ + 7 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: sam234990\nType: PERSON" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "source code", + "relation_name": "", + "weight": 10.0, + "description": "bookrag contains the source code that has been made available", + "source_ids": [ + 7 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: source code\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "data", + "relation_name": "", + "weight": 10.0, + "description": "bookrag contains the data that has been made available", + "source_ids": [ + 7 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: data\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "artifacts", + "relation_name": "", + "weight": 10.0, + "description": "bookrag includes other artifacts that have been made available", + "source_ids": [ + 7 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: artifacts\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "bookrag executes operations on the bookindex to handle document queries", + "source_ids": [ + 79 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: bookindex\nType: DATABASE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes agent based planning as one of its two core mechanisms to formulate strategies", + "source_ids": [ + 79 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: agent based planning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "structured execution", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes structured execution as one of its two core mechanisms to handle retrieval and generation", + "source_ids": [ + 79 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: structured execution\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 10.0, + "description": "bookrag performs the agent based planning stage as its first step", + "source_ids": [ + 82 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: agent based planning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 3", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "figure 3 depicts the workflow of bookrag", + "source_ids": [ + 83 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: figure 3\nType: IMAGE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "bookrag contains the agent based retrieval workflow", + "source_ids": [ + 83 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "workflow", + "relation_name": "", + "weight": 10.0, + "description": "bookrag executes the generated workflow p", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: workflow\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "bookrag gets the retrieval set from the bookindex", + "source_ids": [ + 85 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: bookindex\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "information blocks", + "relation_name": "", + "weight": 10.0, + "description": "bookrag obtains the retrieval set of highly relevant information blocks", + "source_ids": [ + 85 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: information blocks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 7.0, + "description": "bookrag is designed to resolve a broader range of query types including those defined by the classification", + "source_ids": [ + 96 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: query classification\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "additional operators", + "relation_name": "", + "weight": 8.0, + "description": "bookrag resolves broader query types by integrating additional operators", + "source_ids": [ + 96 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: additional operators\nType: SOFTWARE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes the selector operator to navigate to information patches", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: selector\nType: SOFTWARE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes the reasoner operator to perform sensemaking within information patches", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: reasoner\nType: SOFTWARE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes the synthesizer operator to generate the final answer", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: synthesizer\nType: SOFTWARE" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "p", + "relation_name": "", + "weight": 10.0, + "description": "p is the specific workflow executed by bookrag", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: p\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "abstract textual queries", + "relation_name": "", + "weight": 9.0, + "description": "bookrag translates abstract textual queries into concrete operations", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: abstract textual queries\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "concrete operations", + "relation_name": "", + "weight": 9.0, + "description": "bookrag produces concrete operations from abstract queries", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: concrete operations\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "cost of attention", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s design minimizes the cost of attention", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: cost of attention\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "computational resources", + "relation_name": "", + "weight": 9.0, + "description": "bookrag ensures computational resources are focused on high value data", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: computational resources\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "high value data patches", + "relation_name": "", + "weight": 9.0, + "description": "bookrag focuses computational resources solely on high value data patches", + "source_ids": [ + 124 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: high value data patches\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 8", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "figure 8 highlights content generated by bookrag", + "source_ids": [ + 181 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: figure 8\nType: IMAGE" + }, + { + "src_entity_name": "cyan text", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "cyan text highlights the content generated by bookrag", + "source_ids": [ + 181 + ], + "source": "Name: bookrag\nType: SOFTWARE", + "target": "Name: cyan text\nType: COLOR" + }, + { + "src_entity_name": "source code", + "tgt_entity_name": "github", + "relation_name": "", + "weight": 9.0, + "description": "the source code is hosted on github", + "source_ids": [ + 7 + ], + "source": "Name: github\nType: ORGANIZATION", + "target": "Name: source code\nType: PRODUCT" + }, + { + "src_entity_name": "data", + "tgt_entity_name": "github", + "relation_name": "", + "weight": 9.0, + "description": "the data is hosted on github", + "source_ids": [ + 7 + ], + "source": "Name: github\nType: ORGANIZATION", + "target": "Name: data\nType: PRODUCT" + }, + { + "src_entity_name": "artifacts", + "tgt_entity_name": "github", + "relation_name": "", + "weight": 9.0, + "description": "the artifacts are hosted on github", + "source_ids": [ + 7 + ], + "source": "Name: github\nType: ORGANIZATION", + "target": "Name: artifacts\nType: PRODUCT" + }, + { + "src_entity_name": "sam234990", + "tgt_entity_name": "https github com sam234990 bookrag", + "relation_name": "", + "weight": 10.0, + "description": "sam234990 is the owner of the github repository url", + "source_ids": [ + 238 + ], + "source": "Name: sam234990\nType: PERSON", + "target": "Name: https github com sam234990 bookrag\nType: LOCATION" + }, + { + "src_entity_name": "large language models", + "tgt_entity_name": "qwen 3", + "relation_name": "", + "weight": 10.0, + "description": "qwen 3 is identified as an example of a large language model", + "source_ids": [ + 9 + ], + "source": "Name: large language models\nType: TECHNOLOGY", + "target": "Name: qwen 3\nType: PRODUCT" + }, + { + "src_entity_name": "large language models", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is identified as an example of a large language model", + "source_ids": [ + 9 + ], + "source": "Name: large language models\nType: TECHNOLOGY", + "target": "Name: gemini 2 5\nType: PRODUCT" + }, + { + "src_entity_name": "large language models", + "tgt_entity_name": "qa system", + "relation_name": "", + "weight": 9.0, + "description": "large language models are used to build qa systems", + "source_ids": [ + 9 + ], + "source": "Name: large language models\nType: TECHNOLOGY", + "target": "Name: qa system\nType: PRODUCT" + }, + { + "src_entity_name": "retrieval augmented generation for large language models a survey", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 9.0, + "description": "the survey covers the topic of large language models", + "source_ids": [ + 207 + ], + "source": "Name: large language models\nType: TECHNOLOGY", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "gheorghe comanici is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: gheorghe comanici\nType: PERSON" + }, + { + "src_entity_name": "eric bieber", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "eric bieber is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: eric bieber\nType: PERSON" + }, + { + "src_entity_name": "mike schaekermann", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "mike schaekermann is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: mike schaekermann\nType: PERSON" + }, + { + "src_entity_name": "ice pasupat", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "ice pasupat is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: ice pasupat\nType: PERSON" + }, + { + "src_entity_name": "noveen sachdeva", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "noveen sachdeva is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: noveen sachdeva\nType: PERSON" + }, + { + "src_entity_name": "inderjit dhillon", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "inderjit dhillon is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: inderjit dhillon\nType: PERSON" + }, + { + "src_entity_name": "marcel blistein", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "marcel blistein is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: marcel blistein\nType: PERSON" + }, + { + "src_entity_name": "ori ram", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "ori ram is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: ori ram\nType: PERSON" + }, + { + "src_entity_name": "dan zhang", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "dan zhang is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: dan zhang\nType: PERSON" + }, + { + "src_entity_name": "evan rosen", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "evan rosen is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: evan rosen\nType: PERSON" + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the paper describing gemini 2 5 is published on arxiv", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: arxiv\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "advanced reasoning", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is described as having advanced reasoning capabilities", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: advanced reasoning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "multimodality", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is described as having multimodality capabilities", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: multimodality\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "long context", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is described as having long context capabilities", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: long context\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "next generation agentic capabilities", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is described as having next generation agentic capabilities", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: next generation agentic capabilities\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gemini 2 5 pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 10.0, + "description": "the title refers to the product gemini 2 5", + "source_ids": [ + 203 + ], + "source": "Name: gemini 2 5\nType: PRODUCT", + "target": "Name: gemini 2 5 pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities\nType: BOOK" + }, + { + "src_entity_name": "qa system", + "tgt_entity_name": "users", + "relation_name": "", + "weight": 8.0, + "description": "qa systems are designed to assist users", + "source_ids": [ + 9 + ], + "source": "Name: qa system\nType: PRODUCT", + "target": "Name: users\nType: PERSON" + }, + { + "src_entity_name": "creative commons by nc nd 4 0 international license", + "tgt_entity_name": "vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "the work licensed under the creative commons by nc nd 4 0 international license has its publication rights licensed to the vldb endowment", + "source_ids": [ + 10 + ], + "source": "Name: creative commons by nc nd 4 0 international license\nType: LAW", + "target": "Name: vldb endowment\nType: ORGANIZATION" + }, + { + "src_entity_name": "creative commons", + "tgt_entity_name": "creative commons by nc nd 4 0 international license", + "relation_name": "", + "weight": 9.0, + "description": "creative commons is the creator of the by nc nd 4 0 international license", + "source_ids": [ + 10 + ], + "source": "Name: creative commons by nc nd 4 0 international license\nType: LAW", + "target": "Name: creative commons\nType: ORGANIZATION" + }, + { + "src_entity_name": "owner author s", + "tgt_entity_name": "creative commons by nc nd 4 0 international license", + "relation_name": "", + "weight": 8.0, + "description": "the owner author s hold the copyright for the work which is licensed under the creative commons by nc nd 4 0 international license", + "source_ids": [ + 10 + ], + "source": "Name: creative commons by nc nd 4 0 international license\nType: LAW", + "target": "Name: owner author s\nType: PERSON" + }, + { + "src_entity_name": "owner author s", + "tgt_entity_name": "vldb endowment", + "relation_name": "", + "weight": 7.0, + "description": "the owner author s hold the copyright while the vldb endowment is licensed the publication rights", + "source_ids": [ + 10 + ], + "source": "Name: vldb endowment\nType: ORGANIZATION", + "target": "Name: owner author s\nType: PERSON" + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "vldb endowment", + "relation_name": "", + "weight": 9.0, + "description": "proceedings of the vldb endowment is published by the vldb endowment organization", + "source_ids": [ + 191 + ], + "source": "Name: vldb endowment\nType: ORGANIZATION", + "target": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "vol 19", + "relation_name": "", + "weight": 9.0, + "description": "vol 19 is the volume associated with the proceedings of the vldb endowment", + "source_ids": [ + 11 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: vol 19\nType: MEASUREMENT" + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "no 1", + "relation_name": "", + "weight": 9.0, + "description": "no 1 is the issue number associated with the proceedings of the vldb endowment", + "source_ids": [ + 11 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: no 1\nType: MEASUREMENT" + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "issn 2150 8097", + "relation_name": "", + "weight": 10.0, + "description": "issn 2150 8097 is the identifier for the proceedings of the vldb endowment", + "source_ids": [ + 11 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: issn 2150 8097\nType: MEASUREMENT" + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "doi xx xx xxx xx", + "relation_name": "", + "weight": 9.0, + "description": "doi xx xx xxx xx is the identifier for the specific article within the proceedings of the vldb endowment", + "source_ids": [ + 11 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: doi xx xx xxx xx\nType: MEASUREMENT" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 191 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: simran arora\nType: PERSON" + }, + { + "src_entity_name": "2023", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "the proceedings of the vldb endowment volume 17 issue 2 was published in 2023", + "source_ids": [ + 191 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: 2023\nType: DATE" + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: chengliang chai\nType: PERSON" + }, + { + "src_entity_name": "jiajun li", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "jiajun li is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: jiajun li\nType: PERSON" + }, + { + "src_entity_name": "yuhao deng", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "yuhao deng is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: yuhao deng\nType: PERSON" + }, + { + "src_entity_name": "yuanhao zhong", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "yuanhao zhong is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: yuanhao zhong\nType: PERSON" + }, + { + "src_entity_name": "ye yuan", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "ye yuan is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: ye yuan\nType: PERSON" + }, + { + "src_entity_name": "guoren wang", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "guoren wang is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: guoren wang\nType: PERSON" + }, + { + "src_entity_name": "lei cao", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "lei cao is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: lei cao\nType: PERSON" + }, + { + "src_entity_name": "doctopus", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 10.0, + "description": "the doctopus paper was published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: doctopus\nType: PRODUCT" + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "18", + "relation_name": "", + "weight": 9.0, + "description": "the proceedings of the vldb endowment volume 18 contains the paper", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: 18\nType: MEASUREMENT" + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "11", + "relation_name": "", + "weight": 9.0, + "description": "the proceedings of the vldb endowment issue 11 contains the paper", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: 11\nType: MEASUREMENT" + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "3695 3707", + "relation_name": "", + "weight": 9.0, + "description": "the paper appears on pages 3695 3707 of the proceedings of the vldb endowment", + "source_ids": [ + 197 + ], + "source": "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "target": "Name: 3695 3707\nType: MEASUREMENT" + }, + { + "src_entity_name": "figure 1", + "tgt_entity_name": "existing methods", + "relation_name": "", + "weight": 9.0, + "description": "figure 1 displays a comparison involving existing methods", + "source_ids": [ + 12 + ], + "source": "Name: figure 1\nType: IMAGE", + "target": "Name: existing methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "figure 1", + "tgt_entity_name": "rag", + "relation_name": "", + "weight": 8.0, + "description": "figure 1 illustrates the existing rag approaches for document level qa", + "source_ids": [ + 15 + ], + "source": "Name: figure 1\nType: IMAGE", + "target": "Name: rag\nType: TECHNOLOGY" + }, + { + "src_entity_name": "existing methods", + "tgt_entity_name": "complex document qa", + "relation_name": "", + "weight": 8.0, + "description": "existing methods are techniques used for the task of complex document qa", + "source_ids": [ + 12 + ], + "source": "Name: existing methods\nType: METHOD_OR_TECHNIQUE", + "target": "Name: complex document qa\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "rag systems", + "tgt_entity_name": "complex document qa", + "relation_name": "", + "weight": 6.0, + "description": "the text mentions reviewing the workflow of rag systems in the context of formalizing the research problem of complex document qa", + "source_ids": [ + 35 + ], + "source": "Name: complex document qa\nType: TASK_OR_PROBLEM", + "target": "Name: rag systems\nType: TECHNOLOGY" + }, + { + "src_entity_name": "complex document qa", + "tgt_entity_name": "3.1 problem formulation", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Complex Document QA' is the primary topic and subject of the problem formulation detailed in section 3.1.", + "source_ids": [ + 36 + ], + "source": "Name: complex document qa\nType: TASK_OR_PROBLEM", + "target": "Name: 3.1 problem formulation\nType: SECTION_TITLE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "complex query", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Complex Query", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: complex query\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "complex multi-page document", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Complex Multi-page Document", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: complex multi-page document\nType: PRODUCT" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "text-only rag", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Text-Only RAG", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: text-only rag\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "plain text extraction (ocr)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Plain Text Extraction (OCR)", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: plain text extraction (ocr)\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "unstructured chunks", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Unstructured Chunks", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: unstructured chunks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "text index (vector/graph/tree)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Text Index (Vector/Graph/Tree)", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: text index (vector/graph/tree)\nType: SYSTEM_COMPONENT" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "fixed/ graph retrieval", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Fixed/ Graph Retrieval", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: fixed/ graph retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to LLM", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: llm\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "fails on structural dependencies", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Fails on Structural dependencies", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: fails on structural dependencies\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "layout segmented rag", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Layout Segmented RAG", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: layout segmented rag\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "layout analysis & parsing", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Layout Analysis & Parsing", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: layout analysis & parsing\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "flattened chunks", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Flattened Chunks", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: flattened chunks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "flattened vector index", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Flattened Vector Index", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: flattened vector index\nType: SYSTEM_COMPONENT" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "fixed retrieval", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Fixed Retrieval", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: fixed retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "loses complex relationships", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Loses complex relationships", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: loses complex relationships\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "bookrag (natively structure-aware)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to BookRAG (Natively Structure-aware)", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: bookrag (natively structure-aware)\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "hierarchical chunks", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Hierarchical Chunks", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: hierarchical chunks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to BookIndex", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: bookindex\nType: SYSTEM_COMPONENT" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "agent-based retrieval", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Agent-based Retrieval", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: agent-based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "accurate, structured-grounded", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Accurate, structured-grounded", + "source_ids": [ + 13 + ], + "source": "Name: cref='#/texts/14'\nType: IMAGE", + "target": "Name: accurate, structured-grounded\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "decompose", + "tgt_entity_name": "complex query", + "relation_name": "", + "weight": 10.0, + "description": "decompose takes a complex query as its input to break it down", + "source_ids": [ + 98 + ], + "source": "Name: complex query\nType: TASK_OR_PROBLEM", + "target": "Name: decompose\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "docetl uses llm powered operations to create processing pipelines", + "source_ids": [ + 18 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: docetl\nType: SOFTWARE" + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "section filtering utilizes an llm to analyze content and layout features of candidates", + "source_ids": [ + 57 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: section filtering\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "title", + "relation_name": "", + "weight": 9.0, + "description": "llm analyzes title candidates to determine their actual hierarchical level and final node type", + "source_ids": [ + 57 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: title\nType: SECTION_TITLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 8.0, + "description": "llm may re classify erroneous title blocks as text", + "source_ids": [ + 57 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: text\nType: SECTION_TITLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "l", + "relation_name": "", + "weight": 8.0, + "description": "llm determines the hierarchical level l for each candidate", + "source_ids": [ + 57 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: l\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 8.0, + "description": "llm analyzes the content c of the candidates", + "source_ids": [ + 57 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: c\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "f", + "relation_name": "", + "weight": 8.0, + "description": "llm analyzes the layout features f of the candidates", + "source_ids": [ + 57 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: f\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "b title", + "relation_name": "", + "weight": 9.0, + "description": "the llm analyzes the candidate subset b title to determine properties", + "source_ids": [ + 57 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: b title\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "", + "relation_name": "", + "weight": 7.0, + "description": "the llm uses to identify blocks as title candidates", + "source_ids": [ + 57 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: \nType: UNKNOWN" + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "the section filtering phase uses the llm to analyze title candidates", + "source_ids": [ + 59 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: section filtering phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "method", + "relation_name": "", + "weight": 8.0, + "description": "the llm correctly identifies method as a section node", + "source_ids": [ + 59 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: method\nType: SECTION_TITLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "experiment", + "relation_name": "", + "weight": 8.0, + "description": "the llm correctly identifies experiment as a section node", + "source_ids": [ + 59 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: experiment\nType: SECTION_TITLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "moe layer", + "relation_name": "", + "weight": 9.0, + "description": "the llm re classifies moe layer from a title to a text node", + "source_ids": [ + 59 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: moe layer\nType: SECTION_TITLE" + }, + { + "src_entity_name": "p dec", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "p dec is used to guide the llm for the decomposition task", + "source_ids": [ + 101 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: p dec\nType: SOFTWARE" + }, + { + "src_entity_name": "p ext", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "p ext is used to guide the llm for the extraction task", + "source_ids": [ + 101 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: p ext\nType: SOFTWARE" + }, + { + "src_entity_name": "q", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 7.0, + "description": "q is the original user query that the llm processes", + "source_ids": [ + 101 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: q\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "prompt", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "prompts are used to guide the llm", + "source_ids": [ + 101 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: prompt\nType: SOFTWARE" + }, + { + "src_entity_name": "decomposition", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the llm performs the decomposition task", + "source_ids": [ + 101 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: decomposition\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "extraction", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the llm performs the extraction task", + "source_ids": [ + 101 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "human annotators", + "relation_name": "", + "weight": 8.0, + "description": "the llm generates questions which are then answered and refined by human annotators", + "source_ids": [ + 141 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: human annotators\nType: PERSON" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 6.0, + "description": "the llm s generated questions contribute to the statistics presented in table 4", + "source_ids": [ + 141 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: table 4\nType: TABLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "tables", + "relation_name": "", + "weight": 9.0, + "description": "the llm generates questions from tables", + "source_ids": [ + 141 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: tables\nType: TABLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "figures", + "relation_name": "", + "weight": 9.0, + "description": "the llm generates questions from figures", + "source_ids": [ + 141 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: figures\nType: IMAGE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "global level questions", + "relation_name": "", + "weight": 10.0, + "description": "the llm generates global level questions", + "source_ids": [ + 141 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: global level questions\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the qwen family includes llms used in the experiments", + "source_ids": [ + 238 + ], + "source": "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "llms", + "tgt_entity_name": "financial auditing", + "relation_name": "", + "weight": 8.0, + "description": "llms are applied in financial auditing but may miss domain knowledge", + "source_ids": [ + 14 + ], + "source": "Name: financial auditing\nType: TASK_OR_PROBLEM", + "target": "Name: llms\nType: TECHNOLOGY" + }, + { + "src_entity_name": "llms", + "tgt_entity_name": "legal compliance", + "relation_name": "", + "weight": 8.0, + "description": "llms are applied in legal compliance but may miss domain knowledge", + "source_ids": [ + 14 + ], + "source": "Name: legal compliance\nType: TASK_OR_PROBLEM", + "target": "Name: llms\nType: TECHNOLOGY" + }, + { + "src_entity_name": "llms", + "tgt_entity_name": "scientific discovery", + "relation_name": "", + "weight": 8.0, + "description": "llms are applied in scientific discovery but may miss domain knowledge", + "source_ids": [ + 14 + ], + "source": "Name: scientific discovery\nType: TASK_OR_PROBLEM", + "target": "Name: llms\nType: TECHNOLOGY" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "llms", + "relation_name": "", + "weight": 9.0, + "description": "rag is used to guide llms during response generation to address their limitations", + "source_ids": [ + 14 + ], + "source": "Name: llms\nType: TECHNOLOGY", + "target": "Name: retrieval augmented generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "rag", + "tgt_entity_name": "llms", + "relation_name": "", + "weight": 9.0, + "description": "rag is used to guide llms during response generation to address their limitations", + "source_ids": [ + 14 + ], + "source": "Name: llms\nType: TECHNOLOGY", + "target": "Name: rag\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "naive rag technique", + "tgt_entity_name": "llms", + "relation_name": "", + "weight": 10.0, + "description": "the naive rag technique mitigates the hallucination of llms", + "source_ids": [ + 33 + ], + "source": "Name: llms\nType: TECHNOLOGY", + "target": "Name: naive rag technique\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "llms", + "relation_name": "", + "weight": 8.0, + "description": "relying on llms for high accuracy judgments in er methods can lead to prohibitively slow and computationally expensive processes", + "source_ids": [ + 66 + ], + "source": "Name: llms\nType: TECHNOLOGY", + "target": "Name: er methods\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "enterprise scenarios", + "relation_name": "", + "weight": 8.0, + "description": "rag is widely adopted in real world enterprise scenarios", + "source_ids": [ + 14 + ], + "source": "Name: retrieval augmented generation\nType: METHOD_OR_TECHNIQUE", + "target": "Name: enterprise scenarios\nType: LOCATION" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "external sources", + "relation_name": "", + "weight": 9.0, + "description": "rag retrieves relevant domain knowledge from external sources", + "source_ids": [ + 14 + ], + "source": "Name: retrieval augmented generation\nType: METHOD_OR_TECHNIQUE", + "target": "Name: external sources\nType: LOCATION" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "response generation", + "relation_name": "", + "weight": 9.0, + "description": "rag is used to guide the llm during response generation", + "source_ids": [ + 14 + ], + "source": "Name: retrieval augmented generation\nType: METHOD_OR_TECHNIQUE", + "target": "Name: response generation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "domain knowledge", + "relation_name": "", + "weight": 9.0, + "description": "rag retrieves domain knowledge to address llm limitations", + "source_ids": [ + 14 + ], + "source": "Name: retrieval augmented generation\nType: METHOD_OR_TECHNIQUE", + "target": "Name: domain knowledge\nType: CONCEPT" + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 10.0, + "description": "g retriever utilizes the retrieval augmented generation method", + "source_ids": [ + 211 + ], + "source": "Name: retrieval augmented generation\nType: METHOD_OR_TECHNIQUE", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "section 3", + "tgt_entity_name": "rag", + "relation_name": "", + "weight": 10.0, + "description": "section 3 introduces the rag workflow", + "source_ids": [ + 29 + ], + "source": "Name: rag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: section 3\nType: SECTION_TITLE" + }, + { + "src_entity_name": "enterprise scenarios", + "tgt_entity_name": "technical handbooks", + "relation_name": "", + "weight": 9.0, + "description": "domain knowledge in enterprise scenarios is often stored in technical handbooks", + "source_ids": [ + 14 + ], + "source": "Name: enterprise scenarios\nType: LOCATION", + "target": "Name: technical handbooks\nType: PRODUCT" + }, + { + "src_entity_name": "enterprise scenarios", + "tgt_entity_name": "api reference manuals", + "relation_name": "", + "weight": 9.0, + "description": "domain knowledge in enterprise scenarios is often stored in api reference manuals", + "source_ids": [ + 14 + ], + "source": "Name: enterprise scenarios\nType: LOCATION", + "target": "Name: api reference manuals\nType: PRODUCT" + }, + { + "src_entity_name": "enterprise scenarios", + "tgt_entity_name": "operational guidebooks", + "relation_name": "", + "weight": 9.0, + "description": "domain knowledge in enterprise scenarios is often stored in operational guidebooks", + "source_ids": [ + 14 + ], + "source": "Name: enterprise scenarios\nType: LOCATION", + "target": "Name: operational guidebooks\nType: PRODUCT" + }, + { + "src_entity_name": "enterprise scenarios", + "tgt_entity_name": "long form documents", + "relation_name": "", + "weight": 9.0, + "description": "domain knowledge in enterprise scenarios is stored in long form documents", + "source_ids": [ + 14 + ], + "source": "Name: enterprise scenarios\nType: LOCATION", + "target": "Name: long form documents\nType: PRODUCT" + }, + { + "src_entity_name": "technical handbooks", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 7.0, + "description": "technical handbooks follow the structure of books", + "source_ids": [ + 14 + ], + "source": "Name: technical handbooks\nType: PRODUCT", + "target": "Name: books\nType: PRODUCT" + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "technical handbooks", + "relation_name": "", + "weight": 8.0, + "description": "the rag system is designed to handle qa over documents like technical handbooks", + "source_ids": [ + 14 + ], + "source": "Name: technical handbooks\nType: PRODUCT", + "target": "Name: rag system\nType: SOFTWARE" + }, + { + "src_entity_name": "api reference manuals", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 7.0, + "description": "api reference manuals follow the structure of books", + "source_ids": [ + 14 + ], + "source": "Name: api reference manuals\nType: PRODUCT", + "target": "Name: books\nType: PRODUCT" + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "api reference manuals", + "relation_name": "", + "weight": 8.0, + "description": "the rag system is designed to handle qa over documents like api reference manuals", + "source_ids": [ + 14 + ], + "source": "Name: api reference manuals\nType: PRODUCT", + "target": "Name: rag system\nType: SOFTWARE" + }, + { + "src_entity_name": "operational guidebooks", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 7.0, + "description": "operational guidebooks follow the structure of books", + "source_ids": [ + 14 + ], + "source": "Name: operational guidebooks\nType: PRODUCT", + "target": "Name: books\nType: PRODUCT" + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "operational guidebooks", + "relation_name": "", + "weight": 8.0, + "description": "the rag system is designed to handle qa over documents like operational guidebooks", + "source_ids": [ + 14 + ], + "source": "Name: operational guidebooks\nType: PRODUCT", + "target": "Name: rag system\nType: SOFTWARE" + }, + { + "src_entity_name": "books", + "tgt_entity_name": "tables of contents", + "relation_name": "", + "weight": 8.0, + "description": "books are characterized by explicit tables of contents", + "source_ids": [ + 14 + ], + "source": "Name: books\nType: PRODUCT", + "target": "Name: tables of contents\nType: PRODUCT" + }, + { + "src_entity_name": "books", + "tgt_entity_name": "nested chapters", + "relation_name": "", + "weight": 8.0, + "description": "books are characterized by nested chapters", + "source_ids": [ + 14 + ], + "source": "Name: books\nType: PRODUCT", + "target": "Name: nested chapters\nType: PRODUCT" + }, + { + "src_entity_name": "books", + "tgt_entity_name": "multi level sections", + "relation_name": "", + "weight": 8.0, + "description": "books are characterized by multi level sections", + "source_ids": [ + 14 + ], + "source": "Name: books\nType: PRODUCT", + "target": "Name: multi level sections\nType: PRODUCT" + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "qa", + "relation_name": "", + "weight": 10.0, + "description": "the rag system is designed for qa over long and highly structured documents", + "source_ids": [ + 14 + ], + "source": "Name: rag system\nType: SOFTWARE", + "target": "Name: qa\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "this paper", + "tgt_entity_name": "rag system", + "relation_name": "", + "weight": 10.0, + "description": "this paper aims to design an effective rag system", + "source_ids": [ + 14 + ], + "source": "Name: rag system\nType: SOFTWARE", + "target": "Name: this paper\nType: BOOK" + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "long form documents", + "relation_name": "", + "weight": 9.0, + "description": "the rag system is designed for qa over long and highly structured documents", + "source_ids": [ + 14 + ], + "source": "Name: rag system\nType: SOFTWARE", + "target": "Name: long form documents\nType: PRODUCT" + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 9.0, + "description": "exact match is a metric used to evaluate the qa task", + "source_ids": [ + 144 + ], + "source": "Name: qa\nType: TASK_OR_PROBLEM", + "target": "Name: exact match\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 9.0, + "description": "accuracy is a metric used to evaluate the qa task", + "source_ids": [ + 144 + ], + "source": "Name: qa\nType: TASK_OR_PROBLEM", + "target": "Name: accuracy\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "token based f1 score", + "relation_name": "", + "weight": 9.0, + "description": "token based f1 score is a metric used to evaluate the qa task", + "source_ids": [ + 144 + ], + "source": "Name: qa\nType: TASK_OR_PROBLEM", + "target": "Name: token based f1 score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "em", + "relation_name": "", + "weight": 9.0, + "description": "em is used to measure the performance of the qa task", + "source_ids": [ + 170 + ], + "source": "Name: qa\nType: TASK_OR_PROBLEM", + "target": "Name: em\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 9.0, + "description": "f1 is used to measure the performance of the qa task", + "source_ids": [ + 170 + ], + "source": "Name: qa\nType: TASK_OR_PROBLEM", + "target": "Name: f1\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "qa", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 presents the performance breakdown specifically for the qa task", + "source_ids": [ + 177 + ], + "source": "Name: qa\nType: TASK_OR_PROBLEM", + "target": "Name: figure 7\nType: IMAGE" + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 8.0, + "description": "the qa task performance is analyzed across different query types", + "source_ids": [ + 177 + ], + "source": "Name: qa\nType: TASK_OR_PROBLEM", + "target": "Name: query types\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "long form documents", + "tgt_entity_name": "intricate layouts", + "relation_name": "", + "weight": 8.0, + "description": "long form documents are characterized by intricate layouts", + "source_ids": [ + 14 + ], + "source": "Name: long form documents\nType: PRODUCT", + "target": "Name: intricate layouts\nType: SHAPE" + }, + { + "src_entity_name": "long form documents", + "tgt_entity_name": "logical hierarchies", + "relation_name": "", + "weight": 8.0, + "description": "long form documents are characterized by rigorous logical hierarchies", + "source_ids": [ + 14 + ], + "source": "Name: long form documents\nType: PRODUCT", + "target": "Name: logical hierarchies\nType: CONCEPT" + }, + { + "src_entity_name": "rag", + "tgt_entity_name": "ocr", + "relation_name": "", + "weight": 8.0, + "description": "rag approaches generally rely on ocr to convert documents into plain text before application", + "source_ids": [ + 15 + ], + "source": "Name: rag\nType: TECHNOLOGY", + "target": "Name: ocr\nType: TECHNOLOGY" + }, + { + "src_entity_name": "rag", + "tgt_entity_name": "graph based rag", + "relation_name": "", + "weight": 9.0, + "description": "state of the art rag methods increasingly adopt graph based rag approaches", + "source_ids": [ + 15 + ], + "source": "Name: rag\nType: TECHNOLOGY", + "target": "Name: graph based rag\nType: TECHNOLOGY" + }, + { + "src_entity_name": "rag", + "tgt_entity_name": "document level qa", + "relation_name": "", + "weight": 10.0, + "description": "rag approaches are designed for document level qa tasks", + "source_ids": [ + 15 + ], + "source": "Name: rag\nType: TECHNOLOGY", + "target": "Name: document level qa\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "ocr", + "tgt_entity_name": "plain text", + "relation_name": "", + "weight": 10.0, + "description": "ocr converts documents into plain text", + "source_ids": [ + 15 + ], + "source": "Name: ocr\nType: TECHNOLOGY", + "target": "Name: plain text\nType: MATERIAL" + }, + { + "src_entity_name": "text based rag method", + "tgt_entity_name": "graph based rag", + "relation_name": "", + "weight": 9.0, + "description": "graph based rag is a specific type of text based rag method", + "source_ids": [ + 15 + ], + "source": "Name: graph based rag\nType: TECHNOLOGY", + "target": "Name: text based rag method\nType: TECHNOLOGY" + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "graph data", + "relation_name": "", + "weight": 9.0, + "description": "graph based rag uses graph data as an external knowledge source", + "source_ids": [ + 15 + ], + "source": "Name: graph based rag\nType: TECHNOLOGY", + "target": "Name: graph data\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "raptor", + "relation_name": "", + "weight": 9.0, + "description": "raptor is selected as a specific instance of graph based rag methods", + "source_ids": [ + 147 + ], + "source": "Name: graph based rag\nType: TECHNOLOGY", + "target": "Name: raptor\nType: TECHNOLOGY" + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "graphrag", + "relation_name": "", + "weight": 9.0, + "description": "graphrag is selected as a specific instance of graph based rag methods", + "source_ids": [ + 147 + ], + "source": "Name: graph based rag\nType: TECHNOLOGY", + "target": "Name: graphrag\nType: TECHNOLOGY" + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "documents", + "relation_name": "", + "weight": 9.0, + "description": "graph based rag extracts textual content from documents", + "source_ids": [ + 147 + ], + "source": "Name: graph based rag\nType: TECHNOLOGY", + "target": "Name: documents\nType: PRODUCT" + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "graph data", + "relation_name": "", + "weight": 9.0, + "description": "graph based rag leverages graph data during retrieval", + "source_ids": [ + 147 + ], + "source": "Name: graph based rag\nType: TECHNOLOGY", + "target": "Name: graph data\nType: TECHNOLOGY" + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 8.0, + "description": "graph based rag performs retrieval as part of its process", + "source_ids": [ + 147 + ], + "source": "Name: graph based rag\nType: TECHNOLOGY", + "target": "Name: retrieval\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "leiden community detection algorithm", + "relation_name": "", + "weight": 10.0, + "description": "graphrag applies the leiden community detection algorithm to obtain hierarchical clusters", + "source_ids": [ + 15 + ], + "source": "Name: graphrag\nType: PRODUCT", + "target": "Name: leiden community detection algorithm\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "table 1", + "tgt_entity_name": "graphrag", + "relation_name": "", + "weight": 9.0, + "description": "table 1 lists graphrag as a representative method", + "source_ids": [ + 15 + ], + "source": "Name: graphrag\nType: PRODUCT", + "target": "Name: table 1\nType: TABLE" + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "knowledge graph", + "relation_name": "", + "weight": 10.0, + "description": "graphrag constructs a knowledge graph from a textual corpus", + "source_ids": [ + 15 + ], + "source": "Name: graphrag\nType: PRODUCT", + "target": "Name: knowledge graph\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "textual corpus", + "relation_name": "", + "weight": 9.0, + "description": "graphrag uses a textual corpus as the source for constructing a knowledge graph", + "source_ids": [ + 15 + ], + "source": "Name: graphrag\nType: PRODUCT", + "target": "Name: textual corpus\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "summaries", + "relation_name": "", + "weight": 9.0, + "description": "graphrag generates summaries for each community", + "source_ids": [ + 15 + ], + "source": "Name: graphrag\nType: PRODUCT", + "target": "Name: summaries\nType: PRODUCT" + }, + { + "src_entity_name": "table 1", + "tgt_entity_name": "raptor", + "relation_name": "", + "weight": 9.0, + "description": "table 1 lists raptor as a representative method", + "source_ids": [ + 15 + ], + "source": "Name: raptor\nType: PRODUCT", + "target": "Name: table 1\nType: TABLE" + }, + { + "src_entity_name": "raptor", + "tgt_entity_name": "recursive tree structure", + "relation_name": "", + "weight": 10.0, + "description": "raptor builds a recursive tree structure", + "source_ids": [ + 15 + ], + "source": "Name: raptor\nType: PRODUCT", + "target": "Name: recursive tree structure\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "raptor", + "tgt_entity_name": "document chunks", + "relation_name": "", + "weight": 10.0, + "description": "raptor iteratively clusters document chunks", + "source_ids": [ + 15 + ], + "source": "Name: raptor\nType: PRODUCT", + "target": "Name: document chunks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "raptor", + "tgt_entity_name": "fine grained semantic information", + "relation_name": "", + "weight": 9.0, + "description": "raptor captures fine grained semantic information across the corpus", + "source_ids": [ + 15 + ], + "source": "Name: raptor\nType: PRODUCT", + "target": "Name: fine grained semantic information\nType: CONCEPT" + }, + { + "src_entity_name": "raptor", + "tgt_entity_name": "high level semantic information", + "relation_name": "", + "weight": 9.0, + "description": "raptor captures high level semantic information across the corpus", + "source_ids": [ + 15 + ], + "source": "Name: raptor\nType: PRODUCT", + "target": "Name: high level semantic information\nType: CONCEPT" + }, + { + "src_entity_name": "leiden community detection algorithm", + "tgt_entity_name": "hierarchical clusters", + "relation_name": "", + "weight": 10.0, + "description": "the leiden community detection algorithm produces hierarchical clusters", + "source_ids": [ + 15 + ], + "source": "Name: leiden community detection algorithm\nType: METHOD_OR_TECHNIQUE", + "target": "Name: hierarchical clusters\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "table 1", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Table 1", + "source_ids": [ + 182 + ], + "source": "Name: table 1\nType: TABLE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 10.0, + "description": "The Knowledge Graph is the primary object being constructed in this section.", + "source_ids": [ + 63 + ], + "source": "Name: knowledge graph\nType: DATASET_OR_CORPUS", + "target": "Name: 4.3.1 kg construction\nType: SECTION_TITLE" + }, + { + "src_entity_name": "table: cref='#/texts/17'...", + "tgt_entity_name": "texts reference", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/17'...' contains data about 'Texts Reference'.", + "source_ids": [ + 17 + ], + "source": "Name: table: cref='#/texts/17'...\nType: TABLE", + "target": "Name: texts reference\nType: SECTION_TITLE" + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "paragraphs", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation parses documents into paragraphs to preserve their structure", + "source_ids": [ + 18 + ], + "source": "Name: layout aware segmentation\nType: TASK_OR_PROBLEM", + "target": "Name: paragraphs\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "tables", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation parses documents into tables to preserve their structure", + "source_ids": [ + 18 + ], + "source": "Name: layout aware segmentation\nType: TASK_OR_PROBLEM", + "target": "Name: tables\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "figures", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation parses documents into figures to preserve their structure", + "source_ids": [ + 18 + ], + "source": "Name: layout aware segmentation\nType: TASK_OR_PROBLEM", + "target": "Name: figures\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "equations", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation parses documents into equations to preserve their structure", + "source_ids": [ + 18 + ], + "source": "Name: layout aware segmentation\nType: TASK_OR_PROBLEM", + "target": "Name: equations\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "multimodal retrieval", + "relation_name": "", + "weight": 8.0, + "description": "multimodal retrieval is a typical approach applied to blocks generated by layout aware segmentation", + "source_ids": [ + 18 + ], + "source": "Name: layout aware segmentation\nType: TASK_OR_PROBLEM", + "target": "Name: multimodal retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "layout aware segmentation", + "relation_name": "", + "weight": 9.0, + "description": "docetl is a state of the art method within the category of layout aware segmentation", + "source_ids": [ + 18 + ], + "source": "Name: layout aware segmentation\nType: TASK_OR_PROBLEM", + "target": "Name: docetl\nType: SOFTWARE" + }, + { + "src_entity_name": "second paradigm", + "tgt_entity_name": "layout aware segmentation", + "relation_name": "", + "weight": 10.0, + "description": "the second paradigm is identified as layout aware segmentation in the text", + "source_ids": [ + 18 + ], + "source": "Name: layout aware segmentation\nType: TASK_OR_PROBLEM", + "target": "Name: second paradigm\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "document native structural information", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation retains document native structural information", + "source_ids": [ + 18 + ], + "source": "Name: layout aware segmentation\nType: TASK_OR_PROBLEM", + "target": "Name: document native structural information\nType: CONCEPT" + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "declarative interface", + "relation_name": "", + "weight": 10.0, + "description": "docetl provides a declarative interface for users", + "source_ids": [ + 18 + ], + "source": "Name: docetl\nType: SOFTWARE", + "target": "Name: declarative interface\nType: SOFTWARE" + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "docetl is an llm based system for optimizing information extraction tasks", + "source_ids": [ + 32 + ], + "source": "Name: docetl\nType: SOFTWARE", + "target": "Name: llm\nType: TECHNOLOGY" + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "agentic framework", + "relation_name": "", + "weight": 10.0, + "description": "docetl introduces an agentic framework", + "source_ids": [ + 32 + ], + "source": "Name: docetl\nType: SOFTWARE", + "target": "Name: agentic framework\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "information extraction", + "relation_name": "", + "weight": 10.0, + "description": "docetl is designed to optimize complex information extraction tasks", + "source_ids": [ + 32 + ], + "source": "Name: docetl\nType: SOFTWARE", + "target": "Name: information extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "layoutsegmentedrag", + "tgt_entity_name": "docetl", + "relation_name": "", + "weight": 9.0, + "description": "docetl is included as a method within the layoutsegmentedrag category", + "source_ids": [ + 148 + ], + "source": "Name: docetl\nType: SOFTWARE", + "target": "Name: layoutsegmentedrag\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "page 47", + "relation_name": "", + "weight": 5.0, + "description": "docetl is referenced in citation page 47", + "source_ids": [ + 148 + ], + "source": "Name: docetl\nType: SOFTWARE", + "target": "Name: page 47\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "docetl", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to DocETL", + "source_ids": [ + 159 + ], + "source": "Name: docetl\nType: SOFTWARE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "multimodal retrieval", + "tgt_entity_name": "relevant content", + "relation_name": "", + "weight": 9.0, + "description": "multimodal retrieval is used to obtain relevant content", + "source_ids": [ + 18 + ], + "source": "Name: multimodal retrieval\nType: METHOD_OR_TECHNIQUE", + "target": "Name: relevant content\nType: CONCEPT" + }, + { + "src_entity_name": "multimodal retrieval", + "tgt_entity_name": "queries", + "relation_name": "", + "weight": 8.0, + "description": "multimodal retrieval is applied to answer queries", + "source_ids": [ + 18 + ], + "source": "Name: multimodal retrieval\nType: METHOD_OR_TECHNIQUE", + "target": "Name: queries\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "first paradigm", + "tgt_entity_name": "fixed chunk size", + "relation_name": "", + "weight": 9.0, + "description": "the first paradigm uses a fixed chunk size which leads to fragmented information", + "source_ids": [ + 18 + ], + "source": "Name: first paradigm\nType: TASK_OR_PROBLEM", + "target": "Name: fixed chunk size\nType: MEASUREMENT" + }, + { + "src_entity_name": "declarative interface", + "tgt_entity_name": "processing pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the declarative interface allows users to define processing pipelines", + "source_ids": [ + 18 + ], + "source": "Name: declarative interface\nType: SOFTWARE", + "target": "Name: processing pipelines\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "processing pipelines", + "tgt_entity_name": "llm powered operations", + "relation_name": "", + "weight": 9.0, + "description": "processing pipelines consist of llm powered operations", + "source_ids": [ + 18 + ], + "source": "Name: processing pipelines\nType: TASK_OR_PROBLEM", + "target": "Name: llm powered operations\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "processing pipelines", + "tgt_entity_name": "task specific optimizations", + "relation_name": "", + "weight": 9.0, + "description": "processing pipelines include task specific optimizations", + "source_ids": [ + 18 + ], + "source": "Name: processing pipelines\nType: TASK_OR_PROBLEM", + "target": "Name: task specific optimizations\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "queries", + "relation_name": "", + "weight": 9.0, + "description": "the agent based retrieval approach dynamically classifies queries", + "source_ids": [ + 26 + ], + "source": "Name: queries\nType: TASK_OR_PROBLEM", + "target": "Name: agent based retrieval\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "text based approaches", + "tgt_entity_name": "l1", + "relation_name": "", + "weight": 9.0, + "description": "text based approaches suffer from the limitation l1", + "source_ids": [ + 19 + ], + "source": "Name: l1\nType: TASK_OR_PROBLEM", + "target": "Name: text based approaches\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "l1", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "l1 concerns the failure to capture the deep connection of document structure and semantics", + "source_ids": [ + 19 + ], + "source": "Name: l1\nType: TASK_OR_PROBLEM", + "target": "Name: document\nType: PRODUCT" + }, + { + "src_entity_name": "l2", + "tgt_entity_name": "static or manually predefined workflows", + "relation_name": "", + "weight": 9.0, + "description": "l2 is caused by the application of static or manually predefined workflows to diverse query needs", + "source_ids": [ + 19 + ], + "source": "Name: l2\nType: TASK_OR_PROBLEM", + "target": "Name: static or manually predefined workflows\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "layout segmented methods", + "tgt_entity_name": "l2", + "relation_name": "", + "weight": 8.0, + "description": "layout segmented methods contribute to the limitation l2 by failing to capture relationships between blocks", + "source_ids": [ + 19 + ], + "source": "Name: l2\nType: TASK_OR_PROBLEM", + "target": "Name: layout segmented methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "text based approaches", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "text based approaches analyze the document but fail to capture its structural layout", + "source_ids": [ + 19 + ], + "source": "Name: text based approaches\nType: METHOD_OR_TECHNIQUE", + "target": "Name: document\nType: PRODUCT" + }, + { + "src_entity_name": "layout segmented methods", + "tgt_entity_name": "hierarchical blocks", + "relation_name": "", + "weight": 8.0, + "description": "layout segmented methods preserve hierarchical blocks but fail to capture relationships between them", + "source_ids": [ + 19 + ], + "source": "Name: layout segmented methods\nType: METHOD_OR_TECHNIQUE", + "target": "Name: hierarchical blocks\nType: CONCEPT" + }, + { + "src_entity_name": "layout segmented methods", + "tgt_entity_name": "multi hop reasoning", + "relation_name": "", + "weight": 8.0, + "description": "layout segmented methods limit the capability for multi hop reasoning across blocks", + "source_ids": [ + 19 + ], + "source": "Name: layout segmented methods\nType: METHOD_OR_TECHNIQUE", + "target": "Name: multi hop reasoning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "real world qa scenarios", + "tgt_entity_name": "static or manually predefined workflows", + "relation_name": "", + "weight": 8.0, + "description": "real world qa scenarios involve diverse queries that make static or manually predefined workflows inefficient", + "source_ids": [ + 19 + ], + "source": "Name: real world qa scenarios\nType: EVENT", + "target": "Name: static or manually predefined workflows\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "user queries", + "tgt_entity_name": "real world qa scenarios", + "relation_name": "", + "weight": 9.0, + "description": "user queries are the inputs found within real world qa scenarios", + "source_ids": [ + 19 + ], + "source": "Name: real world qa scenarios\nType: EVENT", + "target": "Name: user queries\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "static or manually predefined workflows", + "tgt_entity_name": "overall performance", + "relation_name": "", + "weight": 7.0, + "description": "applying static workflows to diverse needs affects the overall performance negatively", + "source_ids": [ + 19 + ], + "source": "Name: static or manually predefined workflows\nType: METHOD_OR_TECHNIQUE", + "target": "Name: overall performance\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "complex queries", + "tgt_entity_name": "question decomposition", + "relation_name": "", + "weight": 7.0, + "description": "complex queries often require question decomposition", + "source_ids": [ + 19 + ], + "source": "Name: question decomposition\nType: METHOD_OR_TECHNIQUE", + "target": "Name: complex queries\nType: UNKNOWN" + }, + { + "src_entity_name": "simple queries", + "tgt_entity_name": "question decomposition", + "relation_name": "", + "weight": 7.0, + "description": "simple queries do not require question decomposition", + "source_ids": [ + 19 + ], + "source": "Name: question decomposition\nType: METHOD_OR_TECHNIQUE", + "target": "Name: simple queries\nType: UNKNOWN" + }, + { + "src_entity_name": "method s", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 10.0, + "description": "method s maps a structured document to a final answer", + "source_ids": [ + 37 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: method s\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "document", + "tgt_entity_name": "pages", + "relation_name": "", + "weight": 10.0, + "description": "a document is represented as a sequence of pages", + "source_ids": [ + 37 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: pages\nType: MEASUREMENT" + }, + { + "src_entity_name": "document", + "tgt_entity_name": "content blocks", + "relation_name": "", + "weight": 10.0, + "description": "pages in a document collectively contain a sequence of content blocks", + "source_ids": [ + 37 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: content blocks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "document", + "tgt_entity_name": "n", + "relation_name": "", + "weight": 9.0, + "description": "n defines the sequence length of pages in the document", + "source_ids": [ + 37 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: n\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "document", + "tgt_entity_name": "m", + "relation_name": "", + "weight": 9.0, + "description": "m defines the sequence length of content blocks in the document", + "source_ids": [ + 37 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: m\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "document", + "tgt_entity_name": "p", + "relation_name": "", + "weight": 9.0, + "description": "p represents an individual page within the document sequence", + "source_ids": [ + 37 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: p\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "document", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 9.0, + "description": "b represents an individual content block within the document", + "source_ids": [ + 37 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: b\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "document", + "tgt_entity_name": "d", + "relation_name": "", + "weight": 10.0, + "description": "d is the variable symbol for the document", + "source_ids": [ + 37 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: d\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "bookindex is designed to operate on complex documents to capture their internal structures", + "source_ids": [ + 47 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: bookindex\nType: PRODUCT" + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "the tree structure is derived from the document s explicit logical hierarchy", + "source_ids": [ + 51 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: tree structure\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "the knowledge graph captures entities and relations scattered throughout the document", + "source_ids": [ + 51 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: knowledge graph\nType: SOFTWARE" + }, + { + "src_entity_name": "titles", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "titles are part of the document s explicit logical hierarchy", + "source_ids": [ + 51 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: titles\nType: SECTION_TITLE" + }, + { + "src_entity_name": "sections", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "sections are part of the document s explicit logical hierarchy", + "source_ids": [ + 51 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: sections\nType: SECTION_TITLE" + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "tables are part of the document s explicit logical hierarchy", + "source_ids": [ + 51 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: tables\nType: TABLE" + }, + { + "src_entity_name": "tree component", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "the tree component organizes the document into a hierarchical structure", + "source_ids": [ + 52 + ], + "source": "Name: document\nType: PRODUCT", + "target": "Name: tree component\nType: SOFTWARE" + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "section", + "relation_name": "", + "weight": 9.0, + "description": "tables are nested within a specific section of the document", + "source_ids": [ + 19 + ], + "source": "Name: tables\nType: TABLE", + "target": "Name: section\nType: SECTION_TITLE" + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "tables", + "relation_name": "", + "weight": 9.0, + "description": "tables are examples of nodes included in the tree structure", + "source_ids": [ + 51 + ], + "source": "Name: tables\nType: TABLE", + "target": "Name: tree structure\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "images", + "relation_name": "", + "weight": 6.0, + "description": "both are types of pdf blocks manually labeled to establish ground truth", + "source_ids": [ + 144 + ], + "source": "Name: tables\nType: TABLE", + "target": "Name: images\nType: TABLE" + }, + { + "src_entity_name": "section", + "tgt_entity_name": "research problem", + "relation_name": "", + "weight": 9.0, + "description": "the section is the location where the research problem is formalized", + "source_ids": [ + 35 + ], + "source": "Name: section\nType: SECTION_TITLE", + "target": "Name: research problem\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "section", + "tgt_entity_name": "general workflow", + "relation_name": "", + "weight": 9.0, + "description": "the section is the location where the general workflow is reviewed", + "source_ids": [ + 35 + ], + "source": "Name: section\nType: SECTION_TITLE", + "target": "Name: general workflow\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "filters", + "tgt_entity_name": "section", + "relation_name": "", + "weight": 8.0, + "description": "filters can be of type section to target structural parts like chapters or appendices", + "source_ids": [ + 258 + ], + "source": "Name: section\nType: SECTION_TITLE", + "target": "Name: filters\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "section", + "tgt_entity_name": "chapter", + "relation_name": "", + "weight": 9.0, + "description": "chapters are examples of sections", + "source_ids": [ + 258 + ], + "source": "Name: section\nType: SECTION_TITLE", + "target": "Name: chapter\nType: SECTION_TITLE" + }, + { + "src_entity_name": "section", + "tgt_entity_name": "appendices", + "relation_name": "", + "weight": 9.0, + "description": "appendices are examples of sections", + "source_ids": [ + 258 + ], + "source": "Name: section\nType: SECTION_TITLE", + "target": "Name: appendices\nType: SECTION_TITLE" + }, + { + "src_entity_name": "section", + "tgt_entity_name": "references", + "relation_name": "", + "weight": 9.0, + "description": "references are examples of sections", + "source_ids": [ + 258 + ], + "source": "Name: section\nType: SECTION_TITLE", + "target": "Name: references\nType: SECTION_TITLE" + }, + { + "src_entity_name": "user queries", + "tgt_entity_name": "keyword lookups", + "relation_name": "", + "weight": 8.0, + "description": "keyword lookups are a type of user query mentioned in the text", + "source_ids": [ + 19 + ], + "source": "Name: user queries\nType: TASK_OR_PROBLEM", + "target": "Name: keyword lookups\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "user queries", + "tgt_entity_name": "multi hop questions", + "relation_name": "", + "weight": 8.0, + "description": "multi hop questions are a type of user query mentioned in the text", + "source_ids": [ + 19 + ], + "source": "Name: user queries\nType: TASK_OR_PROBLEM", + "target": "Name: multi hop questions\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "user queries", + "tgt_entity_name": "retrieval workflows", + "relation_name": "", + "weight": 9.0, + "description": "user queries are classified to dynamically generate tailored retrieval workflows", + "source_ids": [ + 22 + ], + "source": "Name: user queries\nType: TASK_OR_PROBLEM", + "target": "Name: retrieval workflows\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "user queries", + "relation_name": "", + "weight": 10.0, + "description": "the agent classifies user queries based on their intent and complexity", + "source_ids": [ + 22 + ], + "source": "Name: user queries\nType: TASK_OR_PROBLEM", + "target": "Name: agent\nType: UNKNOWN" + }, + { + "src_entity_name": "multi hop questions", + "tgt_entity_name": "evidence", + "relation_name": "", + "weight": 9.0, + "description": "multi hop questions require synthesizing evidence scattered across the document", + "source_ids": [ + 19 + ], + "source": "Name: multi hop questions\nType: TASK_OR_PROBLEM", + "target": "Name: evidence\nType: CONCEPT" + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "evidence", + "relation_name": "", + "weight": 9.0, + "description": "the reasoner locates highly relevant evidence", + "source_ids": [ + 22 + ], + "source": "Name: evidence\nType: CONCEPT", + "target": "Name: reasoner\nType: SOFTWARE" + }, + { + "src_entity_name": "multi hop reasoning", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 10.0, + "description": "multi hop reasoning relies on a high quality kg for its execution", + "source_ids": [ + 21 + ], + "source": "Name: multi hop reasoning\nType: TASK_OR_PROBLEM", + "target": "Name: kg\nType: CONCEPT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is built upon the document native bookindex", + "source_ids": [ + 20 + ], + "source": "Name: bookrag\nType: TECHNOLOGY", + "target": "Name: bookindex\nType: PRODUCT" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is designed specifically for document qa tasks", + "source_ids": [ + 20 + ], + "source": "Name: bookrag\nType: TECHNOLOGY", + "target": "Name: document qa tasks\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "relation", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is designed to capture the deep connection of the relation in the document", + "source_ids": [ + 20 + ], + "source": "Name: bookrag\nType: TECHNOLOGY", + "target": "Name: relation\nType: CONCEPT" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "hierarchical tree structure", + "relation_name": "", + "weight": 9.0, + "description": "bookindex organizes information using a hierarchical tree structure to preserve logical hierarchy", + "source_ids": [ + 20 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: hierarchical tree structure\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "bookindex constructs a kg to capture intricate relations within document blocks", + "source_ids": [ + 20 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: kg\nType: TECHNOLOGY" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "parsed content blocks", + "relation_name": "", + "weight": 9.0, + "description": "bookindex organizes parsed content blocks into a hierarchical tree structure", + "source_ids": [ + 20 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: parsed content blocks\nType: MATERIAL" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 8.0, + "description": "the system builds upon bookindex to implement an agent that uses selector for retrieval workflows", + "source_ids": [ + 22 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: selector\nType: SOFTWARE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 8.0, + "description": "the system builds upon bookindex to implement an agent that uses reasoner for retrieval workflows", + "source_ids": [ + 22 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: reasoner\nType: SOFTWARE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "hierarchical tree", + "relation_name": "", + "weight": 8.0, + "description": "the bookindex is constructed using a hierarchical tree of document layout blocks", + "source_ids": [ + 25 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: hierarchical tree\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 8.0, + "description": "the bookindex is constructed using a kg storing fine grained entity relations", + "source_ids": [ + 25 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: kg\nType: SOFTWARE" + }, + { + "src_entity_name": "section 4", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "section 4 presents the structure and construction of bookindex", + "source_ids": [ + 29 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: section 4\nType: SECTION_TITLE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "tree construction", + "relation_name": "", + "weight": 9.0, + "description": "bookindex utilizes tree construction as its first stage to parse document layout and establish hierarchical nodes", + "source_ids": [ + 47 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: tree construction\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "graph construction", + "relation_name": "", + "weight": 9.0, + "description": "bookindex utilizes graph construction as its second stage to extract and refine entity knowledge", + "source_ids": [ + 47 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: graph construction\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "logical hierarchy", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is explicitly designed to capture the explicit logical hierarchy found in documents", + "source_ids": [ + 47 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: logical hierarchy\nType: CONCEPT" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "entity relations", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is explicitly designed to capture the intricate entity relations found in documents", + "source_ids": [ + 47 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: entity relations\nType: CONCEPT" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to BookIndex", + "source_ids": [ + 49 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "tree structure", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is defined as a triplet that includes the tree structure as one of its components", + "source_ids": [ + 51 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: tree structure\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "knowledge graph", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is defined as a triplet that includes the knowledge graph as one of its components", + "source_ids": [ + 51 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: knowledge graph\nType: SOFTWARE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "graph tree link", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is defined as a triplet that includes the graph tree link as one of its components", + "source_ids": [ + 51 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: graph tree link\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "", + "relation_name": "", + "weight": 10.0, + "description": "is the first component of the bookindex triplet definition", + "source_ids": [ + 51 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: \nType: UNKNOWN" + }, + { + "src_entity_name": "figure 2", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "figure 2 provides an example of the bookindex", + "source_ids": [ + 52 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: figure 2\nType: IMAGE" + }, + { + "src_entity_name": "tree component", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "the tree component is a part of the bookindex", + "source_ids": [ + 52 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: tree component\nType: SOFTWARE" + }, + { + "src_entity_name": "graph component", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "the graph component is a part of the bookindex", + "source_ids": [ + 52 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: graph component\nType: SOFTWARE" + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "gt link is formalized to complete the bookindex", + "source_ids": [ + 77 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: gt link\nType: TECHNOLOGY" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 7.0, + "description": "g is a component of the bookindex structure b", + "source_ids": [ + 77 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: g\nType: CONCEPT" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 7.0, + "description": "t is a component of the bookindex structure b", + "source_ids": [ + 77 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: t\nType: CONCEPT" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "m", + "relation_name": "", + "weight": 7.0, + "description": "m is a component of the bookindex structure b", + "source_ids": [ + 77 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: m\nType: UNKNOWN" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "v i", + "relation_name": "", + "weight": 6.0, + "description": "the bookindex structure b involves the recording of origin nodes for entities like v i", + "source_ids": [ + 77 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: v i\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookindex operators are designed specifically for the bookindex system", + "source_ids": [ + 97 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: bookindex operators\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "selector operators filter content ranges directly from the bookindex", + "source_ids": [ + 102 + ], + "source": "Name: bookindex\nType: PRODUCT", + "target": "Name: selector\nType: TECHNOLOGY" + }, + { + "src_entity_name": "document qa tasks", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 7.0, + "description": "accuracy is measured specifically on document qa tasks", + "source_ids": [ + 137 + ], + "source": "Name: document qa tasks\nType: TASK_OR_PROBLEM", + "target": "Name: accuracy\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "hierarchical tree structure", + "tgt_entity_name": "table of contents", + "relation_name": "", + "weight": 8.0, + "description": "the hierarchical tree structure serves the role of the document s table of contents", + "source_ids": [ + 20 + ], + "source": "Name: hierarchical tree structure\nType: METHOD_OR_TECHNIQUE", + "target": "Name: table of contents\nType: PRODUCT" + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "hierarchical tree structure", + "relation_name": "", + "weight": 8.0, + "description": "the kg entities are mapped to their corresponding tree nodes to unify the two structures", + "source_ids": [ + 20 + ], + "source": "Name: hierarchical tree structure\nType: METHOD_OR_TECHNIQUE", + "target": "Name: kg\nType: TECHNOLOGY" + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "fine grained entities", + "relation_name": "", + "weight": 9.0, + "description": "the kg is constructed containing fine grained entities to capture intricate relations", + "source_ids": [ + 20 + ], + "source": "Name: kg\nType: TECHNOLOGY", + "target": "Name: fine grained entities\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "tree nodes", + "relation_name": "", + "weight": 9.0, + "description": "kg entities are mapped to their corresponding tree nodes to unify the structures", + "source_ids": [ + 20 + ], + "source": "Name: kg\nType: TECHNOLOGY", + "target": "Name: tree nodes\nType: PRODUCT" + }, + { + "src_entity_name": "parsed content blocks", + "tgt_entity_name": "tree nodes", + "relation_name": "", + "weight": 7.0, + "description": "parsed content blocks are organized into the hierarchical tree structure which consists of tree nodes", + "source_ids": [ + 20 + ], + "source": "Name: parsed content blocks\nType: MATERIAL", + "target": "Name: tree nodes\nType: PRODUCT" + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "gradient based entity resolution method", + "relation_name": "", + "weight": 9.0, + "description": "the gradient based entity resolution method is proposed to ensure the high quality of the kg by resolving entity ambiguity", + "source_ids": [ + 21 + ], + "source": "Name: kg\nType: CONCEPT", + "target": "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "entity ambiguity", + "relation_name": "", + "weight": 9.0, + "description": "entity ambiguity compromises the quality of the kg", + "source_ids": [ + 21 + ], + "source": "Name: kg\nType: CONCEPT", + "target": "Name: entity ambiguity\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "large language model", + "relation_name": "", + "weight": 8.0, + "description": "llm and large language model are cited as examples of distinct entities that cause ambiguity in the kg", + "source_ids": [ + 21 + ], + "source": "Name: llm\nType: PRODUCT", + "target": "Name: large language model\nType: PRODUCT" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "entity ambiguity", + "relation_name": "", + "weight": 7.0, + "description": "llm is an example of a name that contributes to entity ambiguity", + "source_ids": [ + 21 + ], + "source": "Name: llm\nType: PRODUCT", + "target": "Name: entity ambiguity\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "large language model", + "tgt_entity_name": "entity ambiguity", + "relation_name": "", + "weight": 7.0, + "description": "large language model is an example of a name that contributes to entity ambiguity", + "source_ids": [ + 21 + ], + "source": "Name: large language model\nType: PRODUCT", + "target": "Name: entity ambiguity\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "similarity distribution", + "relation_name": "", + "weight": 9.0, + "description": "the method analyzes the similarity distribution of candidate entities to function", + "source_ids": [ + 21 + ], + "source": "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: similarity distribution\nType: CONCEPT" + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "candidate entities", + "relation_name": "", + "weight": 9.0, + "description": "the method analyzes candidate entities to identify sharp drops in similarity scores", + "source_ids": [ + 21 + ], + "source": "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: candidate entities\nType: CONCEPT" + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "coreferent entities", + "relation_name": "", + "weight": 10.0, + "description": "the method distinguishes and merges coreferent entities", + "source_ids": [ + 21 + ], + "source": "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: coreferent entities\nType: CONCEPT" + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "graph connectivity", + "relation_name": "", + "weight": 8.0, + "description": "the method ensures graph connectivity by resolving entity ambiguity", + "source_ids": [ + 21 + ], + "source": "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: graph connectivity\nType: CONCEPT" + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "reasoning capabilities", + "relation_name": "", + "weight": 8.0, + "description": "the method enhances reasoning capabilities by improving the kg", + "source_ids": [ + 21 + ], + "source": "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: reasoning capabilities\nType: CONCEPT" + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "gradient based entity resolution method", + "relation_name": "", + "weight": 8.0, + "description": "graph construction refines entity knowledge using the novel gradient based entity resolution method", + "source_ids": [ + 47 + ], + "source": "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: graph construction\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 8.0, + "description": "the selector operator narrows the document space which is subsequently analyzed by the reasoner operator", + "source_ids": [ + 124 + ], + "source": "Name: selector\nType: SOFTWARE", + "target": "Name: reasoner\nType: SOFTWARE" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "search space", + "relation_name": "", + "weight": 9.0, + "description": "the selector narrows down the search space", + "source_ids": [ + 22 + ], + "source": "Name: selector\nType: SOFTWARE", + "target": "Name: search space\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "information scents", + "relation_name": "", + "weight": 9.0, + "description": "the selector uses information scents to narrow down the search space", + "source_ids": [ + 22 + ], + "source": "Name: selector\nType: SOFTWARE", + "target": "Name: information scents\nType: CONCEPT" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 10.0, + "description": "the selector operator navigates to information patches", + "source_ids": [ + 124 + ], + "source": "Name: selector\nType: SOFTWARE", + "target": "Name: information patches\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "document space", + "relation_name": "", + "weight": 9.0, + "description": "the selector narrows the vast document space down to relevant scopes", + "source_ids": [ + 124 + ], + "source": "Name: selector\nType: SOFTWARE", + "target": "Name: document space\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "relevant scopes", + "relation_name": "", + "weight": 9.0, + "description": "the selector narrows the document space down to relevant scopes", + "source_ids": [ + 124 + ], + "source": "Name: selector\nType: SOFTWARE", + "target": "Name: relevant scopes\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "ift inspired selector reasoner workflow", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "the workflow uses the selector to narrow the search to a precise information patch", + "source_ids": [ + 157 + ], + "source": "Name: selector\nType: SOFTWARE", + "target": "Name: ift inspired selector reasoner workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "information patch", + "relation_name": "", + "weight": 9.0, + "description": "the selector narrows the search to a precise information patch", + "source_ids": [ + 157 + ], + "source": "Name: selector\nType: SOFTWARE", + "target": "Name: information patch\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 8.0, + "description": "the reasoner operator refines information that is then used by the synthesizer to generate the answer", + "source_ids": [ + 124 + ], + "source": "Name: reasoner\nType: SOFTWARE", + "target": "Name: synthesizer\nType: SOFTWARE" + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "the reasoner performs sensemaking within the information patches identified by the selector", + "source_ids": [ + 124 + ], + "source": "Name: reasoner\nType: SOFTWARE", + "target": "Name: information patches\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "processed evidence", + "relation_name": "", + "weight": 9.0, + "description": "the reasoner analyzes and refines information to create processed evidence", + "source_ids": [ + 124 + ], + "source": "Name: reasoner\nType: SOFTWARE", + "target": "Name: processed evidence\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "ift inspired selector reasoner workflow", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "the workflow uses the reasoner for analysis after the selector", + "source_ids": [ + 157 + ], + "source": "Name: reasoner\nType: SOFTWARE", + "target": "Name: ift inspired selector reasoner workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "retrieval workflows", + "relation_name": "", + "weight": 10.0, + "description": "the agent dynamically generates tailored retrieval workflows", + "source_ids": [ + 22 + ], + "source": "Name: retrieval workflows\nType: TASK_OR_PROBLEM", + "target": "Name: agent\nType: UNKNOWN" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "retrieval workflows", + "relation_name": "", + "weight": 9.0, + "description": "the agent based retrieval approach configures optimal retrieval workflows", + "source_ids": [ + 26 + ], + "source": "Name: retrieval workflows\nType: TASK_OR_PROBLEM", + "target": "Name: agent based retrieval\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "information scents", + "relation_name": "", + "weight": 9.0, + "description": "selector operators identify relevant patches by following information scents", + "source_ids": [ + 125 + ], + "source": "Name: information scents\nType: CONCEPT", + "target": "Name: selector operators\nType: SOFTWARE" + }, + { + "src_entity_name": "information scents", + "tgt_entity_name": "question", + "relation_name": "", + "weight": 8.0, + "description": "information scents include key entities found in a question", + "source_ids": [ + 125 + ], + "source": "Name: information scents\nType: CONCEPT", + "target": "Name: question\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "evaluation", + "tgt_entity_name": "state of the art baselines", + "relation_name": "", + "weight": 8.0, + "description": "the evaluation involves comparing bookrag to state of the art baselines", + "source_ids": [ + 151 + ], + "source": "Name: state of the art baselines\nType: PRODUCT", + "target": "Name: evaluation\nType: EVENT" + }, + { + "src_entity_name": "hierarchical tree", + "tgt_entity_name": "document layout blocks", + "relation_name": "", + "weight": 10.0, + "description": "the hierarchical tree is composed of document layout blocks", + "source_ids": [ + 25 + ], + "source": "Name: hierarchical tree\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: document layout blocks\nType: MATERIAL" + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "entity relations", + "relation_name": "", + "weight": 10.0, + "description": "the kg stores fine grained entity relations", + "source_ids": [ + 25 + ], + "source": "Name: kg\nType: SOFTWARE", + "target": "Name: entity relations\nType: CONCEPT" + }, + { + "src_entity_name": "offline indexing phase", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "kg is a form of structured index created during the offline indexing phase", + "source_ids": [ + 45 + ], + "source": "Name: kg\nType: SOFTWARE", + "target": "Name: offline indexing phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "extract links identified entities to the knowledge graph kg", + "source_ids": [ + 98 + ], + "source": "Name: kg\nType: SOFTWARE", + "target": "Name: extract\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "documents", + "relation_name": "", + "weight": 8.0, + "description": "the approach operates within documents to locate evidence", + "source_ids": [ + 26 + ], + "source": "Name: agent based retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "evidence", + "relation_name": "", + "weight": 10.0, + "description": "the goal of the approach is to locate highly relevant evidence within documents", + "source_ids": [ + 26 + ], + "source": "Name: agent based retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: evidence\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 3", + "tgt_entity_name": "agent based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "figure 3 illustrates the workflow of agent based retrieval", + "source_ids": [ + 81 + ], + "source": "Name: agent based retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: figure 3\nType: IMAGE" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "three stage pipeline", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval follows a three stage pipeline to address queries", + "source_ids": [ + 81 + ], + "source": "Name: agent based retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: three stage pipeline\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "mmlongbench is used for complex document qa tasks", + "source_ids": [ + 141 + ], + "source": "Name: complex document qa tasks\nType: TASK_OR_PROBLEM", + "target": "Name: mmlongbench\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "m3docvqa is used for complex document qa tasks", + "source_ids": [ + 141 + ], + "source": "Name: complex document qa tasks\nType: TASK_OR_PROBLEM", + "target": "Name: m3docvqa\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "qasper is used for complex document qa tasks", + "source_ids": [ + 141 + ], + "source": "Name: complex document qa tasks\nType: TASK_OR_PROBLEM", + "target": "Name: qasper\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 10.0, + "description": "table 5 focuses on solving complex document qa tasks", + "source_ids": [ + 153 + ], + "source": "Name: complex document qa tasks\nType: TASK_OR_PROBLEM", + "target": "Name: table 5\nType: TABLE" + }, + { + "src_entity_name": "performance comparison", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 8.0, + "description": "the performance comparison is aimed at solving complex document qa tasks", + "source_ids": [ + 153 + ], + "source": "Name: complex document qa tasks\nType: TASK_OR_PROBLEM", + "target": "Name: performance comparison\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "different methods", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "different methods are used to solve complex document qa tasks", + "source_ids": [ + 153 + ], + "source": "Name: complex document qa tasks\nType: TASK_OR_PROBLEM", + "target": "Name: different methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "datasets", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 8.0, + "description": "datasets are used to evaluate methods for complex document qa tasks", + "source_ids": [ + 153 + ], + "source": "Name: complex document qa tasks\nType: TASK_OR_PROBLEM", + "target": "Name: datasets\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "extensive experiments", + "tgt_entity_name": "multiple benchmarks", + "relation_name": "", + "weight": 8.0, + "description": "extensive experiments were conducted on multiple benchmarks to validate results", + "source_ids": [ + 27 + ], + "source": "Name: extensive experiments\nType: EVENT", + "target": "Name: multiple benchmarks\nType: BENCHMARK" + }, + { + "src_entity_name": "multiple benchmarks", + "tgt_entity_name": "state of the art performance", + "relation_name": "", + "weight": 7.0, + "description": "the performance on multiple benchmarks showed state of the art results", + "source_ids": [ + 27 + ], + "source": "Name: multiple benchmarks\nType: BENCHMARK", + "target": "Name: state of the art performance\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "section 2", + "tgt_entity_name": "related work", + "relation_name": "", + "weight": 9.0, + "description": "section 2 is dedicated to reviewing related work", + "source_ids": [ + 29 + ], + "source": "Name: section 2\nType: SECTION_TITLE", + "target": "Name: related work\nType: UNKNOWN" + }, + { + "src_entity_name": "section 3", + "tgt_entity_name": "ift", + "relation_name": "", + "weight": 10.0, + "description": "section 3 introduces the ift method", + "source_ids": [ + 29 + ], + "source": "Name: section 3\nType: SECTION_TITLE", + "target": "Name: ift\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "structured execution", + "tgt_entity_name": "ift", + "relation_name": "", + "weight": 8.0, + "description": "structured execution includes the retrieval process under the principles of ift", + "source_ids": [ + 79 + ], + "source": "Name: ift\nType: METHOD_OR_TECHNIQUE", + "target": "Name: structured execution\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "ift", + "relation_name": "", + "weight": 9.0, + "description": "the scent filter based retrieval process aligns with ift", + "source_ids": [ + 125 + ], + "source": "Name: ift\nType: METHOD_OR_TECHNIQUE", + "target": "Name: scent filter based retrieval\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "section 6", + "tgt_entity_name": "experimental results", + "relation_name": "", + "weight": 10.0, + "description": "section 6 presents the experimental results and analysis", + "source_ids": [ + 29 + ], + "source": "Name: section 6\nType: SECTION_TITLE", + "target": "Name: experimental results\nType: UNKNOWN" + }, + { + "src_entity_name": "section 7", + "tgt_entity_name": "conclusion", + "relation_name": "", + "weight": 10.0, + "description": "section 7 concludes the paper", + "source_ids": [ + 29 + ], + "source": "Name: section 7\nType: SECTION_TITLE", + "target": "Name: conclusion\nType: UNKNOWN" + }, + { + "src_entity_name": "section 5", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 10.0, + "description": "section 5 elaborates on query classification as part of agent based retrieval", + "source_ids": [ + 29 + ], + "source": "Name: section 5\nType: SECTION_TITLE", + "target": "Name: query classification\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "section 5", + "tgt_entity_name": "operators", + "relation_name": "", + "weight": 10.0, + "description": "section 5 describes the operators used in the structured execution of bookrag", + "source_ids": [ + 29 + ], + "source": "Name: section 5\nType: SECTION_TITLE", + "target": "Name: operators\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "section 5", + "tgt_entity_name": "structured execution", + "relation_name": "", + "weight": 10.0, + "description": "section 5 presents the structured execution of bookrag", + "source_ids": [ + 29 + ], + "source": "Name: section 5\nType: SECTION_TITLE", + "target": "Name: structured execution\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "classification plan", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 9.0, + "description": "classification plan performs query classification to distinguish query types", + "source_ids": [ + 82 + ], + "source": "Name: query classification\nType: METHOD_OR_TECHNIQUE", + "target": "Name: classification plan\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "operators plan", + "relation_name": "", + "weight": 8.0, + "description": "the operators plan is generated based on the results of query classification", + "source_ids": [ + 82 + ], + "source": "Name: query classification\nType: METHOD_OR_TECHNIQUE", + "target": "Name: operators plan\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "retrieval-augmented generation", + "tgt_entity_name": "2 related work", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Retrieval-Augmented Generation' is a primary topic reviewed in section 2.", + "source_ids": [ + 30 + ], + "source": "Name: 2 related work\nType: SECTION_TITLE", + "target": "Name: retrieval-augmented generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "hierarchical document structures", + "tgt_entity_name": "2 related work", + "relation_name": "", + "weight": 10.0, + "description": "The challenge of 'Hierarchical Document Structures' is a primary topic reviewed in section 2.", + "source_ids": [ + 30 + ], + "source": "Name: 2 related work\nType: SECTION_TITLE", + "target": "Name: hierarchical document structures\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "rag approaches", + "relation_name": "", + "weight": 8.0, + "description": "both llm and rag approaches are reviewed together as related works in document analysis", + "source_ids": [ + 31 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: rag approaches\nType: TECHNOLOGY" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "document analysis", + "relation_name": "", + "weight": 9.0, + "description": "llm is used in the field of document analysis", + "source_ids": [ + 31 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: document analysis\nType: RESEARCH_FIELD" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "related works", + "relation_name": "", + "weight": 8.0, + "description": "llm is reviewed within the related works section", + "source_ids": [ + 31 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: related works\nType: SECTION_TITLE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "html", + "relation_name": "", + "weight": 9.0, + "description": "llms are used to convert html documents into structured formats", + "source_ids": [ + 32 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: html\nType: FILE_TYPE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "pdf", + "relation_name": "", + "weight": 9.0, + "description": "llms are used to convert pdf documents into structured formats", + "source_ids": [ + 32 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: pdf\nType: FILE_TYPE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "raw text", + "relation_name": "", + "weight": 9.0, + "description": "llms are used to convert raw text documents into structured formats", + "source_ids": [ + 32 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: raw text\nType: FILE_TYPE" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "relational tables", + "relation_name": "", + "weight": 9.0, + "description": "llms facilitate the conversion of unstructured documents into relational tables", + "source_ids": [ + 32 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: relational tables\nType: PRODUCT" + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "evaporate utilizes llms to synthesize extraction code", + "source_ids": [ + 32 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: evaporate\nType: SOFTWARE" + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "lotus uses llm powered predicates to execute queries", + "source_ids": [ + 32 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: lotus\nType: SOFTWARE" + }, + { + "src_entity_name": "document pages", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "research proposes using llms to analyze document pages viewed as images", + "source_ids": [ + 32 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: document pages\nType: IMAGE" + }, + { + "src_entity_name": "gradient based er algorithm", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the gradient based er algorithm isolates a set of entities which is subsequently processed by an llm for finer grained distinction", + "source_ids": [ + 74 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: gradient based er algorithm\nType: TECHNOLOGY" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "case a", + "relation_name": "", + "weight": 9.0, + "description": "the llm is used to differentiate the identified set from the no gradient scenario of case a", + "source_ids": [ + 74 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: case a\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "similar entities", + "relation_name": "", + "weight": 9.0, + "description": "the llm is utilized to distinguish between multiple similar entities identified within the set", + "source_ids": [ + 74 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: similar entities\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "decompose", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "decompose employs an llm to perform its function", + "source_ids": [ + 98 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: decompose\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "extract employs an llm to perform its function", + "source_ids": [ + 98 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: extract\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "formulator", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "formulators are defined as llm based operators", + "source_ids": [ + 98 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: formulator\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "s target includes sections selected by the llm", + "source_ids": [ + 104 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: s target\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "treetraverse", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 7.0, + "description": "treetraverse uses an llm to navigate the document s tree structure", + "source_ids": [ + 148 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: treetraverse\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "accuracy inclusion based", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "accuracy inclusion based is utilized to account for the uncontrollable nature of llm generation", + "source_ids": [ + 227 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: accuracy inclusion based\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "large language model", + "relation_name": "", + "weight": 10.0, + "description": "llm is a direct abbreviation for large language model", + "source_ids": [ + 267 + ], + "source": "Name: llm\nType: TECHNOLOGY", + "target": "Name: large language model\nType: TECHNOLOGY" + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "document analysis", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches are used in the field of document analysis", + "source_ids": [ + 31 + ], + "source": "Name: rag approaches\nType: TECHNOLOGY", + "target": "Name: document analysis\nType: RESEARCH_FIELD" + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "related works", + "relation_name": "", + "weight": 8.0, + "description": "rag approaches are reviewed within the related works section", + "source_ids": [ + 31 + ], + "source": "Name: rag approaches\nType: TECHNOLOGY", + "target": "Name: related works\nType: SECTION_TITLE" + }, + { + "src_entity_name": "ground truth block", + "tgt_entity_name": "pdf", + "relation_name": "", + "weight": 9.0, + "description": "a ground truth block can be lost due to pdf parsing failures", + "source_ids": [ + 236 + ], + "source": "Name: pdf\nType: FILE_TYPE", + "target": "Name: ground truth block\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "web documents", + "relation_name": "", + "weight": 9.0, + "description": "evaporate converts semi structured web documents into structured databases", + "source_ids": [ + 32 + ], + "source": "Name: evaporate\nType: SOFTWARE", + "target": "Name: web documents\nType: PRODUCT" + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "semi structured web documents", + "relation_name": "", + "weight": 9.0, + "description": "evaporate converts semi structured web documents", + "source_ids": [ + 32 + ], + "source": "Name: evaporate\nType: SOFTWARE", + "target": "Name: semi structured web documents\nType: PRODUCT" + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "structured databases", + "relation_name": "", + "weight": 9.0, + "description": "evaporate converts documents into structured databases", + "source_ids": [ + 32 + ], + "source": "Name: evaporate\nType: SOFTWARE", + "target": "Name: structured databases\nType: PRODUCT" + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "manual annotation", + "relation_name": "", + "weight": 8.0, + "description": "evaporate avoids the need for heavy manual annotation", + "source_ids": [ + 32 + ], + "source": "Name: evaporate\nType: SOFTWARE", + "target": "Name: manual annotation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "sql", + "relation_name": "", + "weight": 8.0, + "description": "lotus allows users to execute sql like queries", + "source_ids": [ + 32 + ], + "source": "Name: lotus\nType: SOFTWARE", + "target": "Name: sql\nType: PROGRAMMING_LANGUAGE" + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "unstructured text corpora", + "relation_name": "", + "weight": 9.0, + "description": "lotus allows queries to be executed over unstructured text corpora", + "source_ids": [ + 32 + ], + "source": "Name: lotus\nType: SOFTWARE", + "target": "Name: unstructured text corpora\nType: UNKNOWN" + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "semantic operators", + "relation_name": "", + "weight": 10.0, + "description": "lotus extends the relational model with semantic operators", + "source_ids": [ + 32 + ], + "source": "Name: lotus\nType: SOFTWARE", + "target": "Name: semantic operators\nType: TECHNOLOGY" + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "predicates", + "relation_name": "", + "weight": 9.0, + "description": "lotus uses llm powered predicates for querying", + "source_ids": [ + 32 + ], + "source": "Name: lotus\nType: SOFTWARE", + "target": "Name: predicates\nType: TECHNOLOGY" + }, + { + "src_entity_name": "document pages", + "tgt_entity_name": "layout", + "relation_name": "", + "weight": 9.0, + "description": "document pages are viewed as images to preserve critical layout information", + "source_ids": [ + 32 + ], + "source": "Name: document pages\nType: IMAGE", + "target": "Name: layout\nType: CONCEPT" + }, + { + "src_entity_name": "document pages", + "tgt_entity_name": "visual information", + "relation_name": "", + "weight": 9.0, + "description": "document pages are viewed as images to preserve critical visual information", + "source_ids": [ + 32 + ], + "source": "Name: document pages\nType: IMAGE", + "target": "Name: visual information\nType: CONCEPT" + }, + { + "src_entity_name": "predicates", + "tgt_entity_name": "filter", + "relation_name": "", + "weight": 8.0, + "description": "filter is an example of a predicate used in lotus", + "source_ids": [ + 32 + ], + "source": "Name: predicates\nType: TECHNOLOGY", + "target": "Name: filter\nType: TECHNOLOGY" + }, + { + "src_entity_name": "predicates", + "tgt_entity_name": "join", + "relation_name": "", + "weight": 8.0, + "description": "join is an example of a predicate used in lotus", + "source_ids": [ + 32 + ], + "source": "Name: predicates\nType: TECHNOLOGY", + "target": "Name: join\nType: TECHNOLOGY" + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "open ended question answering", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches excel in open ended question answering", + "source_ids": [ + 33 + ], + "source": "Name: rag approaches\nType: METHOD_OR_TECHNIQUE", + "target": "Name: open ended question answering\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "programming context", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches excel in programming context tasks", + "source_ids": [ + 33 + ], + "source": "Name: rag approaches\nType: METHOD_OR_TECHNIQUE", + "target": "Name: programming context\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "sql rewrite", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches excel in sql rewrite tasks", + "source_ids": [ + 33 + ], + "source": "Name: rag approaches\nType: METHOD_OR_TECHNIQUE", + "target": "Name: sql rewrite\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "data cleaning", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches excel in data cleaning tasks", + "source_ids": [ + 33 + ], + "source": "Name: rag approaches\nType: METHOD_OR_TECHNIQUE", + "target": "Name: data cleaning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "graph structures", + "relation_name": "", + "weight": 9.0, + "description": "many rag approaches have adopted graph structures to organize information", + "source_ids": [ + 33 + ], + "source": "Name: rag approaches\nType: METHOD_OR_TECHNIQUE", + "target": "Name: graph structures\nType: TECHNOLOGY" + }, + { + "src_entity_name": "naive rag technique", + "tgt_entity_name": "external knowledge bases", + "relation_name": "", + "weight": 8.0, + "description": "the naive rag technique retrieves query relevant contexts from external knowledge bases", + "source_ids": [ + 33 + ], + "source": "Name: naive rag technique\nType: METHOD_OR_TECHNIQUE", + "target": "Name: external knowledge bases\nType: TECHNOLOGY" + }, + { + "src_entity_name": "graph structures", + "tgt_entity_name": "documents", + "relation_name": "", + "weight": 8.0, + "description": "graph structures organize information and relationships within documents", + "source_ids": [ + 33 + ], + "source": "Name: graph structures\nType: TECHNOLOGY", + "target": "Name: documents\nType: UNKNOWN" + }, + { + "src_entity_name": "agentic rag paradigm", + "tgt_entity_name": "autonomous agents", + "relation_name": "", + "weight": 10.0, + "description": "the agentic rag paradigm employs autonomous agents to orchestrate the pipeline", + "source_ids": [ + 33 + ], + "source": "Name: agentic rag paradigm\nType: METHOD_OR_TECHNIQUE", + "target": "Name: autonomous agents\nType: TECHNOLOGY" + }, + { + "src_entity_name": "agentic rag paradigm", + "tgt_entity_name": "rag pipeline", + "relation_name": "", + "weight": 10.0, + "description": "the agentic rag paradigm dynamically orchestrates and refines the rag pipeline", + "source_ids": [ + 33 + ], + "source": "Name: agentic rag paradigm\nType: METHOD_OR_TECHNIQUE", + "target": "Name: rag pipeline\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agentic rag paradigm", + "tgt_entity_name": "reasoning robustness", + "relation_name": "", + "weight": 9.0, + "description": "the agentic rag paradigm significantly boosts reasoning robustness", + "source_ids": [ + 33 + ], + "source": "Name: agentic rag paradigm\nType: METHOD_OR_TECHNIQUE", + "target": "Name: reasoning robustness\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "agentic rag paradigm", + "tgt_entity_name": "generation fidelity", + "relation_name": "", + "weight": 9.0, + "description": "the agentic rag paradigm significantly boosts generation fidelity", + "source_ids": [ + 33 + ], + "source": "Name: agentic rag paradigm\nType: METHOD_OR_TECHNIQUE", + "target": "Name: generation fidelity\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "rag systems", + "tgt_entity_name": "3.3 rag workflow", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'RAG systems' is the primary topic and subject matter of section 3.3.", + "source_ids": [ + 44 + ], + "source": "Name: rag systems\nType: TECHNOLOGY", + "target": "Name: 3.3 rag workflow\nType: SECTION_TITLE" + }, + { + "src_entity_name": "research problem", + "tgt_entity_name": "general workflow", + "relation_name": "", + "weight": 7.0, + "description": "both the research problem and the general workflow are discussed within the same section", + "source_ids": [ + 35 + ], + "source": "Name: research problem\nType: TASK_OR_PROBLEM", + "target": "Name: general workflow\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "method s", + "tgt_entity_name": "user query", + "relation_name": "", + "weight": 10.0, + "description": "method s maps a user query to a final answer", + "source_ids": [ + 37 + ], + "source": "Name: user query\nType: TASK_OR_PROBLEM", + "target": "Name: method s\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "user query", + "tgt_entity_name": "q", + "relation_name": "", + "weight": 10.0, + "description": "q is the variable symbol for the user query", + "source_ids": [ + 37 + ], + "source": "Name: user query\nType: TASK_OR_PROBLEM", + "target": "Name: q\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "online retrieval phase", + "tgt_entity_name": "user query", + "relation_name": "", + "weight": 10.0, + "description": "the online retrieval phase uses the user query to retrieve relevant components", + "source_ids": [ + 45 + ], + "source": "Name: user query\nType: TASK_OR_PROBLEM", + "target": "Name: online retrieval phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "answer", + "tgt_entity_name": "evidence blocks", + "relation_name": "", + "weight": 9.0, + "description": "an answer is ideally grounded in a specific set of evidence blocks", + "source_ids": [ + 37 + ], + "source": "Name: answer\nType: TASK_OR_PROBLEM", + "target": "Name: evidence blocks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "method s", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 10.0, + "description": "method s produces the final answer", + "source_ids": [ + 37 + ], + "source": "Name: answer\nType: TASK_OR_PROBLEM", + "target": "Name: method s\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "answer", + "tgt_entity_name": "a", + "relation_name": "", + "weight": 10.0, + "description": "a is the variable symbol for the answer", + "source_ids": [ + 37 + ], + "source": "Name: answer\nType: TASK_OR_PROBLEM", + "target": "Name: a\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Answer", + "source_ids": [ + 84 + ], + "source": "Name: answer\nType: TASK_OR_PROBLEM", + "target": "Name: cref='#/texts/89'\nType: IMAGE" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 10.0, + "description": "the synthesizer generates the answer", + "source_ids": [ + 124 + ], + "source": "Name: answer\nType: TASK_OR_PROBLEM", + "target": "Name: synthesizer\nType: SOFTWARE" + }, + { + "src_entity_name": "processed evidence", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 8.0, + "description": "processed evidence is used to generate the answer", + "source_ids": [ + 124 + ], + "source": "Name: answer\nType: TASK_OR_PROBLEM", + "target": "Name: processed evidence\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "evidence blocks", + "tgt_entity_name": "e", + "relation_name": "", + "weight": 10.0, + "description": "e is the variable symbol for the set of evidence blocks", + "source_ids": [ + 37 + ], + "source": "Name: evidence blocks\nType: DATASET_OR_CORPUS", + "target": "Name: e\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "method s", + "tgt_entity_name": "equation 1", + "relation_name": "", + "weight": 10.0, + "description": "method s is mathematically defined by equation 1", + "source_ids": [ + 37 + ], + "source": "Name: method s\nType: METHOD_OR_TECHNIQUE", + "target": "Name: equation 1\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "pages", + "tgt_entity_name": "p", + "relation_name": "", + "weight": 10.0, + "description": "p is the variable symbol for pages", + "source_ids": [ + 37 + ], + "source": "Name: pages\nType: MEASUREMENT", + "target": "Name: p\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "text segment", + "relation_name": "", + "weight": 8.0, + "description": "a text segment is an example of a content block", + "source_ids": [ + 37 + ], + "source": "Name: content blocks\nType: DATASET_OR_CORPUS", + "target": "Name: text segment\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "section header", + "relation_name": "", + "weight": 8.0, + "description": "a section header is an example of a content block", + "source_ids": [ + 37 + ], + "source": "Name: content blocks\nType: DATASET_OR_CORPUS", + "target": "Name: section header\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 8.0, + "description": "a table is an example of a content block", + "source_ids": [ + 37 + ], + "source": "Name: content blocks\nType: DATASET_OR_CORPUS", + "target": "Name: table\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 8.0, + "description": "an image is an example of a content block", + "source_ids": [ + 37 + ], + "source": "Name: content blocks\nType: DATASET_OR_CORPUS", + "target": "Name: image\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "logical chapter hierarchy", + "relation_name": "", + "weight": 9.0, + "description": "content blocks are organized within a logical chapter hierarchy", + "source_ids": [ + 37 + ], + "source": "Name: content blocks\nType: DATASET_OR_CORPUS", + "target": "Name: logical chapter hierarchy\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 10.0, + "description": "b is the variable symbol for the sequence of content blocks", + "source_ids": [ + 37 + ], + "source": "Name: content blocks\nType: DATASET_OR_CORPUS", + "target": "Name: b\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "4.2.1 layout parsing", + "relation_name": "", + "weight": 10.0, + "description": "Content Blocks represent the output entities identified and organized within section 4.2.1.", + "source_ids": [ + 55 + ], + "source": "Name: content blocks\nType: DATASET_OR_CORPUS", + "target": "Name: 4.2.1 layout parsing\nType: SECTION_TITLE" + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "n", + "relation_name": "", + "weight": 10.0, + "description": "n represents the set of nodes contained within the tree structure", + "source_ids": [ + 51 + ], + "source": "Name: n\nType: PARAMETER_OR_VARIABLE", + "target": "Name: tree structure\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "n", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator takes n as an input parameter to generate the answer", + "source_ids": [ + 129 + ], + "source": "Name: n\nType: PARAMETER_OR_VARIABLE", + "target": "Name: synthesizer\nType: SOFTWARE" + }, + { + "src_entity_name": "n", + "tgt_entity_name": "15", + "relation_name": "", + "weight": 8.0, + "description": "n is a component of the equation labeled 15", + "source_ids": [ + 129 + ], + "source": "Name: n\nType: PARAMETER_OR_VARIABLE", + "target": "Name: 15\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "m", + "relation_name": "", + "weight": 10.0, + "description": "m is a defined component within the bookindex structure", + "source_ids": [ + 88 + ], + "source": "Name: m\nType: PARAMETER_OR_VARIABLE", + "target": "Name: bookindex\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "", + "tgt_entity_name": "p", + "relation_name": "", + "weight": 10.0, + "description": "maps entities to the power set of nodes p", + "source_ids": [ + 51 + ], + "source": "Name: p\nType: PARAMETER_OR_VARIABLE", + "target": "Name: \nType: UNKNOWN" + }, + { + "src_entity_name": "p", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 10.0, + "description": "p precision is a component used in the calculation of the f1 score", + "source_ids": [ + 231 + ], + "source": "Name: p\nType: PARAMETER_OR_VARIABLE", + "target": "Name: f1\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "q", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator takes q as an input parameter to generate the answer", + "source_ids": [ + 129 + ], + "source": "Name: q\nType: PARAMETER_OR_VARIABLE", + "target": "Name: synthesizer\nType: SOFTWARE" + }, + { + "src_entity_name": "q", + "tgt_entity_name": "15", + "relation_name": "", + "weight": 8.0, + "description": "q is a component of the equation labeled 15", + "source_ids": [ + 129 + ], + "source": "Name: q\nType: PARAMETER_OR_VARIABLE", + "target": "Name: 15\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "a", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator produces a as its output", + "source_ids": [ + 129 + ], + "source": "Name: a\nType: PARAMETER_OR_VARIABLE", + "target": "Name: synthesizer\nType: SOFTWARE" + }, + { + "src_entity_name": "a", + "tgt_entity_name": "15", + "relation_name": "", + "weight": 8.0, + "description": "a is the subject of the equation labeled 15", + "source_ids": [ + 129 + ], + "source": "Name: a\nType: PARAMETER_OR_VARIABLE", + "target": "Name: 15\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "proceedings of the acm on management of data", + "tgt_entity_name": "3", + "relation_name": "", + "weight": 10.0, + "description": "the publication issue is 3", + "source_ids": [ + 199 + ], + "source": "Name: 3\nType: MEASUREMENT", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "page", + "tgt_entity_name": "3", + "relation_name": "", + "weight": 7.0, + "description": "3 is part of the page range", + "source_ids": [ + 258 + ], + "source": "Name: 3\nType: MEASUREMENT", + "target": "Name: page\nType: MEASUREMENT" + }, + { + "src_entity_name": "s", + "tgt_entity_name": "d", + "relation_name": "", + "weight": 9.0, + "description": "s must navigate the logical hierarchy of d to synthesize the response", + "source_ids": [ + 40 + ], + "source": "Name: s\nType: PERSON", + "target": "Name: d\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "handbooks", + "relation_name": "", + "weight": 7.0, + "description": "information scent cues like keywords or icons are found within sections of handbooks which act as information patches", + "source_ids": [ + 42 + ], + "source": "Name: information scent\nType: CONCEPT", + "target": "Name: handbooks\nType: PRODUCT" + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "keywords", + "relation_name": "", + "weight": 10.0, + "description": "keywords are explicitly listed as examples of information scent", + "source_ids": [ + 42 + ], + "source": "Name: information scent\nType: CONCEPT", + "target": "Name: keywords\nType: CONCEPT" + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "icons", + "relation_name": "", + "weight": 10.0, + "description": "icons are explicitly listed as examples of information scent", + "source_ids": [ + 42 + ], + "source": "Name: information scent\nType: CONCEPT", + "target": "Name: icons\nType: CONCEPT" + }, + { + "src_entity_name": "key terms", + "tgt_entity_name": "information scent", + "relation_name": "", + "weight": 10.0, + "description": "key terms act as information scent", + "source_ids": [ + 43 + ], + "source": "Name: information scent\nType: CONCEPT", + "target": "Name: key terms\nType: CONCEPT" + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "information scent guides experts to navigate towards information patches", + "source_ids": [ + 43 + ], + "source": "Name: information scent\nType: CONCEPT", + "target": "Name: information patches\nType: CONCEPT" + }, + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "information scent", + "relation_name": "", + "weight": 9.0, + "description": "the entities and relations in the knowledge graph act as information scent", + "source_ids": [ + 51 + ], + "source": "Name: information scent\nType: CONCEPT", + "target": "Name: knowledge graph\nType: SOFTWARE" + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "navigation", + "relation_name": "", + "weight": 8.0, + "description": "information scent guides navigation between and within information patches", + "source_ids": [ + 51 + ], + "source": "Name: information scent\nType: CONCEPT", + "target": "Name: navigation\nType: UNKNOWN" + }, + { + "src_entity_name": "information patches", + "tgt_entity_name": "sections", + "relation_name": "", + "weight": 10.0, + "description": "sections in handbooks are explicitly listed as examples of information patches", + "source_ids": [ + 42 + ], + "source": "Name: information patches\nType: CONCEPT", + "target": "Name: sections\nType: CONCEPT" + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "experts navigate to and analyze content within information patches", + "source_ids": [ + 43 + ], + "source": "Name: information patches\nType: CONCEPT", + "target": "Name: experts\nType: PERSON" + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "the hierarchical tree nodes in the tree structure serve as information patches", + "source_ids": [ + 51 + ], + "source": "Name: information patches\nType: CONCEPT", + "target": "Name: tree structure\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "large technical handbook", + "relation_name": "", + "weight": 10.0, + "description": "experts seek a solution within the large technical handbook", + "source_ids": [ + 43 + ], + "source": "Name: experts\nType: PERSON", + "target": "Name: large technical handbook\nType: BOOK" + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "key terms", + "relation_name": "", + "weight": 9.0, + "description": "experts extract key terms from the handbook", + "source_ids": [ + 43 + ], + "source": "Name: experts\nType: PERSON", + "target": "Name: key terms\nType: CONCEPT" + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "final answer", + "relation_name": "", + "weight": 10.0, + "description": "experts formulate a final answer based on the analysis of information patches", + "source_ids": [ + 43 + ], + "source": "Name: experts\nType: PERSON", + "target": "Name: final answer\nType: CONCEPT" + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "problem", + "relation_name": "", + "weight": 10.0, + "description": "experts are seeking a solution to the specific problem", + "source_ids": [ + 43 + ], + "source": "Name: experts\nType: PERSON", + "target": "Name: problem\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "diverse content", + "relation_name": "", + "weight": 9.0, + "description": "experts analyze the diverse content within the information patches", + "source_ids": [ + 43 + ], + "source": "Name: experts\nType: PERSON", + "target": "Name: diverse content\nType: CONCEPT" + }, + { + "src_entity_name": "precise knowledge", + "tgt_entity_name": "final answer", + "relation_name": "", + "weight": 10.0, + "description": "precise knowledge is used to formulate the final answer", + "source_ids": [ + 43 + ], + "source": "Name: final answer\nType: CONCEPT", + "target": "Name: precise knowledge\nType: CONCEPT" + }, + { + "src_entity_name": "diverse content", + "tgt_entity_name": "precise knowledge", + "relation_name": "", + "weight": 9.0, + "description": "experts extract precise knowledge from the diverse content", + "source_ids": [ + 43 + ], + "source": "Name: diverse content\nType: CONCEPT", + "target": "Name: precise knowledge\nType: CONCEPT" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "offline indexing phase", + "relation_name": "", + "weight": 10.0, + "description": "retrieval augmented generation systems operate in the offline indexing phase as their first step", + "source_ids": [ + 45 + ], + "source": "Name: retrieval augmented generation\nType: TASK_OR_PROBLEM", + "target": "Name: offline indexing phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "online retrieval phase", + "relation_name": "", + "weight": 10.0, + "description": "retrieval augmented generation systems operate in the online retrieval phase as their second step", + "source_ids": [ + 45 + ], + "source": "Name: retrieval augmented generation\nType: TASK_OR_PROBLEM", + "target": "Name: online retrieval phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "document s native tree topology", + "relation_name": "", + "weight": 8.0, + "description": "the proposed approach for retrieval augmented generation seeks to integrate retrieval structures with the document s native tree topology", + "source_ids": [ + 45 + ], + "source": "Name: retrieval augmented generation\nType: TASK_OR_PROBLEM", + "target": "Name: document s native tree topology\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "the retrieval augmented generation approach seeks to integrate structures with the document s native topology", + "source_ids": [ + 45 + ], + "source": "Name: retrieval augmented generation\nType: TASK_OR_PROBLEM", + "target": "Name: document\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "offline indexing phase", + "tgt_entity_name": "vector databases", + "relation_name": "", + "weight": 9.0, + "description": "vector databases are a form of structured index created during the offline indexing phase", + "source_ids": [ + 45 + ], + "source": "Name: offline indexing phase\nType: TASK_OR_PROBLEM", + "target": "Name: vector databases\nType: SOFTWARE" + }, + { + "src_entity_name": "offline indexing phase", + "tgt_entity_name": "unstructured corpus data", + "relation_name": "", + "weight": 10.0, + "description": "the offline indexing phase organizes unstructured corpus data into a structured index", + "source_ids": [ + 45 + ], + "source": "Name: offline indexing phase\nType: TASK_OR_PROBLEM", + "target": "Name: unstructured corpus data\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "online retrieval phase", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the online retrieval phase informs the llm s generation with retrieved components", + "source_ids": [ + 45 + ], + "source": "Name: online retrieval phase\nType: TASK_OR_PROBLEM", + "target": "Name: llm\nType: SOFTWARE" + }, + { + "src_entity_name": "online retrieval phase", + "tgt_entity_name": "text chunks", + "relation_name": "", + "weight": 9.0, + "description": "text chunks are retrieved as relevant components during the online retrieval phase", + "source_ids": [ + 45 + ], + "source": "Name: online retrieval phase\nType: TASK_OR_PROBLEM", + "target": "Name: text chunks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "online retrieval phase", + "tgt_entity_name": "subgraphs", + "relation_name": "", + "weight": 9.0, + "description": "subgraphs are retrieved as relevant components during the online retrieval phase", + "source_ids": [ + 45 + ], + "source": "Name: online retrieval phase\nType: TASK_OR_PROBLEM", + "target": "Name: subgraphs\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 9.0, + "description": "The LLM is the method/tool utilized for extracting data from text-only nodes within this section.", + "source_ids": [ + 63 + ], + "source": "Name: llm\nType: SOFTWARE", + "target": "Name: 4.3.1 kg construction\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "algorithm 1 uses an llm to select v sel if multiple aliases are identified", + "source_ids": [ + 75 + ], + "source": "Name: llm\nType: SOFTWARE", + "target": "Name: algorithm 1\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "select by entity", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "select by entity targets contiguous segments within the document", + "source_ids": [ + 104 + ], + "source": "Name: document\nType: TASK_OR_PROBLEM", + "target": "Name: select by entity\nType: TECHNOLOGY" + }, + { + "src_entity_name": "select by section", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "select by section targets contiguous segments within the document", + "source_ids": [ + 104 + ], + "source": "Name: document\nType: TASK_OR_PROBLEM", + "target": "Name: select by section\nType: TECHNOLOGY" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "4 bookindex", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'BookIndex' is the primary subject defined and detailed in section 4.", + "source_ids": [ + 46 + ], + "source": "Name: 4 bookindex\nType: SECTION_TITLE", + "target": "Name: bookindex\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "hierarchical tree", + "tgt_entity_name": "4 bookindex", + "relation_name": "", + "weight": 9.5, + "description": "The 'hierarchical tree' is a core component and technique described within section 4 as part of the BookIndex implementation.", + "source_ids": [ + 46 + ], + "source": "Name: 4 bookindex\nType: SECTION_TITLE", + "target": "Name: hierarchical tree\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "graph", + "tgt_entity_name": "4 bookindex", + "relation_name": "", + "weight": 9.5, + "description": "The use of a 'graph' to capture entity relations is a key technical detail explained in section 4.", + "source_ids": [ + 46 + ], + "source": "Name: 4 bookindex\nType: SECTION_TITLE", + "target": "Name: graph\nType: TECHNOLOGY" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "4.1 overview of bookindex", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'BookIndex' is the primary topic defined and introduced in section 4.1.", + "source_ids": [ + 50 + ], + "source": "Name: bookindex\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: 4.1 overview of bookindex\nType: SECTION_TITLE" + }, + { + "src_entity_name": "tree construction", + "tgt_entity_name": "hierarchical nodes", + "relation_name": "", + "weight": 9.0, + "description": "tree construction parses document layout to establish hierarchical nodes", + "source_ids": [ + 47 + ], + "source": "Name: tree construction\nType: METHOD_OR_TECHNIQUE", + "target": "Name: hierarchical nodes\nType: CONCEPT" + }, + { + "src_entity_name": "tree construction", + "tgt_entity_name": "4.1 overview of bookindex", + "relation_name": "", + "weight": 9.5, + "description": "The method 'Tree Construction' is a key component of the overview provided in section 4.1.", + "source_ids": [ + 50 + ], + "source": "Name: tree construction\nType: METHOD_OR_TECHNIQUE", + "target": "Name: 4.1 overview of bookindex\nType: SECTION_TITLE" + }, + { + "src_entity_name": "tree construction", + "tgt_entity_name": "4.2 tree construction", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Tree Construction' is the primary topic and methodology detailed in section 4.2.", + "source_ids": [ + 53 + ], + "source": "Name: tree construction\nType: METHOD_OR_TECHNIQUE", + "target": "Name: 4.2 tree construction\nType: SECTION_TITLE" + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "fine grained entity knowledge", + "relation_name": "", + "weight": 9.0, + "description": "graph construction extracts fine grained entity knowledge from tree nodes", + "source_ids": [ + 47 + ], + "source": "Name: graph construction\nType: METHOD_OR_TECHNIQUE", + "target": "Name: fine grained entity knowledge\nType: CONCEPT" + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "hierarchical nodes", + "relation_name": "", + "weight": 8.0, + "description": "graph construction operates on the tree nodes established by tree construction to extract knowledge", + "source_ids": [ + 47 + ], + "source": "Name: graph construction\nType: METHOD_OR_TECHNIQUE", + "target": "Name: hierarchical nodes\nType: CONCEPT" + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "4.1 overview of bookindex", + "relation_name": "", + "weight": 9.5, + "description": "The method 'Graph Construction' is a key component of the overview provided in section 4.1.", + "source_ids": [ + 50 + ], + "source": "Name: graph construction\nType: METHOD_OR_TECHNIQUE", + "target": "Name: 4.1 overview of bookindex\nType: SECTION_TITLE" + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "4.3 graph construction", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Graph Construction' is the primary topic and subject matter of section 4.3.", + "source_ids": [ + 61 + ], + "source": "Name: graph construction\nType: METHOD_OR_TECHNIQUE", + "target": "Name: 4.3 graph construction\nType: SECTION_TITLE" + }, + { + "src_entity_name": "semantic entities", + "tgt_entity_name": "logical hierarchy", + "relation_name": "", + "weight": 8.0, + "description": "semantic entities are grounded within the document s logical hierarchy", + "source_ids": [ + 52 + ], + "source": "Name: logical hierarchy\nType: CONCEPT", + "target": "Name: semantic entities\nType: CONCEPT" + }, + { + "src_entity_name": "layout parsing phase", + "tgt_entity_name": "figure 2", + "relation_name": "", + "weight": 9.0, + "description": "figure 2 serves as an example for the layout parsing phase", + "source_ids": [ + 59 + ], + "source": "Name: figure 2\nType: IMAGE", + "target": "Name: layout parsing phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookindex construction process", + "tgt_entity_name": "tree construction", + "relation_name": "", + "weight": 10.0, + "description": "the bookindex construction process includes tree construction as a phase", + "source_ids": [ + 48 + ], + "source": "Name: bookindex construction process\nType: TASK_OR_PROBLEM", + "target": "Name: tree construction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookindex construction process", + "tgt_entity_name": "graph construction", + "relation_name": "", + "weight": 10.0, + "description": "the bookindex construction process includes graph construction as a phase", + "source_ids": [ + 48 + ], + "source": "Name: bookindex construction process\nType: TASK_OR_PROBLEM", + "target": "Name: graph construction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "tree construction", + "tgt_entity_name": "layout parsing", + "relation_name": "", + "weight": 9.0, + "description": "tree construction is derived from layout parsing", + "source_ids": [ + 48 + ], + "source": "Name: tree construction\nType: TASK_OR_PROBLEM", + "target": "Name: layout parsing\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "tree construction", + "tgt_entity_name": "section filtering", + "relation_name": "", + "weight": 9.0, + "description": "tree construction is derived from section filtering", + "source_ids": [ + 48 + ], + "source": "Name: tree construction\nType: TASK_OR_PROBLEM", + "target": "Name: section filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "tree construction", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Tree Construction", + "source_ids": [ + 49 + ], + "source": "Name: tree construction\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "layout parsing", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Layout Parsing", + "source_ids": [ + 49 + ], + "source": "Name: layout parsing\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "layout parsing", + "relation_name": "", + "weight": 9.0, + "description": "section filtering processes the output of layout parsing to identify hierarchical structure", + "source_ids": [ + 57 + ], + "source": "Name: layout parsing\nType: METHOD_OR_TECHNIQUE", + "target": "Name: section filtering\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "layout parsing", + "tgt_entity_name": "title", + "relation_name": "", + "weight": 8.0, + "description": "layout parsing identifies blocks as title", + "source_ids": [ + 57 + ], + "source": "Name: layout parsing\nType: METHOD_OR_TECHNIQUE", + "target": "Name: title\nType: SECTION_TITLE" + }, + { + "src_entity_name": "layout parsing", + "tgt_entity_name": "b title", + "relation_name": "", + "weight": 8.0, + "description": "layout parsing identifies blocks as title forming the subset b title", + "source_ids": [ + 57 + ], + "source": "Name: layout parsing\nType: METHOD_OR_TECHNIQUE", + "target": "Name: b title\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "section filtering", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Section Filtering", + "source_ids": [ + 49 + ], + "source": "Name: section filtering\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "kg construction", + "relation_name": "", + "weight": 9.0, + "description": "graph construction involves kg construction", + "source_ids": [ + 48 + ], + "source": "Name: graph construction\nType: TASK_OR_PROBLEM", + "target": "Name: kg construction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "gradient based entity resolution", + "relation_name": "", + "weight": 9.0, + "description": "graph construction involves gradient based entity resolution", + "source_ids": [ + 48 + ], + "source": "Name: graph construction\nType: TASK_OR_PROBLEM", + "target": "Name: gradient based entity resolution\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "graph construction", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Graph Construction", + "source_ids": [ + 49 + ], + "source": "Name: graph construction\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "gradient based entity resolution", + "relation_name": "", + "weight": 10.0, + "description": "algorithm 1 is defined as a gradient based entity resolution method", + "source_ids": [ + 69 + ], + "source": "Name: gradient based entity resolution\nType: METHOD_OR_TECHNIQUE", + "target": "Name: algorithm 1\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "bookindex construction", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to BookIndex Construction", + "source_ids": [ + 49 + ], + "source": "Name: bookindex construction\nType: IMAGE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "title: method", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Title: Method", + "source_ids": [ + 49 + ], + "source": "Name: title: method\nType: SECTION_TITLE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "title: experiment", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Title: Experiment", + "source_ids": [ + 49 + ], + "source": "Name: title: experiment\nType: SECTION_TITLE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "title: moe layer", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Title: MOE Layer", + "source_ids": [ + 49 + ], + "source": "Name: title: moe layer\nType: SECTION_TITLE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "level: 2 type: section", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Level: 2 Type: Section", + "source_ids": [ + 49 + ], + "source": "Name: level: 2 type: section\nType: PARAMETER_OR_VARIABLE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "level: none type: text", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Level: None Type: Text", + "source_ids": [ + 49 + ], + "source": "Name: level: none type: text\nType: PARAMETER_OR_VARIABLE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "tree node", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Tree Node", + "source_ids": [ + 49 + ], + "source": "Name: tree node\nType: HARDWARE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "gt-link", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to GT-Link", + "source_ids": [ + 49 + ], + "source": "Name: gt-link\nType: SOFTWARE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "relation", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Relation", + "source_ids": [ + 49 + ], + "source": "Name: relation\nType: DATASET_OR_CORPUS", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "kg construction", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to KG Construction", + "source_ids": [ + 49 + ], + "source": "Name: kg construction\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "gradient-based entity resolution", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Gradient-based Entity Resolution", + "source_ids": [ + 49 + ], + "source": "Name: gradient-based entity resolution\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "gradient-based entity resolution", + "tgt_entity_name": "4.3 graph construction", + "relation_name": "", + "weight": 9.5, + "description": "The method 'Gradient-based Entity Resolution' is a key component and technique detailed within section 4.3.", + "source_ids": [ + 61 + ], + "source": "Name: gradient-based entity resolution\nType: METHOD_OR_TECHNIQUE", + "target": "Name: 4.3 graph construction\nType: SECTION_TITLE" + }, + { + "src_entity_name": "gradient-based entity resolution", + "tgt_entity_name": "4.3.2 gradient-based entity resolution", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Gradient-based Entity Resolution' is the primary methodological topic of section 4.3.2.", + "source_ids": [ + 65 + ], + "source": "Name: gradient-based entity resolution\nType: METHOD_OR_TECHNIQUE", + "target": "Name: 4.3.2 gradient-based entity resolution\nType: SECTION_TITLE" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "similarity", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Similarity", + "source_ids": [ + 49 + ], + "source": "Name: similarity\nType: EVALUATION_METRIC", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Entity", + "source_ids": [ + 49 + ], + "source": "Name: entity\nType: DATASET_OR_CORPUS", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "merge", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Merge", + "source_ids": [ + 49 + ], + "source": "Name: merge\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/52'\nType: UNKNOWN" + }, + { + "src_entity_name": "graph tree link", + "tgt_entity_name": "tree structure", + "relation_name": "", + "weight": 10.0, + "description": "the graph tree link connects entities to specific tree nodes within the tree structure", + "source_ids": [ + 51 + ], + "source": "Name: tree structure\nType: TASK_OR_PROBLEM", + "target": "Name: graph tree link\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "titles", + "relation_name": "", + "weight": 9.0, + "description": "titles are examples of nodes included in the tree structure", + "source_ids": [ + 51 + ], + "source": "Name: tree structure\nType: TASK_OR_PROBLEM", + "target": "Name: titles\nType: SECTION_TITLE" + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "sections", + "relation_name": "", + "weight": 9.0, + "description": "sections are examples of nodes included in the tree structure", + "source_ids": [ + 51 + ], + "source": "Name: tree structure\nType: TASK_OR_PROBLEM", + "target": "Name: sections\nType: SECTION_TITLE" + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "e t", + "relation_name": "", + "weight": 10.0, + "description": "e t represents the nesting relationships contained within the tree structure", + "source_ids": [ + 51 + ], + "source": "Name: tree structure\nType: TASK_OR_PROBLEM", + "target": "Name: e t\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "graph tree link", + "tgt_entity_name": "knowledge graph", + "relation_name": "", + "weight": 10.0, + "description": "the graph tree link connects entities from the knowledge graph to the tree structure", + "source_ids": [ + 51 + ], + "source": "Name: knowledge graph\nType: SOFTWARE", + "target": "Name: graph tree link\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "v", + "relation_name": "", + "weight": 10.0, + "description": "v represents the entities contained within the knowledge graph", + "source_ids": [ + 51 + ], + "source": "Name: knowledge graph\nType: SOFTWARE", + "target": "Name: v\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "e g", + "relation_name": "", + "weight": 10.0, + "description": "e g represents the relations contained within the knowledge graph", + "source_ids": [ + 51 + ], + "source": "Name: knowledge graph\nType: SOFTWARE", + "target": "Name: e g\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "v", + "relation_name": "", + "weight": 9.0, + "description": "the mapping m is defined as a function from the set of entities v", + "source_ids": [ + 77 + ], + "source": "Name: v\nType: PARAMETER_OR_VARIABLE", + "target": "Name: mapping m\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "", + "tgt_entity_name": "none", + "relation_name": "", + "weight": 7.0, + "description": "the final node type can be assigned the value none if a block has no level", + "source_ids": [ + 57 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: none\nType: SECTION_TITLE" + }, + { + "src_entity_name": "", + "tgt_entity_name": "case b", + "relation_name": "", + "weight": 10.0, + "description": "is the specific alias being discussed within the scenario defined as case b", + "source_ids": [ + 73 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: case b\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "", + "tgt_entity_name": "reranker", + "relation_name": "", + "weight": 8.0, + "description": "the scores of are influenced by the inherent discriminative limitations of the reranker", + "source_ids": [ + 73 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: reranker\nType: TECHNOLOGY" + }, + { + "src_entity_name": "text ranker", + "tgt_entity_name": "", + "relation_name": "", + "weight": 9.0, + "description": "text ranker uses the query to evaluate semantic relevance", + "source_ids": [ + 109 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: text ranker\nType: SOFTWARE" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "", + "relation_name": "", + "weight": 9.0, + "description": "skyline ranker uses the criterion to filter nodes", + "source_ids": [ + 109 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: skyline ranker\nType: SOFTWARE" + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "", + "relation_name": "", + "weight": 8.0, + "description": "the skyline operator utilizes as a scoring dimension", + "source_ids": [ + 109 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: skyline operator\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 10.0, + "description": "the sequence 1 is selected from the library", + "source_ids": [ + 112 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: 1\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent plan", + "tgt_entity_name": "", + "relation_name": "", + "weight": 10.0, + "description": "the agent plan method defines the generation of the plan", + "source_ids": [ + 112 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: agent plan\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "equation 8", + "tgt_entity_name": "", + "relation_name": "", + "weight": 10.0, + "description": "equation 8 defines the variable", + "source_ids": [ + 112 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: equation 8\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "", + "tgt_entity_name": "modal filter", + "relation_name": "", + "weight": 9.0, + "description": "the symbol denotes the application of a modal filter at each step", + "source_ids": [ + 122 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: modal filter\nType: TECHNOLOGY" + }, + { + "src_entity_name": "", + "tgt_entity_name": "range filter", + "relation_name": "", + "weight": 9.0, + "description": "the symbol denotes the application of a range filter at each step", + "source_ids": [ + 122 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: range filter\nType: TECHNOLOGY" + }, + { + "src_entity_name": "", + "tgt_entity_name": "nested composition", + "relation_name": "", + "weight": 10.0, + "description": "the symbol represents the nested composition of filters", + "source_ids": [ + 122 + ], + "source": "Name: \nType: UNKNOWN", + "target": "Name: nested composition\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "tree component", + "tgt_entity_name": "section nodes", + "relation_name": "", + "weight": 8.0, + "description": "the tree component organizes content blocks within section nodes", + "source_ids": [ + 52 + ], + "source": "Name: tree component\nType: SOFTWARE", + "target": "Name: section nodes\nType: PRODUCT" + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "tree component", + "relation_name": "", + "weight": 8.0, + "description": "gt link connects entities back to their corresponding tree nodes", + "source_ids": [ + 52 + ], + "source": "Name: tree component\nType: SOFTWARE", + "target": "Name: gt link\nType: TECHNOLOGY" + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "graph component", + "relation_name": "", + "weight": 8.0, + "description": "gt link is a feature within the graph component that connects entities to tree nodes", + "source_ids": [ + 52 + ], + "source": "Name: graph component\nType: SOFTWARE", + "target": "Name: gt link\nType: TECHNOLOGY" + }, + { + "src_entity_name": "graph component", + "tgt_entity_name": "semantic entities", + "relation_name": "", + "weight": 8.0, + "description": "the graph component is composed of entities and relations extracted from nodes which include semantic entities", + "source_ids": [ + 52 + ], + "source": "Name: graph component\nType: SOFTWARE", + "target": "Name: semantic entities\nType: CONCEPT" + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "semantic entities", + "relation_name": "", + "weight": 9.0, + "description": "gt link explicitly connects semantic entities back to their corresponding tree nodes", + "source_ids": [ + 52 + ], + "source": "Name: gt link\nType: TECHNOLOGY", + "target": "Name: semantic entities\nType: CONCEPT" + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "gt link", + "relation_name": "", + "weight": 9.0, + "description": "gt link is refined during the entity resolution process", + "source_ids": [ + 77 + ], + "source": "Name: gt link\nType: TECHNOLOGY", + "target": "Name: entity resolution\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "e q", + "relation_name": "", + "weight": 9.0, + "description": "gt link is the mechanism used to link sections to entities e q", + "source_ids": [ + 104 + ], + "source": "Name: gt link\nType: TECHNOLOGY", + "target": "Name: e q\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "section node", + "relation_name": "", + "weight": 8.0, + "description": "gt link links sections nodes to entities", + "source_ids": [ + 104 + ], + "source": "Name: gt link\nType: TECHNOLOGY", + "target": "Name: section node\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "text", + "tgt_entity_name": "section nodes", + "relation_name": "", + "weight": 7.0, + "description": "text serves as a leaf node nested within section nodes", + "source_ids": [ + 52 + ], + "source": "Name: text\nType: PRODUCT", + "target": "Name: section nodes\nType: PRODUCT" + }, + { + "src_entity_name": "text", + "tgt_entity_name": "content blocks", + "relation_name": "", + "weight": 10.0, + "description": "text is identified as a type of content block", + "source_ids": [ + 52 + ], + "source": "Name: text\nType: PRODUCT", + "target": "Name: content blocks\nType: PRODUCT" + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 8.0, + "description": "the node set retains nodes of the type text", + "source_ids": [ + 58 + ], + "source": "Name: text\nType: PRODUCT", + "target": "Name: node set\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "section nodes", + "relation_name": "", + "weight": 7.0, + "description": "tables serve as a leaf node nested within section nodes", + "source_ids": [ + 52 + ], + "source": "Name: tables\nType: PRODUCT", + "target": "Name: section nodes\nType: PRODUCT" + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "content blocks", + "relation_name": "", + "weight": 10.0, + "description": "tables are identified as a type of content block", + "source_ids": [ + 52 + ], + "source": "Name: tables\nType: PRODUCT", + "target": "Name: content blocks\nType: PRODUCT" + }, + { + "src_entity_name": "images", + "tgt_entity_name": "section nodes", + "relation_name": "", + "weight": 7.0, + "description": "images serve as a leaf node nested within section nodes", + "source_ids": [ + 52 + ], + "source": "Name: images\nType: PRODUCT", + "target": "Name: section nodes\nType: PRODUCT" + }, + { + "src_entity_name": "images", + "tgt_entity_name": "content blocks", + "relation_name": "", + "weight": 10.0, + "description": "images are identified as a type of content block", + "source_ids": [ + 52 + ], + "source": "Name: images\nType: PRODUCT", + "target": "Name: content blocks\nType: PRODUCT" + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "leaf nodes", + "relation_name": "", + "weight": 9.0, + "description": "content blocks serve as leaf nodes within the structure", + "source_ids": [ + 52 + ], + "source": "Name: content blocks\nType: PRODUCT", + "target": "Name: leaf nodes\nType: PRODUCT" + }, + { + "src_entity_name": "t", + "tgt_entity_name": "task or problem", + "relation_name": "", + "weight": 5.0, + "description": "t represents the structured hierarchical tree which is the outcome of the transformation task described", + "source_ids": [ + 54 + ], + "source": "Name: t\nType: TASK_OR_PROBLEM", + "target": "Name: task or problem\nType: UNKNOWN" + }, + { + "src_entity_name": "robust layout parsing", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 9.0, + "description": "robust layout parsing is a step used to create the structured hierarchical tree t", + "source_ids": [ + 54 + ], + "source": "Name: t\nType: TASK_OR_PROBLEM", + "target": "Name: robust layout parsing\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "intelligent section filtering", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 9.0, + "description": "intelligent section filtering is a step used to create the structured hierarchical tree t", + "source_ids": [ + 54 + ], + "source": "Name: t\nType: TASK_OR_PROBLEM", + "target": "Name: intelligent section filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "raw document", + "tgt_entity_name": "robust layout parsing", + "relation_name": "", + "weight": 8.0, + "description": "raw document is the input processed by the robust layout parsing step", + "source_ids": [ + 54 + ], + "source": "Name: raw document\nType: PRODUCT", + "target": "Name: robust layout parsing\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "raw document", + "tgt_entity_name": "intelligent section filtering", + "relation_name": "", + "weight": 8.0, + "description": "raw document is the input processed by the intelligent section filtering step", + "source_ids": [ + 54 + ], + "source": "Name: raw document\nType: PRODUCT", + "target": "Name: intelligent section filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "layout analysis", + "tgt_entity_name": "4.2.1 layout parsing", + "relation_name": "", + "weight": 9.5, + "description": "Layout Analysis is a core methodological component discussed within section 4.2.1.", + "source_ids": [ + 55 + ], + "source": "Name: 4.2.1 layout parsing\nType: SECTION_TITLE", + "target": "Name: layout analysis\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "recognition models", + "tgt_entity_name": "4.2.1 layout parsing", + "relation_name": "", + "weight": 9.5, + "description": "Recognition Models are the primary tools used in the process detailed in section 4.2.1.", + "source_ids": [ + 55 + ], + "source": "Name: 4.2.1 layout parsing\nType: SECTION_TITLE", + "target": "Name: recognition models\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "document d", + "tgt_entity_name": "4.2.1 layout parsing", + "relation_name": "", + "weight": 10.0, + "description": "Document D is the specific input entity being processed in section 4.2.1.", + "source_ids": [ + 55 + ], + "source": "Name: 4.2.1 layout parsing\nType: SECTION_TITLE", + "target": "Name: document d\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "the output", + "tgt_entity_name": "primitive", + "relation_name": "", + "weight": 9.0, + "description": "the output consists of a sequence of primitives", + "source_ids": [ + 56 + ], + "source": "Name: the output\nType: TASK_OR_PROBLEM", + "target": "Name: primitive\nType: CONCEPT" + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 7.0, + "description": "section filtering aims to correct blocks erroneously parsed as title such as descriptive text within images", + "source_ids": [ + 57 + ], + "source": "Name: section filtering\nType: TASK_OR_PROBLEM", + "target": "Name: image\nType: IMAGE" + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 7.0, + "description": "section filtering aims to correct blocks erroneously parsed as title such as borderless table headers", + "source_ids": [ + 57 + ], + "source": "Name: section filtering\nType: TASK_OR_PROBLEM", + "target": "Name: table\nType: TABLE" + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 9.0, + "description": "section filtering selects the candidate subset b for analysis", + "source_ids": [ + 57 + ], + "source": "Name: section filtering\nType: TASK_OR_PROBLEM", + "target": "Name: b\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "b title", + "relation_name": "", + "weight": 9.0, + "description": "section filtering selects the candidate subset b title for analysis", + "source_ids": [ + 57 + ], + "source": "Name: section filtering\nType: TASK_OR_PROBLEM", + "target": "Name: b title\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 8.0, + "description": "section filtering corrects blocks erroneously parsed as title by re classifying them as text", + "source_ids": [ + 57 + ], + "source": "Name: section filtering\nType: TASK_OR_PROBLEM", + "target": "Name: text\nType: SECTION_TITLE" + }, + { + "src_entity_name": "layout parsing phase", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 8.0, + "description": "the layout parsing phase identifies image as a type of block", + "source_ids": [ + 59 + ], + "source": "Name: image\nType: IMAGE", + "target": "Name: layout parsing phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "image", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 8.5, + "description": "The Image node type triggers the use of the Vision Language Model in this section's logic.", + "source_ids": [ + 63 + ], + "source": "Name: image\nType: IMAGE", + "target": "Name: 4.3.1 kg construction\nType: SECTION_TITLE" + }, + { + "src_entity_name": "filters", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 8.0, + "description": "filters can be of type image to target visual elements", + "source_ids": [ + 258 + ], + "source": "Name: image\nType: IMAGE", + "target": "Name: filters\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "image", + "tgt_entity_name": "figures", + "relation_name": "", + "weight": 9.0, + "description": "figures are examples of images", + "source_ids": [ + 258 + ], + "source": "Name: image\nType: IMAGE", + "target": "Name: figures\nType: IMAGE" + }, + { + "src_entity_name": "filters", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 8.0, + "description": "filters can be of type table to target tabular data", + "source_ids": [ + 258 + ], + "source": "Name: table\nType: TABLE", + "target": "Name: filters\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "filter modal", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 8.0, + "description": "filter modal applies the explicit constraints c generated during the plan", + "source_ids": [ + 102 + ], + "source": "Name: c\nType: PARAMETER_OR_VARIABLE", + "target": "Name: filter modal\nType: TECHNOLOGY" + }, + { + "src_entity_name": "filter range", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 8.0, + "description": "filter range applies the explicit constraints c generated during the plan", + "source_ids": [ + 102 + ], + "source": "Name: c\nType: PARAMETER_OR_VARIABLE", + "target": "Name: filter range\nType: TECHNOLOGY" + }, + { + "src_entity_name": "c", + "tgt_entity_name": "modal types", + "relation_name": "", + "weight": 10.0, + "description": "modal types are examples of the explicit constraints c", + "source_ids": [ + 102 + ], + "source": "Name: c\nType: PARAMETER_OR_VARIABLE", + "target": "Name: modal types\nType: CONCEPT" + }, + { + "src_entity_name": "c", + "tgt_entity_name": "page ranges", + "relation_name": "", + "weight": 10.0, + "description": "page ranges are examples of the explicit constraints c", + "source_ids": [ + 102 + ], + "source": "Name: c\nType: PARAMETER_OR_VARIABLE", + "target": "Name: page ranges\nType: CONCEPT" + }, + { + "src_entity_name": "c", + "tgt_entity_name": "plan", + "relation_name": "", + "weight": 9.0, + "description": "the constraints c are generated during the plan", + "source_ids": [ + 102 + ], + "source": "Name: c\nType: PARAMETER_OR_VARIABLE", + "target": "Name: plan\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "node set", + "relation_name": "", + "weight": 9.0, + "description": "the tree is constructed using the node set which contains all blocks from the filtering process", + "source_ids": [ + 58 + ], + "source": "Name: tree\nType: TASK_OR_PROBLEM", + "target": "Name: node set\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "edge set", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 9.0, + "description": "the edge set is established to define the structure of the tree", + "source_ids": [ + 58 + ], + "source": "Name: tree\nType: TASK_OR_PROBLEM", + "target": "Name: edge set\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "hierarchical levels", + "relation_name": "", + "weight": 8.0, + "description": "hierarchical levels are used to infer relationships within the tree structure", + "source_ids": [ + 58 + ], + "source": "Name: tree\nType: TASK_OR_PROBLEM", + "target": "Name: hierarchical levels\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "document order", + "relation_name": "", + "weight": 8.0, + "description": "document order is used to assemble the complete tree structure", + "source_ids": [ + 58 + ], + "source": "Name: tree\nType: TASK_OR_PROBLEM", + "target": "Name: document order\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 9.0, + "description": "the selector operators operate on the tree t n e t to produce a filtered subset", + "source_ids": [ + 102 + ], + "source": "Name: tree\nType: TASK_OR_PROBLEM", + "target": "Name: selector\nType: TECHNOLOGY" + }, + { + "src_entity_name": "filter modal", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 8.0, + "description": "filter modal operates on the tree to produce a filtered subset", + "source_ids": [ + 102 + ], + "source": "Name: tree\nType: TASK_OR_PROBLEM", + "target": "Name: filter modal\nType: TECHNOLOGY" + }, + { + "src_entity_name": "filter range", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 8.0, + "description": "filter range operates on the tree to produce a filtered subset", + "source_ids": [ + 102 + ], + "source": "Name: tree\nType: TASK_OR_PROBLEM", + "target": "Name: filter range\nType: TECHNOLOGY" + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 10.0, + "description": "the tree t is composed of the set of nodes n", + "source_ids": [ + 102 + ], + "source": "Name: tree\nType: TASK_OR_PROBLEM", + "target": "Name: nodes\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "edges", + "relation_name": "", + "weight": 10.0, + "description": "the tree t is composed of the set of edges e t", + "source_ids": [ + 102 + ], + "source": "Name: tree\nType: TASK_OR_PROBLEM", + "target": "Name: edges\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "section", + "relation_name": "", + "weight": 8.0, + "description": "the node set retains nodes of the type section", + "source_ids": [ + 58 + ], + "source": "Name: node set\nType: TASK_OR_PROBLEM", + "target": "Name: section\nType: PRODUCT" + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 8.0, + "description": "the node set retains nodes of the type table", + "source_ids": [ + 58 + ], + "source": "Name: node set\nType: TASK_OR_PROBLEM", + "target": "Name: table\nType: PRODUCT" + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 8.0, + "description": "the node set retains nodes of the type image", + "source_ids": [ + 58 + ], + "source": "Name: node set\nType: TASK_OR_PROBLEM", + "target": "Name: image\nType: PRODUCT" + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "filtering", + "relation_name": "", + "weight": 9.0, + "description": "the node set is composed of blocks resulting from the filtering process", + "source_ids": [ + 58 + ], + "source": "Name: node set\nType: TASK_OR_PROBLEM", + "target": "Name: filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "re classification", + "relation_name": "", + "weight": 9.0, + "description": "the node set is composed of blocks resulting from the re classification process", + "source_ids": [ + 58 + ], + "source": "Name: node set\nType: TASK_OR_PROBLEM", + "target": "Name: re classification\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "edge set", + "tgt_entity_name": "parent child nesting relationships", + "relation_name": "", + "weight": 10.0, + "description": "the edge set represents the parent child nesting relationships", + "source_ids": [ + 58 + ], + "source": "Name: edge set\nType: TASK_OR_PROBLEM", + "target": "Name: parent child nesting relationships\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "v table", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 10.0, + "description": "v table is the distinct entity created to represent the table logical type", + "source_ids": [ + 64 + ], + "source": "Name: table\nType: PRODUCT", + "target": "Name: v table\nType: PRODUCT" + }, + { + "src_entity_name": "global", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 10.0, + "description": "the global process specifically targets and filters for items of type table", + "source_ids": [ + 251 + ], + "source": "Name: table\nType: PRODUCT", + "target": "Name: global\nType: CONCEPT" + }, + { + "src_entity_name": "final tree structure", + "tgt_entity_name": "document order", + "relation_name": "", + "weight": 9.0, + "description": "the final tree structure is assembled based on the document order of the nodes", + "source_ids": [ + 59 + ], + "source": "Name: document order\nType: PARAMETER_OR_VARIABLE", + "target": "Name: final tree structure\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "node", + "tgt_entity_name": "content", + "relation_name": "", + "weight": 9.0, + "description": "each node retains its content", + "source_ids": [ + 58 + ], + "source": "Name: content\nType: PARAMETER_OR_VARIABLE", + "target": "Name: node\nType: UNKNOWN" + }, + { + "src_entity_name": "node", + "tgt_entity_name": "final node type", + "relation_name": "", + "weight": 9.0, + "description": "each node retains its final node type", + "source_ids": [ + 58 + ], + "source": "Name: final node type\nType: PARAMETER_OR_VARIABLE", + "target": "Name: node\nType: UNKNOWN" + }, + { + "src_entity_name": "layout parsing phase", + "tgt_entity_name": "title text table", + "relation_name": "", + "weight": 8.0, + "description": "the layout parsing phase identifies title text table as a type of block", + "source_ids": [ + 59 + ], + "source": "Name: layout parsing phase\nType: TASK_OR_PROBLEM", + "target": "Name: title text table\nType: PRODUCT" + }, + { + "src_entity_name": "layout parsing phase", + "tgt_entity_name": "section filtering phase", + "relation_name": "", + "weight": 6.0, + "description": "the layout parsing phase precedes the section filtering phase in the document processing workflow", + "source_ids": [ + 59 + ], + "source": "Name: layout parsing phase\nType: TASK_OR_PROBLEM", + "target": "Name: section filtering phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "method", + "relation_name": "", + "weight": 9.0, + "description": "the section filtering phase analyzes method as a title candidate", + "source_ids": [ + 59 + ], + "source": "Name: section filtering phase\nType: TASK_OR_PROBLEM", + "target": "Name: method\nType: SECTION_TITLE" + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "experiment", + "relation_name": "", + "weight": 9.0, + "description": "the section filtering phase analyzes experiment as a title candidate", + "source_ids": [ + 59 + ], + "source": "Name: section filtering phase\nType: TASK_OR_PROBLEM", + "target": "Name: experiment\nType: SECTION_TITLE" + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "moe layer", + "relation_name": "", + "weight": 9.0, + "description": "the section filtering phase analyzes moe layer which was erroneously tagged and re classified", + "source_ids": [ + 59 + ], + "source": "Name: section filtering phase\nType: TASK_OR_PROBLEM", + "target": "Name: moe layer\nType: SECTION_TITLE" + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "final tree structure", + "relation_name": "", + "weight": 7.0, + "description": "the section filtering phase contributes to the creation of the final tree structure", + "source_ids": [ + 59 + ], + "source": "Name: section filtering phase\nType: TASK_OR_PROBLEM", + "target": "Name: final tree structure\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "method", + "tgt_entity_name": "fontsize", + "relation_name": "", + "weight": 10.0, + "description": "the method block has a fontsize of 14", + "source_ids": [ + 59 + ], + "source": "Name: method\nType: SECTION_TITLE", + "target": "Name: fontsize\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "method", + "tgt_entity_name": "14", + "relation_name": "", + "weight": 10.0, + "description": "the method block is associated with the measurement value 14", + "source_ids": [ + 59 + ], + "source": "Name: method\nType: SECTION_TITLE", + "target": "Name: 14\nType: MEASUREMENT" + }, + { + "src_entity_name": "method", + "tgt_entity_name": "level", + "relation_name": "", + "weight": 10.0, + "description": "the method block is identified as having a level of 2", + "source_ids": [ + 59 + ], + "source": "Name: method\nType: SECTION_TITLE", + "target": "Name: level\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "method", + "tgt_entity_name": "2", + "relation_name": "", + "weight": 10.0, + "description": "the method block is associated with the measurement value 2", + "source_ids": [ + 59 + ], + "source": "Name: method\nType: SECTION_TITLE", + "target": "Name: 2\nType: MEASUREMENT" + }, + { + "src_entity_name": "experiment", + "tgt_entity_name": "fontsize", + "relation_name": "", + "weight": 10.0, + "description": "the experiment block has a fontsize of 14", + "source_ids": [ + 59 + ], + "source": "Name: experiment\nType: SECTION_TITLE", + "target": "Name: fontsize\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "experiment", + "tgt_entity_name": "14", + "relation_name": "", + "weight": 10.0, + "description": "the experiment block is associated with the measurement value 14", + "source_ids": [ + 59 + ], + "source": "Name: experiment\nType: SECTION_TITLE", + "target": "Name: 14\nType: MEASUREMENT" + }, + { + "src_entity_name": "experiment", + "tgt_entity_name": "level", + "relation_name": "", + "weight": 10.0, + "description": "the experiment block is identified as having a level of 2", + "source_ids": [ + 59 + ], + "source": "Name: experiment\nType: SECTION_TITLE", + "target": "Name: level\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "experiment", + "tgt_entity_name": "2", + "relation_name": "", + "weight": 10.0, + "description": "the experiment block is associated with the measurement value 2", + "source_ids": [ + 59 + ], + "source": "Name: experiment\nType: SECTION_TITLE", + "target": "Name: 2\nType: MEASUREMENT" + }, + { + "src_entity_name": "moe layer", + "tgt_entity_name": "fontsize", + "relation_name": "", + "weight": 10.0, + "description": "the moe layer block has a fontsize of 20", + "source_ids": [ + 59 + ], + "source": "Name: moe layer\nType: SECTION_TITLE", + "target": "Name: fontsize\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "moe layer", + "tgt_entity_name": "20", + "relation_name": "", + "weight": 10.0, + "description": "the moe layer block is associated with the measurement value 20", + "source_ids": [ + 59 + ], + "source": "Name: moe layer\nType: SECTION_TITLE", + "target": "Name: 20\nType: MEASUREMENT" + }, + { + "src_entity_name": "moe layer", + "tgt_entity_name": "level", + "relation_name": "", + "weight": 10.0, + "description": "the moe layer block is identified as having a level of none", + "source_ids": [ + 59 + ], + "source": "Name: moe layer\nType: SECTION_TITLE", + "target": "Name: level\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "moe layer", + "tgt_entity_name": "none", + "relation_name": "", + "weight": 10.0, + "description": "the moe layer block is associated with the measurement value none", + "source_ids": [ + 59 + ], + "source": "Name: moe layer\nType: SECTION_TITLE", + "target": "Name: none\nType: MEASUREMENT" + }, + { + "src_entity_name": "final tree structure", + "tgt_entity_name": "level", + "relation_name": "", + "weight": 9.0, + "description": "the final tree structure is assembled based on the determined levels of the nodes", + "source_ids": [ + 59 + ], + "source": "Name: final tree structure\nType: TASK_OR_PROBLEM", + "target": "Name: level\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "proceedings of the acm on management of data", + "tgt_entity_name": "2", + "relation_name": "", + "weight": 10.0, + "description": "the publication volume is 2", + "source_ids": [ + 199 + ], + "source": "Name: 2\nType: MEASUREMENT", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "tree t", + "tgt_entity_name": "knowledge graph g", + "relation_name": "", + "weight": 9.0, + "description": "tree t is the source from which entities are extracted to populate knowledge graph g", + "source_ids": [ + 62 + ], + "source": "Name: tree t\nType: TASK_OR_PROBLEM", + "target": "Name: knowledge graph g\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "tree t", + "tgt_entity_name": "tree nodes", + "relation_name": "", + "weight": 10.0, + "description": "tree nodes are the constituent parts of tree t that serve as the source for entity extraction", + "source_ids": [ + 62 + ], + "source": "Name: tree t\nType: TASK_OR_PROBLEM", + "target": "Name: tree nodes\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "knowledge graph g", + "tgt_entity_name": "tree nodes", + "relation_name": "", + "weight": 9.0, + "description": "knowledge graph g is populated by extracting and refining entities from tree nodes", + "source_ids": [ + 62 + ], + "source": "Name: knowledge graph g\nType: TASK_OR_PROBLEM", + "target": "Name: tree nodes\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "tree t", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 9.5, + "description": "The Tree T provides the input nodes that are iterated over during the construction process.", + "source_ids": [ + 63 + ], + "source": "Name: 4.3.1 kg construction\nType: SECTION_TITLE", + "target": "Name: tree t\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "vision language model", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 9.0, + "description": "The Vision Language Model is the method/tool utilized for extracting data from visual nodes within this section.", + "source_ids": [ + 63 + ], + "source": "Name: 4.3.1 kg construction\nType: SECTION_TITLE", + "target": "Name: vision language model\nType: SOFTWARE" + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 9.5, + "description": "The Mapping M is the critical output artifact generated by recording entity origins in this section.", + "source_ids": [ + 63 + ], + "source": "Name: 4.3.1 kg construction\nType: SECTION_TITLE", + "target": "Name: mapping m\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 8.0, + "description": "the mapping m bi directionally links the entities in g to their structural locations", + "source_ids": [ + 77 + ], + "source": "Name: mapping m\nType: EQUATION_OR_FORMULA", + "target": "Name: g\nType: CONCEPT" + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 8.0, + "description": "the mapping m links entities to the set of their structural locations nodes in t", + "source_ids": [ + 77 + ], + "source": "Name: mapping m\nType: EQUATION_OR_FORMULA", + "target": "Name: t\nType: CONCEPT" + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "p n", + "relation_name": "", + "weight": 9.0, + "description": "the mapping m maps entities to the power set of nodes p n", + "source_ids": [ + 77 + ], + "source": "Name: mapping m\nType: EQUATION_OR_FORMULA", + "target": "Name: p n\nType: MATHEMATICAL_CONCEPT" + }, + { + "src_entity_name": "row", + "tgt_entity_name": "v table", + "relation_name": "", + "weight": 9.0, + "description": "row headers are linked to v table via a containedin relationship", + "source_ids": [ + 64 + ], + "source": "Name: v table\nType: PRODUCT", + "target": "Name: row\nType: PRODUCT" + }, + { + "src_entity_name": "column", + "tgt_entity_name": "v table", + "relation_name": "", + "weight": 9.0, + "description": "column headers are linked to v table via a containedin relationship", + "source_ids": [ + 64 + ], + "source": "Name: v table\nType: PRODUCT", + "target": "Name: column\nType: PRODUCT" + }, + { + "src_entity_name": "header", + "tgt_entity_name": "v table", + "relation_name": "", + "weight": 9.0, + "description": "row and column headers are explicitly extracted and linked to v table", + "source_ids": [ + 64 + ], + "source": "Name: v table\nType: PRODUCT", + "target": "Name: header\nType: PRODUCT" + }, + { + "src_entity_name": "v table", + "tgt_entity_name": "node", + "relation_name": "", + "weight": 8.0, + "description": "v table is created as a distinct entity from the content of a specific node", + "source_ids": [ + 64 + ], + "source": "Name: v table\nType: PRODUCT", + "target": "Name: node\nType: CONCEPT" + }, + { + "src_entity_name": "row", + "tgt_entity_name": "header", + "relation_name": "", + "weight": 9.0, + "description": "row headers are a specific type of header extracted from table nodes", + "source_ids": [ + 64 + ], + "source": "Name: row\nType: PRODUCT", + "target": "Name: header\nType: PRODUCT" + }, + { + "src_entity_name": "row", + "tgt_entity_name": "column", + "relation_name": "", + "weight": 7.0, + "description": "row and column headers are both explicitly extracted components of table nodes", + "source_ids": [ + 64 + ], + "source": "Name: row\nType: PRODUCT", + "target": "Name: column\nType: PRODUCT" + }, + { + "src_entity_name": "column", + "tgt_entity_name": "header", + "relation_name": "", + "weight": 9.0, + "description": "column headers are a specific type of header extracted from table nodes", + "source_ids": [ + 64 + ], + "source": "Name: column\nType: PRODUCT", + "target": "Name: header\nType: PRODUCT" + }, + { + "src_entity_name": "structural semantics", + "tgt_entity_name": "logical types", + "relation_name": "", + "weight": 9.0, + "description": "structural semantics are preserved specifically for logical types like table and formula", + "source_ids": [ + 64 + ], + "source": "Name: structural semantics\nType: CONCEPT", + "target": "Name: logical types\nType: CONCEPT" + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "4.3.2 gradient-based entity resolution", + "relation_name": "", + "weight": 10.0, + "description": "The task of 'Entity Resolution' is the central subject matter detailed in section 4.3.2.", + "source_ids": [ + 65 + ], + "source": "Name: 4.3.2 gradient-based entity resolution\nType: SECTION_TITLE", + "target": "Name: entity resolution\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "canonical entity", + "relation_name": "", + "weight": 9.0, + "description": "during entity resolution entities are merged into a canonical entity", + "source_ids": [ + 77 + ], + "source": "Name: entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: canonical entity\nType: CONCEPT" + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "v n", + "relation_name": "", + "weight": 9.0, + "description": "during entity resolution the entity v n is merged into a canonical entity", + "source_ids": [ + 77 + ], + "source": "Name: entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: v n\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "v sel", + "relation_name": "", + "weight": 9.0, + "description": "the entity v n is merged into the canonical entity v sel during entity resolution", + "source_ids": [ + 77 + ], + "source": "Name: entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: v sel\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "figure 13", + "tgt_entity_name": "entity resolution", + "relation_name": "", + "weight": 9.0, + "description": "figure 13 contains the prompt used for the entity resolution judgement task", + "source_ids": [ + 284 + ], + "source": "Name: entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: figure 13\nType: IMAGE" + }, + { + "src_entity_name": "prompt", + "tgt_entity_name": "entity resolution", + "relation_name": "", + "weight": 9.0, + "description": "the prompt is specifically designed for the entity resolution judgement task", + "source_ids": [ + 284 + ], + "source": "Name: entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: prompt\nType: SOFTWARE" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "dirty er", + "relation_name": "", + "weight": 9.0, + "description": "er methods are often designed for batch processing across multiple data sources commonly referred to as dirty er", + "source_ids": [ + 66 + ], + "source": "Name: er methods\nType: TASK_OR_PROBLEM", + "target": "Name: dirty er\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "a", + "relation_name": "", + "weight": 8.0, + "description": "er methods aim to merge entities like a b and c as the same concept", + "source_ids": [ + 66 + ], + "source": "Name: er methods\nType: TASK_OR_PROBLEM", + "target": "Name: a\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 8.0, + "description": "er methods aim to merge entities like a b and c as the same concept", + "source_ids": [ + 66 + ], + "source": "Name: er methods\nType: TASK_OR_PROBLEM", + "target": "Name: b\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 8.0, + "description": "er methods aim to merge entities like a b and c as the same concept", + "source_ids": [ + 66 + ], + "source": "Name: er methods\nType: TASK_OR_PROBLEM", + "target": "Name: c\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "a b", + "relation_name": "", + "weight": 9.0, + "description": "er methods require finding all possible matching pairs such as a b to confirm equivalence", + "source_ids": [ + 66 + ], + "source": "Name: er methods\nType: TASK_OR_PROBLEM", + "target": "Name: a b\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "a c", + "relation_name": "", + "weight": 9.0, + "description": "er methods require finding all possible matching pairs such as a c to confirm equivalence", + "source_ids": [ + 66 + ], + "source": "Name: er methods\nType: TASK_OR_PROBLEM", + "target": "Name: a c\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "b c", + "relation_name": "", + "weight": 9.0, + "description": "er methods require finding all possible matching pairs such as b c to confirm equivalence", + "source_ids": [ + 66 + ], + "source": "Name: er methods\nType: TASK_OR_PROBLEM", + "target": "Name: b c\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "12", + "relation_name": "", + "weight": 6.0, + "description": "the text cites reference 12 in the context of ensuring accurate entity resolution", + "source_ids": [ + 66 + ], + "source": "Name: er methods\nType: TASK_OR_PROBLEM", + "target": "Name: 12\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "o n 2", + "relation_name": "", + "weight": 9.0, + "description": "the process of er methods leads to a quadratic o n 2 number of pairwise comparisons", + "source_ids": [ + 66 + ], + "source": "Name: er methods\nType: TASK_OR_PROBLEM", + "target": "Name: o n 2\nType: MEASUREMENT" + }, + { + "src_entity_name": "a", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 7.0, + "description": "a and b are compared as a pair a b to confirm their equivalence", + "source_ids": [ + 66 + ], + "source": "Name: a\nType: TASK_OR_PROBLEM", + "target": "Name: b\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "a", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 7.0, + "description": "a and c are compared as a pair a c to confirm their equivalence", + "source_ids": [ + 66 + ], + "source": "Name: a\nType: TASK_OR_PROBLEM", + "target": "Name: c\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "b", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 7.0, + "description": "b and c are compared as a pair b c to confirm their equivalence", + "source_ids": [ + 66 + ], + "source": "Name: b\nType: TASK_OR_PROBLEM", + "target": "Name: c\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "clean er", + "relation_name": "", + "weight": 9.0, + "description": "the method operates on a single document simplified as the clean er", + "source_ids": [ + 67 + ], + "source": "Name: gradient based er method\nType: TECHNOLOGY", + "target": "Name: clean er\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "database", + "relation_name": "", + "weight": 8.0, + "description": "the method determines where a new entity fits among entities already in the database", + "source_ids": [ + 67 + ], + "source": "Name: gradient based er method\nType: TECHNOLOGY", + "target": "Name: database\nType: SOFTWARE" + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "top k most relevant candidates", + "relation_name": "", + "weight": 8.0, + "description": "the method yields scoring patterns when a new entity is reranked against its top k candidates", + "source_ids": [ + 67 + ], + "source": "Name: gradient based er method\nType: TECHNOLOGY", + "target": "Name: top k most relevant candidates\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 10.0, + "description": "the method performs entity resolution incrementally as each new entity is extracted", + "source_ids": [ + 67 + ], + "source": "Name: gradient based er method\nType: TECHNOLOGY", + "target": "Name: entity\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "quadratic batch problem", + "relation_name": "", + "weight": 9.0, + "description": "the method transforms the quadratic batch problem into a simpler task", + "source_ids": [ + 67 + ], + "source": "Name: gradient based er method\nType: TECHNOLOGY", + "target": "Name: quadratic batch problem\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "repeated lookup task", + "relation_name": "", + "weight": 9.0, + "description": "the method transforms the problem into a repeated lookup task", + "source_ids": [ + 67 + ], + "source": "Name: gradient based er method\nType: TECHNOLOGY", + "target": "Name: repeated lookup task\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "entity", + "tgt_entity_name": "database", + "relation_name": "", + "weight": 9.0, + "description": "the new entity is determined to fit among the already processed entities in the database", + "source_ids": [ + 67 + ], + "source": "Name: database\nType: SOFTWARE", + "target": "Name: entity\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "entity", + "tgt_entity_name": "top k most relevant candidates", + "relation_name": "", + "weight": 9.0, + "description": "the new entity is reranked against its top k most relevant candidates", + "source_ids": [ + 67 + ], + "source": "Name: top k most relevant candidates\nType: EVALUATION_METRIC", + "target": "Name: entity\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "incremental process", + "tgt_entity_name": "scoring patterns", + "relation_name": "", + "weight": 8.0, + "description": "the incremental process yields two distinct scoring patterns", + "source_ids": [ + 67 + ], + "source": "Name: scoring patterns\nType: EVALUATION_METRIC", + "target": "Name: incremental process\nType: UNKNOWN" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "v n", + "relation_name": "", + "weight": 10.0, + "description": "algorithm 1 processes the new entity v n by retrieving candidates and making a decision", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: v n\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "e c", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 retrieves the top k candidates e c from the vector database db", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: e c\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "db", + "relation_name": "", + "weight": 9.0, + "description": "the vector database db is the source from which candidates e c are retrieved", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: db\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "r", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 uses the reranker r to re rank candidates e c against v n", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: r\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "s", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 sorts candidates based on their scores s", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: s\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "sel", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 initializes and iterates through the selection set sel", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: sel\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 8.0, + "description": "algorithm 1 uses the gradient threshold g to determine if a score drop is sharp", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: g\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "case a", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 identifies case a when the selection set sel is identical to e c", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: case a\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "case b", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 identifies case b when a gradient is found in the selection set sel", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: case b\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "v sel", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 selects the canonical entity v sel from the selection set sel in case b", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: v sel\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 1 3", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 executes the steps outlined in lines 1 3 to retrieve and rerank candidates", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: lines 1 3\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 4", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 executes the initialization step described in line 4", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: line 4\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 5 8", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 executes the iteration logic described in lines 5 8", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: lines 5 8\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 7 8", + "relation_name": "", + "weight": 8.0, + "description": "the logic in lines 7 8 is part of the iteration process within algorithm 1", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: lines 7 8\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 8", + "relation_name": "", + "weight": 8.0, + "description": "line 8 defines the break condition within the loop of algorithm 1", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: line 8\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 9 14", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 executes the decision logic described in lines 9 14", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: lines 9 14\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 9 10", + "relation_name": "", + "weight": 8.0, + "description": "lines 9 10 are the specific actions taken when case a is identified in algorithm 1", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: line 9 10\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 12 14", + "relation_name": "", + "weight": 8.0, + "description": "lines 12 14 are the specific actions taken when case b is identified in algorithm 1", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: lines 12 14\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 13", + "relation_name": "", + "weight": 8.0, + "description": "line 13 is a step within the case b logic of algorithm 1", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: line 13\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 15", + "relation_name": "", + "weight": 9.0, + "description": "line 15 is the final step of algorithm 1 where results are returned", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: line 15\nType: SECTION_TITLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "score", + "relation_name": "", + "weight": 9.0, + "description": "the variable score is initialized and updated during the execution of algorithm 1", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: score\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "v c", + "relation_name": "", + "weight": 9.0, + "description": "the variable v c is the current candidate processed within the loop of algorithm 1", + "source_ids": [ + 75 + ], + "source": "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "target": "Name: v c\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "kg g", + "tgt_entity_name": "new entity v n", + "relation_name": "", + "weight": 8.0, + "description": "the new entity v n is added to or processed within the knowledge graph g", + "source_ids": [ + 70 + ], + "source": "Name: kg g\nType: TASK_OR_PROBLEM", + "target": "Name: new entity v n\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "rerank model r", + "tgt_entity_name": "entity vector database db", + "relation_name": "", + "weight": 7.0, + "description": "the rerank model r likely utilizes the entity vector database db to perform its ranking tasks", + "source_ids": [ + 70 + ], + "source": "Name: rerank model r\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: entity vector database db\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "threshold of gradient g", + "tgt_entity_name": "rerank model r", + "relation_name": "", + "weight": 6.0, + "description": "the threshold of gradient g is a parameter that influences the operation or convergence of the rerank model r", + "source_ids": [ + 70 + ], + "source": "Name: rerank model r\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: threshold of gradient g\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "rerank model r", + "tgt_entity_name": "r", + "relation_name": "", + "weight": 10.0, + "description": "r is the variable name for the rerank model", + "source_ids": [ + 70 + ], + "source": "Name: rerank model r\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: r\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "vector search number top k", + "tgt_entity_name": "entity vector database db", + "relation_name": "", + "weight": 9.0, + "description": "the vector search number top k parameter determines the scope of the search performed on the entity vector database db", + "source_ids": [ + 70 + ], + "source": "Name: entity vector database db\nType: DATASET_OR_CORPUS", + "target": "Name: vector search number top k\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "entity vector database db", + "tgt_entity_name": "db", + "relation_name": "", + "weight": 10.0, + "description": "db is the variable name for the entity vector database", + "source_ids": [ + 70 + ], + "source": "Name: entity vector database db\nType: DATASET_OR_CORPUS", + "target": "Name: db\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "vector search number top k", + "tgt_entity_name": "top k", + "relation_name": "", + "weight": 10.0, + "description": "top k is the variable name for the vector search number", + "source_ids": [ + 70 + ], + "source": "Name: vector search number top k\nType: PARAMETER_OR_VARIABLE", + "target": "Name: top k\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "threshold of gradient g", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 10.0, + "description": "g is the variable name for the threshold of gradient", + "source_ids": [ + 70 + ], + "source": "Name: threshold of gradient g\nType: PARAMETER_OR_VARIABLE", + "target": "Name: g\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 10.0, + "description": "kg and g refer to the same knowledge graph entity with g being its variable representation", + "source_ids": [ + 70 + ], + "source": "Name: kg\nType: TASK_OR_PROBLEM", + "target": "Name: g\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "e 9 is processed within the kg context", + "source_ids": [ + 76 + ], + "source": "Name: kg\nType: TASK_OR_PROBLEM", + "target": "Name: e 9\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "v", + "tgt_entity_name": "n", + "relation_name": "", + "weight": 9.0, + "description": "n is a subscript or modifier defining the specific instance of the new entity v", + "source_ids": [ + 70 + ], + "source": "Name: v\nType: TASK_OR_PROBLEM", + "target": "Name: n\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 10.0, + "description": "g is a defined component within the bookindex structure", + "source_ids": [ + 88 + ], + "source": "Name: g\nType: PARAMETER_OR_VARIABLE", + "target": "Name: bookindex\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "vector search", + "tgt_entity_name": "db", + "relation_name": "", + "weight": 9.0, + "description": "vector search operates on the db to find relevant entities", + "source_ids": [ + 71 + ], + "source": "Name: vector search\nType: UNKNOWN", + "target": "Name: db\nType: UNKNOWN" + }, + { + "src_entity_name": "vector search", + "tgt_entity_name": "top k", + "relation_name": "", + "weight": 9.0, + "description": "vector search utilizes the top k parameter to limit the number of relevant entities found", + "source_ids": [ + 71 + ], + "source": "Name: vector search\nType: UNKNOWN", + "target": "Name: top k\nType: UNKNOWN" + }, + { + "src_entity_name": "search", + "tgt_entity_name": "db", + "relation_name": "", + "weight": 9.0, + "description": "the search function is applied to the db to retrieve entities", + "source_ids": [ + 71 + ], + "source": "Name: db\nType: UNKNOWN", + "target": "Name: search\nType: UNKNOWN" + }, + { + "src_entity_name": "search", + "tgt_entity_name": "v n", + "relation_name": "", + "weight": 9.0, + "description": "the search function uses the vector v n as its query input", + "source_ids": [ + 71 + ], + "source": "Name: search\nType: UNKNOWN", + "target": "Name: v n\nType: UNKNOWN" + }, + { + "src_entity_name": "search", + "tgt_entity_name": "e c", + "relation_name": "", + "weight": 9.0, + "description": "the search function outputs the candidate entities e c", + "source_ids": [ + 71 + ], + "source": "Name: search\nType: UNKNOWN", + "target": "Name: e c\nType: UNKNOWN" + }, + { + "src_entity_name": "r", + "tgt_entity_name": "e", + "relation_name": "", + "weight": 8.0, + "description": "the function r takes entities e as input to process them", + "source_ids": [ + 71 + ], + "source": "Name: r\nType: UNKNOWN", + "target": "Name: e\nType: UNKNOWN" + }, + { + "src_entity_name": "r", + "tgt_entity_name": "v cn", + "relation_name": "", + "weight": 8.0, + "description": "the function r uses the vector v cn to calculate rerank scores", + "source_ids": [ + 71 + ], + "source": "Name: r\nType: UNKNOWN", + "target": "Name: v cn\nType: UNKNOWN" + }, + { + "src_entity_name": "sort", + "tgt_entity_name": "e", + "relation_name": "", + "weight": 8.0, + "description": "the sort operation is applied to the list of entities e", + "source_ids": [ + 71 + ], + "source": "Name: e\nType: UNKNOWN", + "target": "Name: sort\nType: UNKNOWN" + }, + { + "src_entity_name": "gradient select", + "tgt_entity_name": "e", + "relation_name": "", + "weight": 8.0, + "description": "gradient select is used to select entities from the remaining list e", + "source_ids": [ + 71 + ], + "source": "Name: e\nType: UNKNOWN", + "target": "Name: gradient select\nType: UNKNOWN" + }, + { + "src_entity_name": "sort", + "tgt_entity_name": "s", + "relation_name": "", + "weight": 9.0, + "description": "the sort operation generates the sorted list s", + "source_ids": [ + 71 + ], + "source": "Name: sort\nType: UNKNOWN", + "target": "Name: s\nType: UNKNOWN" + }, + { + "src_entity_name": "sort", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 9.0, + "description": "the sort operation orders entities based on the rerank scores c", + "source_ids": [ + 71 + ], + "source": "Name: sort\nType: UNKNOWN", + "target": "Name: c\nType: UNKNOWN" + }, + { + "src_entity_name": "gradient select", + "tgt_entity_name": "sel", + "relation_name": "", + "weight": 9.0, + "description": "the gradient select method produces the selected entities sel", + "source_ids": [ + 71 + ], + "source": "Name: gradient select\nType: UNKNOWN", + "target": "Name: sel\nType: UNKNOWN" + }, + { + "src_entity_name": "score", + "tgt_entity_name": "s 0", + "relation_name": "", + "weight": 10.0, + "description": "the score variable is assigned the value of the first element s 0 from the sorted list", + "source_ids": [ + 71 + ], + "source": "Name: score\nType: UNKNOWN", + "target": "Name: s 0\nType: UNKNOWN" + }, + { + "src_entity_name": "case a", + "tgt_entity_name": "new entity", + "relation_name": "", + "weight": 9.0, + "description": "case a describes the scenario where a new entity is introduced and evaluated", + "source_ids": [ + 72 + ], + "source": "Name: case a\nType: TASK_OR_PROBLEM", + "target": "Name: new entity\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "new entity", + "tgt_entity_name": "existing entities", + "relation_name": "", + "weight": 10.0, + "description": "the new entity s relevance scores are calculated against all existing entities", + "source_ids": [ + 72 + ], + "source": "Name: new entity\nType: TASK_OR_PROBLEM", + "target": "Name: existing entities\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "new entity", + "relation_name": "", + "weight": 10.0, + "description": "the entity resolution adjudicator evaluates the new entity to find a match", + "source_ids": [ + 262 + ], + "source": "Name: new entity\nType: TASK_OR_PROBLEM", + "target": "Name: entity resolution adjudicator\nType: PERSON" + }, + { + "src_entity_name": "new entity", + "tgt_entity_name": "candidate entities", + "relation_name": "", + "weight": 9.0, + "description": "the new entity is compared against the candidate entities to determine if they refer to the same concept", + "source_ids": [ + 262 + ], + "source": "Name: new entity\nType: TASK_OR_PROBLEM", + "target": "Name: candidate entities\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "new entity", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 10.0, + "description": "the new entity is extracted from the text", + "source_ids": [ + 262 + ], + "source": "Name: new entity\nType: TASK_OR_PROBLEM", + "target": "Name: text\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "case b", + "tgt_entity_name": "existing entity", + "relation_name": "", + "weight": 10.0, + "description": "case b is defined by the scenario involving an existing entity", + "source_ids": [ + 73 + ], + "source": "Name: case b\nType: TASK_OR_PROBLEM", + "target": "Name: existing entity\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "case b", + "tgt_entity_name": "alias", + "relation_name": "", + "weight": 9.0, + "description": "case b specifically addresses the situation where an alias is being evaluated", + "source_ids": [ + 73 + ], + "source": "Name: case b\nType: TASK_OR_PROBLEM", + "target": "Name: alias\nType: CONCEPT" + }, + { + "src_entity_name": "gradient based er algorithm", + "tgt_entity_name": "case b", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based er algorithm is designed to detect the sharp decline characteristic of case b", + "source_ids": [ + 74 + ], + "source": "Name: case b\nType: TASK_OR_PROBLEM", + "target": "Name: gradient based er algorithm\nType: TECHNOLOGY" + }, + { + "src_entity_name": "reranker", + "tgt_entity_name": "scores", + "relation_name": "", + "weight": 7.0, + "description": "the reranker s limitations affect the initial set of high relevance scores", + "source_ids": [ + 73 + ], + "source": "Name: reranker\nType: TECHNOLOGY", + "target": "Name: scores\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "alias", + "tgt_entity_name": "true match", + "relation_name": "", + "weight": 9.0, + "description": "the alias is evaluated for its relevance to the true match", + "source_ids": [ + 73 + ], + "source": "Name: alias\nType: CONCEPT", + "target": "Name: true match\nType: CONCEPT" + }, + { + "src_entity_name": "scores", + "tgt_entity_name": "true match", + "relation_name": "", + "weight": 8.0, + "description": "scores indicate the relevance of the alias to the true match", + "source_ids": [ + 73 + ], + "source": "Name: scores\nType: EVALUATION_METRIC", + "target": "Name: true match\nType: CONCEPT" + }, + { + "src_entity_name": "scores", + "tgt_entity_name": "equivalent aliases", + "relation_name": "", + "weight": 8.0, + "description": "scores show high relevance to the true match or a set of equivalent aliases", + "source_ids": [ + 73 + ], + "source": "Name: scores\nType: EVALUATION_METRIC", + "target": "Name: equivalent aliases\nType: CONCEPT" + }, + { + "src_entity_name": "scores", + "tgt_entity_name": "gradient", + "relation_name": "", + "weight": 8.0, + "description": "the scores exhibit a sharp decline gradient after the initial high relevance set", + "source_ids": [ + 73 + ], + "source": "Name: scores\nType: EVALUATION_METRIC", + "target": "Name: gradient\nType: MEASUREMENT" + }, + { + "src_entity_name": "gradient", + "tgt_entity_name": "irrelevant entities", + "relation_name": "", + "weight": 7.0, + "description": "the gradient precedes the transition to irrelevant entities", + "source_ids": [ + 73 + ], + "source": "Name: gradient\nType: MEASUREMENT", + "target": "Name: irrelevant entities\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gradient based er algorithm", + "tgt_entity_name": "high relevance set", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based er algorithm efficiently isolates the high relevance set", + "source_ids": [ + 74 + ], + "source": "Name: gradient based er algorithm\nType: TECHNOLOGY", + "target": "Name: high relevance set\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "high relevance set", + "tgt_entity_name": "similar entities", + "relation_name": "", + "weight": 8.0, + "description": "the similar entities are contained within the high relevance set identified by the algorithm", + "source_ids": [ + 74 + ], + "source": "Name: high relevance set\nType: DATASET_OR_CORPUS", + "target": "Name: similar entities\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "score", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to Score", + "source_ids": [ + 178 + ], + "source": "Name: score\nType: PARAMETER_OR_VARIABLE", + "target": "Name: cref='#/texts/259'\nType: IMAGE" + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "e 7", + "relation_name": "", + "weight": 10.0, + "description": "e 9 shows high similarity with e 7 and is merged with it", + "source_ids": [ + 76 + ], + "source": "Name: e 9\nType: TASK_OR_PROBLEM", + "target": "Name: e 7\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "e 6", + "relation_name": "", + "weight": 7.0, + "description": "e 9 shows a sharp decline in similarity with e 6", + "source_ids": [ + 76 + ], + "source": "Name: e 9\nType: TASK_OR_PROBLEM", + "target": "Name: e 6\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "e 8", + "relation_name": "", + "weight": 7.0, + "description": "e 9 shows a sharp decline in similarity with e 8", + "source_ids": [ + 76 + ], + "source": "Name: e 9\nType: TASK_OR_PROBLEM", + "target": "Name: e 8\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "e 5", + "relation_name": "", + "weight": 7.0, + "description": "e 9 shows a sharp decline in similarity with e 5", + "source_ids": [ + 76 + ], + "source": "Name: e 9\nType: TASK_OR_PROBLEM", + "target": "Name: e 5\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "similarity curve", + "tgt_entity_name": "e 9", + "relation_name": "", + "weight": 8.0, + "description": "the similarity curve depicts the similarity of e 9 with other entities", + "source_ids": [ + 76 + ], + "source": "Name: e 9\nType: TASK_OR_PROBLEM", + "target": "Name: similarity curve\nType: IMAGE" + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "unique high confidence match", + "relation_name": "", + "weight": 9.0, + "description": "e 9 is the entity for which the unique high confidence match e 7 is identified", + "source_ids": [ + 76 + ], + "source": "Name: e 9\nType: TASK_OR_PROBLEM", + "target": "Name: unique high confidence match\nType: CONCEPT" + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "consolidated information", + "relation_name": "", + "weight": 8.0, + "description": "the merging of e 9 with e 7 enriches the kg with consolidated information", + "source_ids": [ + 76 + ], + "source": "Name: e 9\nType: TASK_OR_PROBLEM", + "target": "Name: consolidated information\nType: CONCEPT" + }, + { + "src_entity_name": "gradient based selection process", + "tgt_entity_name": "e 7", + "relation_name": "", + "weight": 9.0, + "description": "the gradient based selection process identifies e 7 as the match for e 9", + "source_ids": [ + 76 + ], + "source": "Name: e 7\nType: TASK_OR_PROBLEM", + "target": "Name: gradient based selection process\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "similarity curve", + "tgt_entity_name": "e 7", + "relation_name": "", + "weight": 8.0, + "description": "the similarity curve shows e 9 s high similarity with e 7", + "source_ids": [ + 76 + ], + "source": "Name: e 7\nType: TASK_OR_PROBLEM", + "target": "Name: similarity curve\nType: IMAGE" + }, + { + "src_entity_name": "similarity curve", + "tgt_entity_name": "orange line", + "relation_name": "", + "weight": 10.0, + "description": "the orange line is the visual representation of the similarity curve described in the text", + "source_ids": [ + 76 + ], + "source": "Name: similarity curve\nType: IMAGE", + "target": "Name: orange line\nType: IMAGE" + }, + { + "src_entity_name": "gradient based selection process", + "tgt_entity_name": "unique high confidence match", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based selection process produces the unique high confidence match", + "source_ids": [ + 76 + ], + "source": "Name: gradient based selection process\nType: METHOD_OR_TECHNIQUE", + "target": "Name: unique high confidence match\nType: CONCEPT" + }, + { + "src_entity_name": "kg construction phase", + "tgt_entity_name": "origin tree node", + "relation_name": "", + "weight": 9.0, + "description": "during the kg construction phase origin tree nodes are recorded for newly extracted entities", + "source_ids": [ + 77 + ], + "source": "Name: kg construction phase\nType: TASK_OR_PROBLEM", + "target": "Name: origin tree node\nType: HARDWARE" + }, + { + "src_entity_name": "kg construction phase", + "tgt_entity_name": "v i", + "relation_name": "", + "weight": 9.0, + "description": "the kg construction phase records the origin tree node for every newly extracted entity v i", + "source_ids": [ + 77 + ], + "source": "Name: kg construction phase\nType: TASK_OR_PROBLEM", + "target": "Name: v i\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "origin tree node", + "tgt_entity_name": "v i", + "relation_name": "", + "weight": 9.0, + "description": "an origin tree node is recorded specifically for the entity v i", + "source_ids": [ + 77 + ], + "source": "Name: origin tree node\nType: HARDWARE", + "target": "Name: v i\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "origin tree node", + "tgt_entity_name": "v sel", + "relation_name": "", + "weight": 8.0, + "description": "the origin node set of v sel is updated to include nodes from v n", + "source_ids": [ + 77 + ], + "source": "Name: origin tree node\nType: HARDWARE", + "target": "Name: v sel\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "v sel", + "tgt_entity_name": "v n", + "relation_name": "", + "weight": 8.0, + "description": "v sel is the target entity that receives the origin nodes previously associated with v n", + "source_ids": [ + 77 + ], + "source": "Name: v n\nType: PARAMETER_OR_VARIABLE", + "target": "Name: v sel\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "agent-based query method", + "tgt_entity_name": "5 agent-based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "The 'Agent-Based Query Method' is the primary technical contribution and topic detailed within section 5.", + "source_ids": [ + 78 + ], + "source": "Name: 5 agent-based retrieval\nType: SECTION_TITLE", + "target": "Name: agent-based query method\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "execution trace", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 9.0, + "description": "the execution trace demonstrates agent based planning", + "source_ids": [ + 93 + ], + "source": "Name: agent based planning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: execution trace\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "ift inspired selector reasoner workflow", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 9.0, + "description": "the workflow includes agent based planning which classifies the query", + "source_ids": [ + 157 + ], + "source": "Name: agent based planning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: ift inspired selector reasoner workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent based planning", + "tgt_entity_name": "static standard workflow", + "relation_name": "", + "weight": 9.0, + "description": "removing agent based planning results in the system defaulting to a static standard workflow", + "source_ids": [ + 166 + ], + "source": "Name: agent based planning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: static standard workflow\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "structured execution", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 9.0, + "description": "structured execution includes the generation process as part of its workflow", + "source_ids": [ + 79 + ], + "source": "Name: structured execution\nType: METHOD_OR_TECHNIQUE", + "target": "Name: generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "real world document queries", + "tgt_entity_name": "modal type filtering", + "relation_name": "", + "weight": 8.0, + "description": "real world document queries necessitate operations like modal type filtering", + "source_ids": [ + 79 + ], + "source": "Name: modal type filtering\nType: METHOD_OR_TECHNIQUE", + "target": "Name: real world document queries\nType: UNKNOWN" + }, + { + "src_entity_name": "real world document queries", + "tgt_entity_name": "semantic selection", + "relation_name": "", + "weight": 8.0, + "description": "real world document queries necessitate operations like semantic selection", + "source_ids": [ + 79 + ], + "source": "Name: semantic selection\nType: METHOD_OR_TECHNIQUE", + "target": "Name: real world document queries\nType: UNKNOWN" + }, + { + "src_entity_name": "real world document queries", + "tgt_entity_name": "multi hop reasoning", + "relation_name": "", + "weight": 8.0, + "description": "real world document queries necessitate operations like multi hop reasoning", + "source_ids": [ + 79 + ], + "source": "Name: multi hop reasoning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: real world document queries\nType: UNKNOWN" + }, + { + "src_entity_name": "figure 3", + "tgt_entity_name": "agent based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "figure 3 illustrates the general workflow of agent based retrieval", + "source_ids": [ + 83 + ], + "source": "Name: figure 3\nType: IMAGE", + "target": "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "figure 3", + "tgt_entity_name": "workflow", + "relation_name": "", + "weight": 10.0, + "description": "figure 3 depicts the general workflow", + "source_ids": [ + 83 + ], + "source": "Name: figure 3\nType: IMAGE", + "target": "Name: workflow\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent based planning", + "tgt_entity_name": "classification plan", + "relation_name": "", + "weight": 9.0, + "description": "agent based planning includes the classification plan stage to distinguish query types", + "source_ids": [ + 82 + ], + "source": "Name: agent based planning\nType: TASK_OR_PROBLEM", + "target": "Name: classification plan\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent based planning", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 8.0, + "description": "agent based planning uses a predefined set of operators designed for the bookindex to generate plans", + "source_ids": [ + 82 + ], + "source": "Name: agent based planning\nType: TASK_OR_PROBLEM", + "target": "Name: bookindex\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval contains the agent based planning process", + "source_ids": [ + 83 + ], + "source": "Name: agent based planning\nType: TASK_OR_PROBLEM", + "target": "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "classification plan", + "tgt_entity_name": "transformer", + "relation_name": "", + "weight": 7.0, + "description": "the classification plan stage uses a query comparing transformer and rnns as an example", + "source_ids": [ + 82 + ], + "source": "Name: classification plan\nType: METHOD_OR_TECHNIQUE", + "target": "Name: transformer\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "classification plan", + "tgt_entity_name": "rnns", + "relation_name": "", + "weight": 7.0, + "description": "the classification plan stage uses a query comparing transformer and rnns as an example", + "source_ids": [ + 82 + ], + "source": "Name: classification plan\nType: METHOD_OR_TECHNIQUE", + "target": "Name: rnns\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "operators plan", + "relation_name": "", + "weight": 7.0, + "description": "the operators plan is designed for the bookindex", + "source_ids": [ + 82 + ], + "source": "Name: bookindex\nType: DATASET_OR_CORPUS", + "target": "Name: operators plan\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "retrieval process", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "the retrieval process navigates the bookindex to find information", + "source_ids": [ + 85 + ], + "source": "Name: bookindex\nType: DATASET_OR_CORPUS", + "target": "Name: retrieval process\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "scent filter based retrieval utilizes the bookindex to find information", + "source_ids": [ + 85 + ], + "source": "Name: bookindex\nType: DATASET_OR_CORPUS", + "target": "Name: scent filter based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 10.0, + "description": "t is a defined component within the bookindex structure", + "source_ids": [ + 88 + ], + "source": "Name: bookindex\nType: DATASET_OR_CORPUS", + "target": "Name: t\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "relevant entities", + "relation_name": "", + "weight": 8.0, + "description": "relevant entities are contained within the g component of the bookindex", + "source_ids": [ + 85 + ], + "source": "Name: bookindex\nType: DATASET_OR_CORPUS", + "target": "Name: relevant entities\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "operators plan", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 8.0, + "description": "the operators plan guides the retrieval strategy", + "source_ids": [ + 82 + ], + "source": "Name: operators plan\nType: TASK_OR_PROBLEM", + "target": "Name: retrieval\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "operators plan", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 8.0, + "description": "the operators plan guides the generation strategy", + "source_ids": [ + 82 + ], + "source": "Name: operators plan\nType: TASK_OR_PROBLEM", + "target": "Name: generation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval contains the retrieval process", + "source_ids": [ + 83 + ], + "source": "Name: retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "layout vanilla", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 8.0, + "description": "layout vanilla preserves essential structural information for better retrieval", + "source_ids": [ + 152 + ], + "source": "Name: retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: layout vanilla\nType: PRODUCT" + }, + { + "src_entity_name": "retrieval error", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 10.0, + "description": "retrieval error is the dominant failure mode associated with the retrieval task", + "source_ids": [ + 185 + ], + "source": "Name: retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: retrieval error\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval contains the generation process", + "source_ids": [ + 83 + ], + "source": "Name: generation\nType: TASK_OR_PROBLEM", + "target": "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "standard reasoning", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 8.0, + "description": "standard reasoning and generation are linked processes denoted as p std", + "source_ids": [ + 115 + ], + "source": "Name: generation\nType: TASK_OR_PROBLEM", + "target": "Name: standard reasoning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "scent based", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 7.0, + "description": "the scent based path proceeds to generation as part of p std", + "source_ids": [ + 115 + ], + "source": "Name: generation\nType: TASK_OR_PROBLEM", + "target": "Name: scent based\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "section based", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 7.0, + "description": "the section based path proceeds to generation as part of p std", + "source_ids": [ + 115 + ], + "source": "Name: generation\nType: TASK_OR_PROBLEM", + "target": "Name: section based\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "generation", + "tgt_entity_name": "5.3 structured execution", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Generation' is a primary topic of section 5.3.", + "source_ids": [ + 123 + ], + "source": "Name: generation\nType: TASK_OR_PROBLEM", + "target": "Name: 5.3 structured execution\nType: SECTION_TITLE" + }, + { + "src_entity_name": "generation error", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 10.0, + "description": "generation error is the second most common failure mode associated with the generation task", + "source_ids": [ + 185 + ], + "source": "Name: generation\nType: TASK_OR_PROBLEM", + "target": "Name: generation error\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "workflow", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval is described as a general workflow", + "source_ids": [ + 83 + ], + "source": "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE", + "target": "Name: workflow\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "planning", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval includes planning as a process", + "source_ids": [ + 83 + ], + "source": "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE", + "target": "Name: planning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "generation processes", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval includes generation processes as a component", + "source_ids": [ + 83 + ], + "source": "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE", + "target": "Name: generation processes\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "planning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Planning", + "source_ids": [ + 94 + ], + "source": "Name: planning\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "question", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Question", + "source_ids": [ + 84 + ], + "source": "Name: cref='#/texts/89'\nType: IMAGE", + "target": "Name: question\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "agent-based planning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Agent-based Planning", + "source_ids": [ + 84 + ], + "source": "Name: cref='#/texts/89'\nType: IMAGE", + "target": "Name: agent-based planning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "retrieval process", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Retrieval Process", + "source_ids": [ + 84 + ], + "source": "Name: cref='#/texts/89'\nType: IMAGE", + "target": "Name: retrieval process\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "generation process", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Generation Process", + "source_ids": [ + 84 + ], + "source": "Name: cref='#/texts/89'\nType: IMAGE", + "target": "Name: generation process\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "question", + "relation_name": "", + "weight": 10.0, + "description": "the single hop task is defined by the ability to answer a question", + "source_ids": [ + 243 + ], + "source": "Name: question\nType: TASK_OR_PROBLEM", + "target": "Name: single hop\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent-based planning", + "tgt_entity_name": "5.2 agent-based planning", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Agent-based Planning' is the primary topic and subject matter of section 5.2.", + "source_ids": [ + 87 + ], + "source": "Name: agent-based planning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: 5.2 agent-based planning\nType: SECTION_TITLE" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "agent-based planning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Agent-based Planning", + "source_ids": [ + 182 + ], + "source": "Name: agent-based planning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "retrieval process", + "tgt_entity_name": "5.3 structured execution", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Retrieval Process' is a primary topic of section 5.3.", + "source_ids": [ + 123 + ], + "source": "Name: retrieval process\nType: METHOD_OR_TECHNIQUE", + "target": "Name: 5.3 structured execution\nType: SECTION_TITLE" + }, + { + "src_entity_name": "retrieval process", + "tgt_entity_name": "scent filter based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "the retrieval process executes the scent filter based retrieval method", + "source_ids": [ + 85 + ], + "source": "Name: retrieval process\nType: TASK_OR_PROBLEM", + "target": "Name: scent filter based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "retrieval process", + "tgt_entity_name": "operator plan", + "relation_name": "", + "weight": 10.0, + "description": "the retrieval process is guided by the operator plan", + "source_ids": [ + 85 + ], + "source": "Name: retrieval process\nType: TASK_OR_PROBLEM", + "target": "Name: operator plan\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "modal type", + "relation_name": "", + "weight": 9.0, + "description": "scent filter based retrieval employs modal type as a filter to refine selection", + "source_ids": [ + 85 + ], + "source": "Name: scent filter based retrieval\nType: METHOD_OR_TECHNIQUE", + "target": "Name: modal type\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "relevant entities", + "relation_name": "", + "weight": 9.0, + "description": "scent based retrieval follows relevant entities in g to find information", + "source_ids": [ + 85 + ], + "source": "Name: scent filter based retrieval\nType: METHOD_OR_TECHNIQUE", + "target": "Name: relevant entities\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "operator plan", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Operator Plan", + "source_ids": [ + 94 + ], + "source": "Name: operator plan\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "operator plan", + "relation_name": "", + "weight": 10.0, + "description": "the agent s final task is to generate the operator plan", + "source_ids": [ + 112 + ], + "source": "Name: operator plan\nType: TASK_OR_PROBLEM", + "target": "Name: agent\nType: PERSON" + }, + { + "src_entity_name": "generation process", + "tgt_entity_name": "analysis merging", + "relation_name": "", + "weight": 9.0, + "description": "analysis merging is a sub stage or activity performed within the generation process", + "source_ids": [ + 86 + ], + "source": "Name: generation process\nType: TASK_OR_PROBLEM", + "target": "Name: analysis merging\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "retrieved information", + "tgt_entity_name": "generation process", + "relation_name": "", + "weight": 10.0, + "description": "retrieved information enters the generation process as its primary input", + "source_ids": [ + 86 + ], + "source": "Name: generation process\nType: TASK_OR_PROBLEM", + "target": "Name: retrieved information\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "generation process", + "tgt_entity_name": "coherent response", + "relation_name": "", + "weight": 10.0, + "description": "the generation process formulates the coherent response as its final output", + "source_ids": [ + 86 + ], + "source": "Name: generation process\nType: TASK_OR_PROBLEM", + "target": "Name: coherent response\nType: PRODUCT" + }, + { + "src_entity_name": "fragmented pieces of evidence", + "tgt_entity_name": "analysis merging", + "relation_name": "", + "weight": 9.0, + "description": "analysis merging synthesizes the fragmented pieces of evidence", + "source_ids": [ + 86 + ], + "source": "Name: analysis merging\nType: TASK_OR_PROBLEM", + "target": "Name: fragmented pieces of evidence\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "analysis merging", + "tgt_entity_name": "coherent response", + "relation_name": "", + "weight": 8.0, + "description": "analysis merging contributes to the formulation of the coherent response through final analysis", + "source_ids": [ + 86 + ], + "source": "Name: analysis merging\nType: TASK_OR_PROBLEM", + "target": "Name: coherent response\nType: PRODUCT" + }, + { + "src_entity_name": "formulator", + "tgt_entity_name": "execution pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the formulator operator is combined to form tailored execution pipelines", + "source_ids": [ + 88 + ], + "source": "Name: formulator\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: execution pipelines\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "formulator", + "relation_name": "", + "weight": 10.0, + "description": "the bookrag operator library contains the formulator operator type", + "source_ids": [ + 93 + ], + "source": "Name: formulator\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: bookrag operator library\nType: SOFTWARE" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "execution pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the selector operator is combined to form tailored execution pipelines", + "source_ids": [ + 88 + ], + "source": "Name: selector\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: execution pipelines\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 10.0, + "description": "the bookrag operator library contains the selector operator type", + "source_ids": [ + 93 + ], + "source": "Name: selector\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: bookrag operator library\nType: SOFTWARE" + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "execution pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the reasoner operator is combined to form tailored execution pipelines", + "source_ids": [ + 88 + ], + "source": "Name: reasoner\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: execution pipelines\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 10.0, + "description": "the bookrag operator library contains the reasoner operator type", + "source_ids": [ + 93 + ], + "source": "Name: reasoner\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: bookrag operator library\nType: SOFTWARE" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "execution pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator is combined to form tailored execution pipelines", + "source_ids": [ + 88 + ], + "source": "Name: synthesizer\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: execution pipelines\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 10.0, + "description": "the bookrag operator library contains the synthesizer operator type", + "source_ids": [ + 93 + ], + "source": "Name: synthesizer\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: bookrag operator library\nType: SOFTWARE" + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "agent", + "relation_name": "", + "weight": 9.0, + "description": "the agent employs the bookindex operators for diverse query categories", + "source_ids": [ + 97 + ], + "source": "Name: agent\nType: TASK_OR_PROBLEM", + "target": "Name: bookindex operators\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "query categories", + "relation_name": "", + "weight": 8.0, + "description": "the agent employs operators for diverse query categories", + "source_ids": [ + 97 + ], + "source": "Name: agent\nType: TASK_OR_PROBLEM", + "target": "Name: query categories\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "execution pipelines", + "tgt_entity_name": "adjustable parameters", + "relation_name": "", + "weight": 8.0, + "description": "execution pipelines are created with adjustable parameters", + "source_ids": [ + 88 + ], + "source": "Name: execution pipelines\nType: TASK_OR_PROBLEM", + "target": "Name: adjustable parameters\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "6", + "relation_name": "", + "weight": 9.0, + "description": "the paper was published in issue 6 of acm computing surveys", + "source_ids": [ + 202 + ], + "source": "Name: 6\nType: MEASUREMENT", + "target": "Name: acm computing surveys\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "figure 4", + "tgt_entity_name": "bookrag operator library", + "relation_name": "", + "weight": 10.0, + "description": "figure 4 visually depicts the bookrag operator library", + "source_ids": [ + 93 + ], + "source": "Name: figure 4\nType: IMAGE", + "target": "Name: bookrag operator library\nType: SOFTWARE" + }, + { + "src_entity_name": "figure 4", + "tgt_entity_name": "mmlongbench dataset", + "relation_name": "", + "weight": 9.0, + "description": "figure 4 shows an execution example derived from the mmlongbench dataset", + "source_ids": [ + 93 + ], + "source": "Name: figure 4\nType: IMAGE", + "target": "Name: mmlongbench dataset\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "figure 4", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "figure 4 demonstrates an execution trace for a single hop query", + "source_ids": [ + 93 + ], + "source": "Name: figure 4\nType: IMAGE", + "target": "Name: single hop\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 4", + "tgt_entity_name": "execution trace", + "relation_name": "", + "weight": 9.0, + "description": "figure 4 contains an execution trace for a single hop query", + "source_ids": [ + 93 + ], + "source": "Name: figure 4\nType: IMAGE", + "target": "Name: execution trace\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "figure 4", + "relation_name": "", + "weight": 7.0, + "description": "bookindex operators are visually depicted in figure 4", + "source_ids": [ + 97 + ], + "source": "Name: figure 4\nType: IMAGE", + "target": "Name: bookindex operators\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "operator", + "relation_name": "", + "weight": 8.0, + "description": "the bookrag operator library is composed of specific operators", + "source_ids": [ + 93 + ], + "source": "Name: bookrag operator library\nType: SOFTWARE", + "target": "Name: operator\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "execution trace", + "relation_name": "", + "weight": 10.0, + "description": "the execution trace is specifically for a single hop query", + "source_ids": [ + 93 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: execution trace\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "the agent performs the single hop task by attempting to extract an entity", + "source_ids": [ + 115 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: agent\nType: PERSON" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 8.0, + "description": "the single hop task involves the extraction of an entity", + "source_ids": [ + 115 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: entity\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 4 b", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 10.0, + "description": "figure 4 b presents the execution trace for the single hop query", + "source_ids": [ + 135 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: figure 4 b\nType: IMAGE" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 9.0, + "description": "the single hop query asks about the type of car in the example", + "source_ids": [ + 135 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: car\nType: PRODUCT" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 displays the performance breakdown for the single hop query type", + "source_ids": [ + 177 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: figure 7\nType: IMAGE" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "multi hop", + "relation_name": "", + "weight": 5.0, + "description": "both are listed as distinct query types in the performance breakdown", + "source_ids": [ + 177 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: multi hop\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 5.0, + "description": "both are listed as distinct query types in the performance breakdown", + "source_ids": [ + 177 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: global\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent based planning strategy", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 8.0, + "description": "the agent based planning strategy handles single hop queries separately", + "source_ids": [ + 179 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: agent based planning strategy\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "134", + "relation_name": "", + "weight": 8.0, + "description": "the single hop case starts with a reasoning space of 134 nodes", + "source_ids": [ + 186 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: 134\nType: MEASUREMENT" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "24", + "relation_name": "", + "weight": 8.0, + "description": "the single hop case reduces the reasoning space to 24 nodes", + "source_ids": [ + 186 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: 24\nType: MEASUREMENT" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "single", + "relation_name": "", + "weight": 9.0, + "description": "the single hop task requires retrieving information from a single location", + "source_ids": [ + 243 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: single\nType: UNKNOWN" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "contiguous location", + "relation_name": "", + "weight": 8.0, + "description": "the single hop task involves information found in a contiguous location", + "source_ids": [ + 243 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: contiguous location\nType: UNKNOWN" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 7.0, + "description": "the single hop task is defined within the context of a document", + "source_ids": [ + 243 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: document\nType: CONCEPT" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "information", + "relation_name": "", + "weight": 10.0, + "description": "the single hop task involves retrieving information", + "source_ids": [ + 243 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: information\nType: CONCEPT" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "paragraph", + "relation_name": "", + "weight": 9.0, + "description": "a single hop question can be answered by retrieving information from a paragraph", + "source_ids": [ + 243 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: paragraph\nType: SECTION_TITLE" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 9.0, + "description": "a single hop question can be answered by retrieving information from a table", + "source_ids": [ + 243 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: table\nType: SECTION_TITLE" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "figure", + "relation_name": "", + "weight": 9.0, + "description": "a single hop question can be answered by retrieving information from a figure", + "source_ids": [ + 243 + ], + "source": "Name: single hop\nType: TASK_OR_PROBLEM", + "target": "Name: figure\nType: SECTION_TITLE" + }, + { + "src_entity_name": "execution trace", + "tgt_entity_name": "step by step operator execution", + "relation_name": "", + "weight": 9.0, + "description": "the execution trace demonstrates step by step operator execution", + "source_ids": [ + 93 + ], + "source": "Name: execution trace\nType: TASK_OR_PROBLEM", + "target": "Name: step by step operator execution\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "operator-set", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Operator-Set", + "source_ids": [ + 94 + ], + "source": "Name: operator-set\nType: IMAGE", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "extract", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Extract", + "source_ids": [ + 94 + ], + "source": "Name: extract\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "decompose", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Decompose", + "source_ids": [ + 94 + ], + "source": "Name: decompose\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "formulator", + "tgt_entity_name": "decompose", + "relation_name": "", + "weight": 9.0, + "description": "decompose is included as a category within the formulator operators", + "source_ids": [ + 98 + ], + "source": "Name: decompose\nType: METHOD_OR_TECHNIQUE", + "target": "Name: formulator\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "decompose", + "tgt_entity_name": "qs", + "relation_name": "", + "weight": 10.0, + "description": "decompose generates the set of sub queries qs", + "source_ids": [ + 98 + ], + "source": "Name: decompose\nType: METHOD_OR_TECHNIQUE", + "target": "Name: qs\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "decompose", + "tgt_entity_name": "sub queries", + "relation_name": "", + "weight": 10.0, + "description": "decompose produces sub queries as its output", + "source_ids": [ + 98 + ], + "source": "Name: decompose\nType: METHOD_OR_TECHNIQUE", + "target": "Name: sub queries\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "entities", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Entities", + "source_ids": [ + 94 + ], + "source": "Name: entities\nType: DATASET_OR_CORPUS", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "sub-queries", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Sub-queries", + "source_ids": [ + 94 + ], + "source": "Name: sub-queries\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "formulator", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Formulator", + "source_ids": [ + 94 + ], + "source": "Name: formulator\nType: SYSTEM_COMPONENT", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "filter", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Filter", + "source_ids": [ + 94 + ], + "source": "Name: filter\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "select", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Select", + "source_ids": [ + 94 + ], + "source": "Name: select\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Selector", + "source_ids": [ + 94 + ], + "source": "Name: selector\nType: SYSTEM_COMPONENT", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "reason", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Reason", + "source_ids": [ + 94 + ], + "source": "Name: reason\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "graph", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Graph", + "source_ids": [ + 94 + ], + "source": "Name: graph\nType: DATA_STRUCTURE", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Text", + "source_ids": [ + 94 + ], + "source": "Name: text\nType: DATA_STRUCTURE", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "s:", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to S:", + "source_ids": [ + 94 + ], + "source": "Name: s:\nType: PARAMETER_OR_VARIABLE", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "skyline", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Skyline", + "source_ids": [ + 94 + ], + "source": "Name: skyline\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Reasoner", + "source_ids": [ + 94 + ], + "source": "Name: reasoner\nType: SYSTEM_COMPONENT", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "map", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Map", + "source_ids": [ + 94 + ], + "source": "Name: map\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "map", + "relation_name": "", + "weight": 8.0, + "description": "map is a specific type of operator within the broader category of synthesizer operators responsible for content generation", + "source_ids": [ + 111 + ], + "source": "Name: map\nType: TASK_OR_PROBLEM", + "target": "Name: synthesizer\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "map", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 9.0, + "description": "map and reduce are sequential or related steps in the process of generating a final coherent answer with map generating partial responses and reduce aggregating them", + "source_ids": [ + 111 + ], + "source": "Name: map\nType: TASK_OR_PROBLEM", + "target": "Name: reduce\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "map", + "tgt_entity_name": "analysis", + "relation_name": "", + "weight": 10.0, + "description": "the map operator performs the task of analysis on retrieved information segments", + "source_ids": [ + 111 + ], + "source": "Name: map\nType: TASK_OR_PROBLEM", + "target": "Name: analysis\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "map", + "tgt_entity_name": "partial responses", + "relation_name": "", + "weight": 10.0, + "description": "map generates partial responses as its output", + "source_ids": [ + 111 + ], + "source": "Name: map\nType: TASK_OR_PROBLEM", + "target": "Name: partial responses\nType: PRODUCT" + }, + { + "src_entity_name": "map", + "tgt_entity_name": "retrieved information segments", + "relation_name": "", + "weight": 10.0, + "description": "map performs analysis specifically on retrieved information segments", + "source_ids": [ + 111 + ], + "source": "Name: map\nType: TASK_OR_PROBLEM", + "target": "Name: retrieved information segments\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Reduce", + "source_ids": [ + 94 + ], + "source": "Name: reduce\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 8.0, + "description": "reduce is a specific type of operator within the broader category of synthesizer operators responsible for content generation", + "source_ids": [ + 111 + ], + "source": "Name: reduce\nType: TASK_OR_PROBLEM", + "target": "Name: synthesizer\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "final coherent answer", + "relation_name": "", + "weight": 10.0, + "description": "reduce synthesizes a final coherent answer as its output", + "source_ids": [ + 111 + ], + "source": "Name: reduce\nType: TASK_OR_PROBLEM", + "target": "Name: final coherent answer\nType: PRODUCT" + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "multiple sources", + "relation_name": "", + "weight": 10.0, + "description": "reduce aggregates information from multiple sources to create its output", + "source_ids": [ + 111 + ], + "source": "Name: reduce\nType: TASK_OR_PROBLEM", + "target": "Name: multiple sources\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "partial answers", + "relation_name": "", + "weight": 9.0, + "description": "reduce aggregates partial answers as part of its synthesis process", + "source_ids": [ + 111 + ], + "source": "Name: reduce\nType: TASK_OR_PROBLEM", + "target": "Name: partial answers\nType: PRODUCT" + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "retrieved evidence", + "relation_name": "", + "weight": 9.0, + "description": "reduce aggregates retrieved evidence as part of its synthesis process", + "source_ids": [ + 111 + ], + "source": "Name: reduce\nType: TASK_OR_PROBLEM", + "target": "Name: retrieved evidence\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Synthesizer", + "source_ids": [ + 94 + ], + "source": "Name: synthesizer\nType: SYSTEM_COMPONENT", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "execution example", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Execution example", + "source_ids": [ + 94 + ], + "source": "Name: execution example\nType: SECTION_TITLE", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "q: what is the type of car in the ranking prompt example?", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Q: What is the type of car in the Ranking Prompt example?", + "source_ids": [ + 94 + ], + "source": "Name: q: what is the type of car in the ranking prompt example?\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "simple query...", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Simple query...", + "source_ids": [ + 94 + ], + "source": "Name: simple query...\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Car", + "source_ids": [ + 94 + ], + "source": "Name: car\nType: PRODUCT", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "car", + "tgt_entity_name": "ranking prompt example", + "relation_name": "", + "weight": 8.0, + "description": "the car is the subject of the query within the ranking prompt example context", + "source_ids": [ + 135 + ], + "source": "Name: car\nType: PRODUCT", + "target": "Name: ranking prompt example\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 9.0, + "description": "the extract method is used to identify the entity car", + "source_ids": [ + 135 + ], + "source": "Name: car\nType: PRODUCT", + "target": "Name: extract\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "select by entity", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 8.0, + "description": "the select by entity method retrieves nodes related to the identified entity car", + "source_ids": [ + 135 + ], + "source": "Name: car\nType: PRODUCT", + "target": "Name: select by entity\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "skyline filtering", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 7.0, + "description": "the skyline filtering technique refines the nodes related to car", + "source_ids": [ + 135 + ], + "source": "Name: car\nType: PRODUCT", + "target": "Name: skyline filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 7.0, + "description": "the reduce method synthesizes the answer regarding the car", + "source_ids": [ + 135 + ], + "source": "Name: car\nType: PRODUCT", + "target": "Name: reduce\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "ranking prompt", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Ranking Prompt", + "source_ids": [ + 94 + ], + "source": "Name: ranking prompt\nType: BOOK", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "method", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Method", + "source_ids": [ + 94 + ], + "source": "Name: method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "method and its descendants", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Method and its Descendants", + "source_ids": [ + 94 + ], + "source": "Name: method and its descendants\nType: SECTION_TITLE", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "a: based on the provided information...", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to A: Based on the provided information...", + "source_ids": [ + 94 + ], + "source": "Name: a: based on the provided information...\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "mercedes-benz e-class sedan", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Mercedes-Benz E-Class Sedan", + "source_ids": [ + 94 + ], + "source": "Name: mercedes-benz e-class sedan\nType: VEHICLE", + "target": "Name: image cref='#/texts/98'\nType: UNKNOWN" + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "operator plan", + "relation_name": "", + "weight": 9.0, + "description": "query classification is performed to generate a specific operator plan", + "source_ids": [ + 95 + ], + "source": "Name: query classification\nType: TASK_OR_PROBLEM", + "target": "Name: operator plan\nType: PRODUCT" + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "query classification defines single hop as one of its three representative categories", + "source_ids": [ + 96 + ], + "source": "Name: query classification\nType: TASK_OR_PROBLEM", + "target": "Name: single hop\nType: EVENT" + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "multi hop", + "relation_name": "", + "weight": 9.0, + "description": "query classification defines multi hop as one of its three representative categories", + "source_ids": [ + 96 + ], + "source": "Name: query classification\nType: TASK_OR_PROBLEM", + "target": "Name: multi hop\nType: EVENT" + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "global aggregation", + "relation_name": "", + "weight": 9.0, + "description": "query classification defines global aggregation as one of its three representative categories", + "source_ids": [ + 96 + ], + "source": "Name: query classification\nType: TASK_OR_PROBLEM", + "target": "Name: global aggregation\nType: EVENT" + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "agent strategy selection", + "relation_name": "", + "weight": 9.0, + "description": "query classification enables agent strategy selection", + "source_ids": [ + 96 + ], + "source": "Name: query classification\nType: TASK_OR_PROBLEM", + "target": "Name: agent strategy selection\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "solution strategy", + "relation_name": "", + "weight": 8.0, + "description": "each category defined by query classification requires a different solution strategy", + "source_ids": [ + 96 + ], + "source": "Name: query classification\nType: TASK_OR_PROBLEM", + "target": "Name: solution strategy\nType: CONCEPT" + }, + { + "src_entity_name": "figure 10", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 10.0, + "description": "figure 10 contains the prompt specifically used for query classification", + "source_ids": [ + 253 + ], + "source": "Name: query classification\nType: TASK_OR_PROBLEM", + "target": "Name: figure 10\nType: IMAGE" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "scent based retrieval", + "relation_name": "", + "weight": 8.0, + "description": "single hop queries typically require a scent based retrieval operation", + "source_ids": [ + 96 + ], + "source": "Name: single hop\nType: EVENT", + "target": "Name: scent based retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "intrinsic complexity", + "relation_name": "", + "weight": 7.0, + "description": "single hop is defined by its intrinsic complexity and operational demands", + "source_ids": [ + 96 + ], + "source": "Name: single hop\nType: EVENT", + "target": "Name: intrinsic complexity\nType: CONCEPT" + }, + { + "src_entity_name": "multi hop", + "tgt_entity_name": "intrinsic complexity", + "relation_name": "", + "weight": 7.0, + "description": "multi hop is defined by its intrinsic complexity and operational demands", + "source_ids": [ + 96 + ], + "source": "Name: multi hop\nType: EVENT", + "target": "Name: intrinsic complexity\nType: CONCEPT" + }, + { + "src_entity_name": "global aggregation", + "tgt_entity_name": "filter aggregation", + "relation_name": "", + "weight": 8.0, + "description": "global aggregation queries usually involve a sequence of filter aggregation operations", + "source_ids": [ + 96 + ], + "source": "Name: global aggregation\nType: EVENT", + "target": "Name: filter aggregation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "global aggregation", + "tgt_entity_name": "intrinsic complexity", + "relation_name": "", + "weight": 7.0, + "description": "global aggregation is defined by its intrinsic complexity and operational demands", + "source_ids": [ + 96 + ], + "source": "Name: global aggregation\nType: EVENT", + "target": "Name: intrinsic complexity\nType: CONCEPT" + }, + { + "src_entity_name": "global aggregation", + "tgt_entity_name": "filtering conditions", + "relation_name": "", + "weight": 8.0, + "description": "global aggregation necessitates analyzing content under multiple filtering conditions", + "source_ids": [ + 96 + ], + "source": "Name: global aggregation\nType: EVENT", + "target": "Name: filtering conditions\nType: CONCEPT" + }, + { + "src_entity_name": "global aggregation", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 7.0, + "description": "global aggregation involves analyzing content across various parts of the document", + "source_ids": [ + 96 + ], + "source": "Name: global aggregation\nType: EVENT", + "target": "Name: document\nType: OBJECT" + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "o", + "relation_name": "", + "weight": 9.0, + "description": "bookindex operators are represented by the set o tailored for the bookindex", + "source_ids": [ + 97 + ], + "source": "Name: bookindex operators\nType: TASK_OR_PROBLEM", + "target": "Name: o\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "figure 4 a", + "relation_name": "", + "weight": 8.0, + "description": "bookindex operators are visually depicted in figure 4 a", + "source_ids": [ + 97 + ], + "source": "Name: bookindex operators\nType: TASK_OR_PROBLEM", + "target": "Name: figure 4 a\nType: IMAGE" + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "table 3", + "relation_name": "", + "weight": 8.0, + "description": "bookindex operators are detailed in table 3", + "source_ids": [ + 97 + ], + "source": "Name: bookindex operators\nType: TASK_OR_PROBLEM", + "target": "Name: table 3\nType: TABLE" + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "classification", + "relation_name": "", + "weight": 9.0, + "description": "bookindex operators are designed to execute strategies identified by classification", + "source_ids": [ + 97 + ], + "source": "Name: bookindex operators\nType: TASK_OR_PROBLEM", + "target": "Name: classification\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "formulator", + "tgt_entity_name": "extract", + "relation_name": "", + "weight": 9.0, + "description": "extract is included as a category within the formulator operators", + "source_ids": [ + 98 + ], + "source": "Name: formulator\nType: TASK_OR_PROBLEM", + "target": "Name: extract\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "eq", + "relation_name": "", + "weight": 10.0, + "description": "extract identifies the key entities eq", + "source_ids": [ + 98 + ], + "source": "Name: extract\nType: METHOD_OR_TECHNIQUE", + "target": "Name: eq\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "query text", + "relation_name": "", + "weight": 10.0, + "description": "extract analyzes the query text to find key entities", + "source_ids": [ + 98 + ], + "source": "Name: extract\nType: METHOD_OR_TECHNIQUE", + "target": "Name: query text\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "entities", + "relation_name": "", + "weight": 10.0, + "description": "extract identifies entities from the query text", + "source_ids": [ + 98 + ], + "source": "Name: extract\nType: METHOD_OR_TECHNIQUE", + "target": "Name: entities\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "extract", + "relation_name": "", + "weight": 9.0, + "description": "the agent uses the extract method to identify key entities", + "source_ids": [ + 135 + ], + "source": "Name: extract\nType: METHOD_OR_TECHNIQUE", + "target": "Name: agent\nType: PERSON" + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "select by entity", + "relation_name": "", + "weight": 7.0, + "description": "the extract method precedes the select by entity method in the workflow", + "source_ids": [ + 135 + ], + "source": "Name: extract\nType: METHOD_OR_TECHNIQUE", + "target": "Name: select by entity\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "qs", + "tgt_entity_name": "pdec", + "relation_name": "", + "weight": 7.0, + "description": "qs is generated using the parameter pdec in the llm function", + "source_ids": [ + 98 + ], + "source": "Name: qs\nType: TASK_OR_PROBLEM", + "target": "Name: pdec\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "eq", + "tgt_entity_name": "pext", + "relation_name": "", + "weight": 7.0, + "description": "eq is generated using the parameter pext in the llm function", + "source_ids": [ + 98 + ], + "source": "Name: eq\nType: TASK_OR_PROBLEM", + "target": "Name: pext\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "p dec", + "tgt_entity_name": "decomposition", + "relation_name": "", + "weight": 10.0, + "description": "p dec is the specific prompt used to guide the llm for the decomposition task", + "source_ids": [ + 101 + ], + "source": "Name: p dec\nType: SOFTWARE", + "target": "Name: decomposition\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "p ext", + "tgt_entity_name": "extraction", + "relation_name": "", + "weight": 10.0, + "description": "p ext is the specific prompt used to guide the llm for the extraction task", + "source_ids": [ + 101 + ], + "source": "Name: p ext\nType: SOFTWARE", + "target": "Name: extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 13", + "tgt_entity_name": "prompt", + "relation_name": "", + "weight": 10.0, + "description": "figure 13 displays the prompt for entity resolution judgement", + "source_ids": [ + 284 + ], + "source": "Name: prompt\nType: SOFTWARE", + "target": "Name: figure 13\nType: IMAGE" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "n f", + "relation_name": "", + "weight": 9.0, + "description": "the selector operators produce the filtered subset n f", + "source_ids": [ + 102 + ], + "source": "Name: selector\nType: TECHNOLOGY", + "target": "Name: n f\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "reasoners", + "relation_name": "", + "weight": 9.0, + "description": "the removal of selector operators forces reasoners to score all candidate nodes indicating a direct operational dependency", + "source_ids": [ + 167 + ], + "source": "Name: selector\nType: TECHNOLOGY", + "target": "Name: reasoners\nType: TECHNOLOGY" + }, + { + "src_entity_name": "filter modal", + "tgt_entity_name": "n f", + "relation_name": "", + "weight": 8.0, + "description": "filter modal contributes to the production of the filtered subset n f", + "source_ids": [ + 102 + ], + "source": "Name: filter modal\nType: TECHNOLOGY", + "target": "Name: n f\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "filter range", + "tgt_entity_name": "n f", + "relation_name": "", + "weight": 8.0, + "description": "filter range contributes to the production of the filtered subset n f", + "source_ids": [ + 102 + ], + "source": "Name: filter range\nType: TECHNOLOGY", + "target": "Name: n f\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "n f", + "tgt_entity_name": "c n", + "relation_name": "", + "weight": 9.0, + "description": "the filtered subset n f consists of nodes where the predicate c n holds true", + "source_ids": [ + 102 + ], + "source": "Name: n f\nType: PARAMETER_OR_VARIABLE", + "target": "Name: c n\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "n f", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "the filtered subset n f is a subset of the nodes n", + "source_ids": [ + 102 + ], + "source": "Name: n f\nType: PARAMETER_OR_VARIABLE", + "target": "Name: nodes\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "c n", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "the predicate c n is evaluated for each node in the set", + "source_ids": [ + 102 + ], + "source": "Name: c n\nType: PARAMETER_OR_VARIABLE", + "target": "Name: nodes\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "plan error", + "tgt_entity_name": "plan", + "relation_name": "", + "weight": 10.0, + "description": "plan error is a specific failure pattern occurring within the plan task", + "source_ids": [ + 185 + ], + "source": "Name: plan\nType: TASK_OR_PROBLEM", + "target": "Name: plan error\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "select by entity", + "tgt_entity_name": "s target", + "relation_name": "", + "weight": 9.0, + "description": "select by entity identifies a set of target section nodes s target as part of its process", + "source_ids": [ + 104 + ], + "source": "Name: select by entity\nType: TECHNOLOGY", + "target": "Name: s target\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "select by entity", + "tgt_entity_name": "subtree", + "relation_name": "", + "weight": 9.0, + "description": "select by entity retrieves subtrees rooted at specific section nodes", + "source_ids": [ + 104 + ], + "source": "Name: select by entity\nType: TECHNOLOGY", + "target": "Name: subtree\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "select by section", + "tgt_entity_name": "s target", + "relation_name": "", + "weight": 9.0, + "description": "select by section identifies a set of target section nodes s target as part of its process", + "source_ids": [ + 104 + ], + "source": "Name: select by section\nType: TECHNOLOGY", + "target": "Name: s target\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "select by section", + "tgt_entity_name": "subtree", + "relation_name": "", + "weight": 9.0, + "description": "select by section retrieves subtrees rooted at specific section nodes", + "source_ids": [ + 104 + ], + "source": "Name: select by section\nType: TECHNOLOGY", + "target": "Name: subtree\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "e q", + "relation_name": "", + "weight": 8.0, + "description": "s target consists of sections linked to entities e q via gt link", + "source_ids": [ + 104 + ], + "source": "Name: s target\nType: TASK_OR_PROBLEM", + "target": "Name: e q\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "n s", + "relation_name": "", + "weight": 9.0, + "description": "n s is formed by retrieving all descendants of the target section nodes s target", + "source_ids": [ + 104 + ], + "source": "Name: s target\nType: TASK_OR_PROBLEM", + "target": "Name: n s\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "section node", + "relation_name": "", + "weight": 10.0, + "description": "s target consists of specific section nodes", + "source_ids": [ + 104 + ], + "source": "Name: s target\nType: TASK_OR_PROBLEM", + "target": "Name: section node\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "depth", + "relation_name": "", + "weight": 8.0, + "description": "s target is defined at a specified depth", + "source_ids": [ + 104 + ], + "source": "Name: s target\nType: TASK_OR_PROBLEM", + "target": "Name: depth\nType: MEASUREMENT" + }, + { + "src_entity_name": "n s", + "tgt_entity_name": "descendant", + "relation_name": "", + "weight": 9.0, + "description": "n s is formed by retrieving all descendants of the target sections", + "source_ids": [ + 104 + ], + "source": "Name: n s\nType: TASK_OR_PROBLEM", + "target": "Name: descendant\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "selected tree nodes", + "relation_name": "", + "weight": 9.0, + "description": "reasoner analyzes and refines selected tree nodes", + "source_ids": [ + 106 + ], + "source": "Name: reasoner\nType: TASK_OR_PROBLEM", + "target": "Name: selected tree nodes\nType: UNKNOWN" + }, + { + "src_entity_name": "graph reasoning", + "tgt_entity_name": "subgraph", + "relation_name": "", + "weight": 10.0, + "description": "graph reasoning performs multi hop inference on a subgraph", + "source_ids": [ + 106 + ], + "source": "Name: graph reasoning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: subgraph\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "graph reasoning", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 9.0, + "description": "graph reasoning starts its inference process from an entity", + "source_ids": [ + 106 + ], + "source": "Name: graph reasoning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: entity\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "graph reasoning", + "tgt_entity_name": "pagerank algorithm", + "relation_name": "", + "weight": 10.0, + "description": "graph reasoning uses the pagerank algorithm to compute the entity importance vector", + "source_ids": [ + 106 + ], + "source": "Name: graph reasoning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: pagerank algorithm\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "pagerank algorithm", + "tgt_entity_name": "entity importance vector", + "relation_name": "", + "weight": 10.0, + "description": "the pagerank algorithm computes the entity importance vector", + "source_ids": [ + 106 + ], + "source": "Name: pagerank algorithm\nType: METHOD_OR_TECHNIQUE", + "target": "Name: entity importance vector\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "entity importance vector", + "tgt_entity_name": "gt link matrix", + "relation_name": "", + "weight": 9.0, + "description": "the entity importance vector is mapped to tree nodes via the gt link matrix", + "source_ids": [ + 106 + ], + "source": "Name: gt link matrix\nType: SOFTWARE", + "target": "Name: entity importance vector\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "gt link matrix", + "tgt_entity_name": "tree node importance scores vector", + "relation_name": "", + "weight": 9.0, + "description": "the gt link matrix is used to derive the tree node importance scores vector", + "source_ids": [ + 106 + ], + "source": "Name: gt link matrix\nType: SOFTWARE", + "target": "Name: tree node importance scores vector\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "subgraph", + "tgt_entity_name": "selected nodes", + "relation_name": "", + "weight": 10.0, + "description": "the subgraph is extracted from selected nodes", + "source_ids": [ + 106 + ], + "source": "Name: subgraph\nType: TASK_OR_PROBLEM", + "target": "Name: selected nodes\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 9.0, + "description": "the agent attempts to extract the entity as the first step of the single hop process", + "source_ids": [ + 115 + ], + "source": "Name: entity\nType: TASK_OR_PROBLEM", + "target": "Name: agent\nType: PERSON" + }, + { + "src_entity_name": "text ranker", + "tgt_entity_name": "query", + "relation_name": "", + "weight": 9.0, + "description": "text ranker evaluates the relevance of content specifically to the query", + "source_ids": [ + 109 + ], + "source": "Name: text ranker\nType: SOFTWARE", + "target": "Name: query\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "text ranker", + "tgt_entity_name": "relevance score", + "relation_name": "", + "weight": 10.0, + "description": "text ranker assigns a relevance score to each tree node", + "source_ids": [ + 109 + ], + "source": "Name: text ranker\nType: SOFTWARE", + "target": "Name: relevance score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "text ranker", + "tgt_entity_name": "tree node", + "relation_name": "", + "weight": 9.0, + "description": "text ranker evaluates the content of the tree node", + "source_ids": [ + 109 + ], + "source": "Name: text ranker\nType: SOFTWARE", + "target": "Name: tree node\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "text ranker", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "text ranker evaluates the content of the nodes", + "source_ids": [ + 109 + ], + "source": "Name: text ranker\nType: SOFTWARE", + "target": "Name: nodes\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "skyline operator", + "relation_name": "", + "weight": 10.0, + "description": "skyline ranker employs the skyline operator to perform its filtering function", + "source_ids": [ + 109 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: skyline operator\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "tree node", + "relation_name": "", + "weight": 9.0, + "description": "skyline ranker filters tree nodes based on scoring dimensions", + "source_ids": [ + 109 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: tree node\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "relevance score", + "relation_name": "", + "weight": 8.0, + "description": "skyline ranker uses relevance scores along with others to filter nodes", + "source_ids": [ + 109 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: relevance score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 10.0, + "description": "skyline ranker filters the nodes based on the specified scoring dimensions", + "source_ids": [ + 109 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: nodes\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "9 87", + "relation_name": "", + "weight": 8.0, + "description": "the skyline ranker process results in an average of 9 87 retained nodes on one dataset", + "source_ids": [ + 157 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: 9 87\nType: MEASUREMENT" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "6 86", + "relation_name": "", + "weight": 8.0, + "description": "the skyline ranker process results in an average of 6 86 retained nodes on another dataset", + "source_ids": [ + 157 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: 6 86\nType: MEASUREMENT" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "8 6", + "relation_name": "", + "weight": 8.0, + "description": "the skyline ranker process results in an average of 8 6 retained nodes on the third dataset", + "source_ids": [ + 157 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: 8 6\nType: MEASUREMENT" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "10", + "relation_name": "", + "weight": 7.0, + "description": "the number of retained nodes by skyline ranker is comparable to the standard top k setting where k 10", + "source_ids": [ + 157 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: 10\nType: MEASUREMENT" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "candidate size", + "relation_name": "", + "weight": 8.0, + "description": "the skyline ranker process ensures high quality retrieval without inflating the candidate size", + "source_ids": [ + 157 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: candidate size\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "three datasets", + "relation_name": "", + "weight": 9.0, + "description": "the average number of retained nodes by skyline ranker is measured across three datasets", + "source_ids": [ + 157 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: three datasets\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "standard top k setting", + "relation_name": "", + "weight": 8.0, + "description": "the results of the skyline ranker process are compared to the standard top k setting", + "source_ids": [ + 157 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: standard top k setting\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "graph reasoning", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 10.0, + "description": "the graph reasoning operator enables the skyline ranker removing it disables the skyline ranker", + "source_ids": [ + 168 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: graph reasoning\nType: TECHNOLOGY" + }, + { + "src_entity_name": "text reasoning", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 9.0, + "description": "the removal of the text reasoning operator causes the skyline ranker to be disabled", + "source_ids": [ + 169 + ], + "source": "Name: skyline ranker\nType: SOFTWARE", + "target": "Name: text reasoning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "tree node", + "relation_name": "", + "weight": 8.0, + "description": "the skyline operator is used to filter tree nodes", + "source_ids": [ + 109 + ], + "source": "Name: skyline operator\nType: METHOD_OR_TECHNIQUE", + "target": "Name: tree node\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "the skyline operator filters the nodes", + "source_ids": [ + 109 + ], + "source": "Name: skyline operator\nType: METHOD_OR_TECHNIQUE", + "target": "Name: nodes\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "query", + "relation_name": "", + "weight": 9.0, + "description": "the agent classifies the query into a category", + "source_ids": [ + 112 + ], + "source": "Name: query\nType: TASK_OR_PROBLEM", + "target": "Name: agent\nType: PERSON" + }, + { + "src_entity_name": "query", + "tgt_entity_name": "parameters", + "relation_name": "", + "weight": 8.0, + "description": "parameters are dynamically instantiated based on the query", + "source_ids": [ + 112 + ], + "source": "Name: query\nType: TASK_OR_PROBLEM", + "target": "Name: parameters\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "ift inspired selector reasoner workflow", + "tgt_entity_name": "query", + "relation_name": "", + "weight": 8.0, + "description": "the workflow s agent based planning component classifies the query", + "source_ids": [ + 157 + ], + "source": "Name: query\nType: TASK_OR_PROBLEM", + "target": "Name: ift inspired selector reasoner workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "content generation", + "relation_name": "", + "weight": 10.0, + "description": "synthesizer operators are responsible for the task of content generation", + "source_ids": [ + 111 + ], + "source": "Name: synthesizer\nType: TASK_OR_PROBLEM", + "target": "Name: content generation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "partial responses", + "tgt_entity_name": "final coherent answer", + "relation_name": "", + "weight": 9.0, + "description": "partial responses generated by map are aggregated by reduce to form the final coherent answer", + "source_ids": [ + 111 + ], + "source": "Name: partial responses\nType: PRODUCT", + "target": "Name: final coherent answer\nType: PRODUCT" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "category", + "relation_name": "", + "weight": 9.0, + "description": "the agent uses the category derived from the query to generate the plan", + "source_ids": [ + 112 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: category\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "library", + "relation_name": "", + "weight": 8.0, + "description": "the agent selects operators from the library to form the plan", + "source_ids": [ + 112 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: library\nType: ORGANIZATION" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "operators", + "relation_name": "", + "weight": 9.0, + "description": "the agent selects a specific sequence of operators to create the plan", + "source_ids": [ + 112 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: operators\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "scent based", + "relation_name": "", + "weight": 8.0, + "description": "the agent executes the scent based selection strategy if entity extraction is successful", + "source_ids": [ + 115 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: scent based\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "section based", + "relation_name": "", + "weight": 8.0, + "description": "the agent falls back to the section based strategy if entity extraction fails", + "source_ids": [ + 115 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: section based\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "complex", + "relation_name": "", + "weight": 9.0, + "description": "the agent decomposes the complex problem into sub problems", + "source_ids": [ + 118 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: complex\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "single hop workflow", + "relation_name": "", + "weight": 10.0, + "description": "the agent applies the single hop workflow to each sub problem", + "source_ids": [ + 118 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: single hop workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "planning phase", + "tgt_entity_name": "agent", + "relation_name": "", + "weight": 9.0, + "description": "the planning phase is conducted by the agent", + "source_ids": [ + 135 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: planning phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "select by entity", + "relation_name": "", + "weight": 9.0, + "description": "the agent uses the select by entity method to retrieve relevant nodes", + "source_ids": [ + 135 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: select by entity\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "reasoning", + "relation_name": "", + "weight": 8.0, + "description": "the agent applies reasoning to refine nodes", + "source_ids": [ + 135 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "skyline filtering", + "relation_name": "", + "weight": 8.0, + "description": "the agent applies skyline filtering to refine nodes", + "source_ids": [ + 135 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: skyline filtering\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 9.0, + "description": "the agent uses the reduce method to synthesize the answer", + "source_ids": [ + 135 + ], + "source": "Name: agent\nType: PERSON", + "target": "Name: reduce\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "parameters", + "tgt_entity_name": "operators", + "relation_name": "", + "weight": 8.0, + "description": "parameters are dynamically instantiated for the operators", + "source_ids": [ + 112 + ], + "source": "Name: operators\nType: TASK_OR_PROBLEM", + "target": "Name: parameters\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "equation 8", + "tgt_entity_name": "agent plan", + "relation_name": "", + "weight": 10.0, + "description": "equation 8 utilizes the agent plan function", + "source_ids": [ + 112 + ], + "source": "Name: agent plan\nType: METHOD_OR_TECHNIQUE", + "target": "Name: equation 8\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "the plan", + "tgt_entity_name": "workflow", + "relation_name": "", + "weight": 9.0, + "description": "the plan follows a structured workflow", + "source_ids": [ + 114 + ], + "source": "Name: the plan\nType: TASK_OR_PROBLEM", + "target": "Name: workflow\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "the plan", + "tgt_entity_name": "category", + "relation_name": "", + "weight": 8.0, + "description": "the plan s workflow is tailored to each category", + "source_ids": [ + 114 + ], + "source": "Name: the plan\nType: TASK_OR_PROBLEM", + "target": "Name: category\nType: CONCEPT" + }, + { + "src_entity_name": "scent based", + "tgt_entity_name": "standard reasoning", + "relation_name": "", + "weight": 7.0, + "description": "the scent based path proceeds to standard reasoning and generation", + "source_ids": [ + 115 + ], + "source": "Name: scent based\nType: METHOD_OR_TECHNIQUE", + "target": "Name: standard reasoning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "section based", + "tgt_entity_name": "standard reasoning", + "relation_name": "", + "weight": 7.0, + "description": "the section based path proceeds to standard reasoning and generation", + "source_ids": [ + 115 + ], + "source": "Name: section based\nType: METHOD_OR_TECHNIQUE", + "target": "Name: standard reasoning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "single hop workflow", + "tgt_entity_name": "ps", + "relation_name": "", + "weight": 10.0, + "description": "the single hop workflow is identified by the notation ps in the text", + "source_ids": [ + 118 + ], + "source": "Name: single hop workflow\nType: METHOD_OR_TECHNIQUE", + "target": "Name: ps\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "complex", + "relation_name": "", + "weight": 9.0, + "description": "the expert query analyzer classifies questions into the complex category", + "source_ids": [ + 241 + ], + "source": "Name: complex\nType: TASK_OR_PROBLEM", + "target": "Name: expert query analyzer\nType: PERSON" + }, + { + "src_entity_name": "agent based planning strategy", + "tgt_entity_name": "global aggregation", + "relation_name": "", + "weight": 8.0, + "description": "the agent based planning strategy handles global aggregation queries separately", + "source_ids": [ + 179 + ], + "source": "Name: global aggregation\nType: TASK_OR_PROBLEM", + "target": "Name: agent based planning strategy\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "modal filter", + "tgt_entity_name": "nested composition", + "relation_name": "", + "weight": 8.0, + "description": "modal filters are applied as part of the nested composition process", + "source_ids": [ + 122 + ], + "source": "Name: modal filter\nType: TECHNOLOGY", + "target": "Name: nested composition\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "range filter", + "tgt_entity_name": "nested composition", + "relation_name": "", + "weight": 8.0, + "description": "range filters are applied as part of the nested composition process", + "source_ids": [ + 122 + ], + "source": "Name: range filter\nType: TECHNOLOGY", + "target": "Name: nested composition\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "ift principles", + "tgt_entity_name": "5.3 structured execution", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'IFT Principles' is a primary topic of section 5.3.", + "source_ids": [ + 123 + ], + "source": "Name: 5.3 structured execution\nType: SECTION_TITLE", + "target": "Name: ift principles\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "processed evidence", + "relation_name": "", + "weight": 10.0, + "description": "the synthesizer generates the answer based on the processed evidence", + "source_ids": [ + 124 + ], + "source": "Name: synthesizer\nType: SOFTWARE", + "target": "Name: processed evidence\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "analysis merging generation", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator is the key component used in the final stage of analysis merging generation", + "source_ids": [ + 129 + ], + "source": "Name: synthesizer\nType: SOFTWARE", + "target": "Name: analysis merging generation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "abstract textual queries", + "tgt_entity_name": "concrete operations", + "relation_name": "", + "weight": 8.0, + "description": "abstract textual queries are translated into concrete operations", + "source_ids": [ + 124 + ], + "source": "Name: abstract textual queries\nType: TASK_OR_PROBLEM", + "target": "Name: concrete operations\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "information patches", + "tgt_entity_name": "sensemaking", + "relation_name": "", + "weight": 8.0, + "description": "sensemaking is performed within the information patches", + "source_ids": [ + 124 + ], + "source": "Name: information patches\nType: TASK_OR_PROBLEM", + "target": "Name: sensemaking\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "computational resources", + "tgt_entity_name": "high value data patches", + "relation_name": "", + "weight": 8.0, + "description": "computational resources are focused on high value data patches", + "source_ids": [ + 124 + ], + "source": "Name: computational resources\nType: TASK_OR_PROBLEM", + "target": "Name: high value data patches\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "selector operators", + "relation_name": "", + "weight": 10.0, + "description": "selector operators are the mechanism used within the scent filter based retrieval process to identify relevant patches", + "source_ids": [ + 125 + ], + "source": "Name: scent filter based retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: selector operators\nType: SOFTWARE" + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "node set n", + "relation_name": "", + "weight": 10.0, + "description": "the process reduces the full node set n to a focused subset", + "source_ids": [ + 125 + ], + "source": "Name: scent filter based retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: node set n\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "focused node subset ns", + "relation_name": "", + "weight": 10.0, + "description": "the process results in the creation of the focused node subset ns", + "source_ids": [ + 125 + ], + "source": "Name: scent filter based retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: focused node subset ns\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "equation 13", + "relation_name": "", + "weight": 10.0, + "description": "equation 13 describes the execution of the scent filter based retrieval process", + "source_ids": [ + 125 + ], + "source": "Name: scent filter based retrieval\nType: TASK_OR_PROBLEM", + "target": "Name: equation 13\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "params sel", + "relation_name": "", + "weight": 8.0, + "description": "selector operators utilize params sel in their function to reduce the node set", + "source_ids": [ + 125 + ], + "source": "Name: selector operators\nType: SOFTWARE", + "target": "Name: params sel\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "patches", + "relation_name": "", + "weight": 9.0, + "description": "selector operators identify relevant patches", + "source_ids": [ + 125 + ], + "source": "Name: selector operators\nType: SOFTWARE", + "target": "Name: patches\nType: PRODUCT" + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "explicit filter constraints", + "relation_name": "", + "weight": 9.0, + "description": "selector operators apply explicit filter constraints to identify patches", + "source_ids": [ + 125 + ], + "source": "Name: selector operators\nType: SOFTWARE", + "target": "Name: explicit filter constraints\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "reasoner operators", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "reasoner operators evaluate nodes using multiple dimensions like graph topology and semantic relevance", + "source_ids": [ + 127 + ], + "source": "Name: reasoner operators\nType: TASK_OR_PROBLEM", + "target": "Name: nodes\nType: UNKNOWN" + }, + { + "src_entity_name": "reasoner operators", + "tgt_entity_name": "graph topology", + "relation_name": "", + "weight": 9.0, + "description": "reasoner operators use graph topology as a dimension for evaluation", + "source_ids": [ + 127 + ], + "source": "Name: reasoner operators\nType: TASK_OR_PROBLEM", + "target": "Name: graph topology\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "reasoner operators", + "tgt_entity_name": "semantic relevance", + "relation_name": "", + "weight": 9.0, + "description": "reasoner operators use semantic relevance as a dimension for evaluation", + "source_ids": [ + 127 + ], + "source": "Name: reasoner operators\nType: TASK_OR_PROBLEM", + "target": "Name: semantic relevance\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "final retrieval set", + "relation_name": "", + "weight": 10.0, + "description": "the skyline ranker is employed to generate the final retrieval set", + "source_ids": [ + 127 + ], + "source": "Name: skyline ranker\nType: TASK_OR_PROBLEM", + "target": "Name: final retrieval set\nType: UNKNOWN" + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "equation 14", + "relation_name": "", + "weight": 10.0, + "description": "equation 14 mathematically defines the operation of the skyline ranker", + "source_ids": [ + 127 + ], + "source": "Name: skyline ranker\nType: TASK_OR_PROBLEM", + "target": "Name: equation 14\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "n r", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 10.0, + "description": "n r is the output variable resulting from the skyline ranker operation", + "source_ids": [ + 127 + ], + "source": "Name: skyline ranker\nType: TASK_OR_PROBLEM", + "target": "Name: n r\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "s g n s", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 8.0, + "description": "s g n s is an input component used within the skyline ranker equation", + "source_ids": [ + 127 + ], + "source": "Name: skyline ranker\nType: TASK_OR_PROBLEM", + "target": "Name: s g n s\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "t n", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 8.0, + "description": "t n is an input component used within the skyline ranker equation", + "source_ids": [ + 127 + ], + "source": "Name: skyline ranker\nType: TASK_OR_PROBLEM", + "target": "Name: t n\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "n s", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 8.0, + "description": "n s is the set of nodes provided as input to the skyline ranker equation", + "source_ids": [ + 127 + ], + "source": "Name: skyline ranker\nType: TASK_OR_PROBLEM", + "target": "Name: n s\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "the skyline operator retains nodes that are valuable in at least one dimension and discards dominated ones", + "source_ids": [ + 127 + ], + "source": "Name: skyline operator\nType: TASK_OR_PROBLEM", + "target": "Name: nodes\nType: UNKNOWN" + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "pareto frontier", + "relation_name": "", + "weight": 10.0, + "description": "the skyline operator retains the pareto frontier of nodes", + "source_ids": [ + 127 + ], + "source": "Name: skyline operator\nType: TASK_OR_PROBLEM", + "target": "Name: pareto frontier\nType: CONCEPT" + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "fixed top retrieval", + "relation_name": "", + "weight": 7.0, + "description": "the skyline operator is contrasted with fixed top retrieval in the text", + "source_ids": [ + 127 + ], + "source": "Name: skyline operator\nType: TASK_OR_PROBLEM", + "target": "Name: fixed top retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "n r", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "n r represents the set of retained nodes", + "source_ids": [ + 127 + ], + "source": "Name: n r\nType: PARAMETER_OR_VARIABLE", + "target": "Name: nodes\nType: UNKNOWN" + }, + { + "src_entity_name": "pre selection", + "tgt_entity_name": "noise", + "relation_name": "", + "weight": 9.0, + "description": "pre selection minimizes noise", + "source_ids": [ + 127 + ], + "source": "Name: noise\nType: CONCEPT", + "target": "Name: pre selection\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "pre selection", + "tgt_entity_name": "foraging cost", + "relation_name": "", + "weight": 8.0, + "description": "pre selection optimizes the foraging cost", + "source_ids": [ + 127 + ], + "source": "Name: foraging cost\nType: MEASUREMENT", + "target": "Name: pre selection\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "table: cref='#/texts/136'...", + "tgt_entity_name": "cref", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/136'...' contains data about 'cref'.", + "source_ids": [ + 132 + ], + "source": "Name: table: cref='#/texts/136'...\nType: TABLE", + "target": "Name: cref\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "map operator", + "tgt_entity_name": "decompose", + "relation_name": "", + "weight": 9.0, + "description": "the map operator analyzes sub problems generated from the decompose process", + "source_ids": [ + 134 + ], + "source": "Name: map operator\nType: TASK_OR_PROBLEM", + "target": "Name: decompose\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "map operator", + "relation_name": "", + "weight": 9.0, + "description": "the reduce operator aggregates the partial results generated by the map operator", + "source_ids": [ + 134 + ], + "source": "Name: map operator\nType: TASK_OR_PROBLEM", + "target": "Name: reduce operator\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "map operator", + "tgt_entity_name": "evidence blocks", + "relation_name": "", + "weight": 9.0, + "description": "the map operator performs analysis on individual evidence blocks", + "source_ids": [ + 134 + ], + "source": "Name: map operator\nType: TASK_OR_PROBLEM", + "target": "Name: evidence blocks\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "map operator", + "tgt_entity_name": "sub problems", + "relation_name": "", + "weight": 9.0, + "description": "the map operator performs analysis on sub problems", + "source_ids": [ + 134 + ], + "source": "Name: map operator\nType: TASK_OR_PROBLEM", + "target": "Name: sub problems\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "map operator", + "tgt_entity_name": "intermediate insights", + "relation_name": "", + "weight": 9.0, + "description": "the map operator generates intermediate insights as its output", + "source_ids": [ + 134 + ], + "source": "Name: map operator\nType: TASK_OR_PROBLEM", + "target": "Name: intermediate insights\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "map operator", + "tgt_entity_name": "detailed content extraction", + "relation_name": "", + "weight": 8.0, + "description": "the map operator is responsible for detailed content extraction", + "source_ids": [ + 134 + ], + "source": "Name: map operator\nType: TASK_OR_PROBLEM", + "target": "Name: detailed content extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "global filter", + "relation_name": "", + "weight": 8.0, + "description": "the reduce operator aggregates statistical counts derived from the global filter", + "source_ids": [ + 134 + ], + "source": "Name: reduce operator\nType: TASK_OR_PROBLEM", + "target": "Name: global filter\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "partial results", + "relation_name": "", + "weight": 9.0, + "description": "the reduce operator aggregates partial results", + "source_ids": [ + 134 + ], + "source": "Name: reduce operator\nType: TASK_OR_PROBLEM", + "target": "Name: partial results\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "answers to decomposed sub queries", + "relation_name": "", + "weight": 8.0, + "description": "the reduce operator aggregates answers to decomposed sub queries", + "source_ids": [ + 134 + ], + "source": "Name: reduce operator\nType: TASK_OR_PROBLEM", + "target": "Name: answers to decomposed sub queries\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "statistical counts", + "relation_name": "", + "weight": 8.0, + "description": "the reduce operator aggregates statistical counts", + "source_ids": [ + 134 + ], + "source": "Name: reduce operator\nType: TASK_OR_PROBLEM", + "target": "Name: statistical counts\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "final response", + "relation_name": "", + "weight": 9.0, + "description": "the reduce operator constructs the final response", + "source_ids": [ + 134 + ], + "source": "Name: reduce operator\nType: TASK_OR_PROBLEM", + "target": "Name: final response\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "high level reasoning synthesis", + "relation_name": "", + "weight": 8.0, + "description": "the reduce operator is responsible for high level reasoning synthesis", + "source_ids": [ + 134 + ], + "source": "Name: reduce operator\nType: TASK_OR_PROBLEM", + "target": "Name: high level reasoning synthesis\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "select by entity", + "tgt_entity_name": "reasoning", + "relation_name": "", + "weight": 7.0, + "description": "the select by entity method is followed by reasoning in the workflow", + "source_ids": [ + 135 + ], + "source": "Name: select by entity\nType: METHOD_OR_TECHNIQUE", + "target": "Name: reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "reasoning", + "tgt_entity_name": "skyline filtering", + "relation_name": "", + "weight": 7.0, + "description": "reasoning is followed by skyline filtering in the workflow", + "source_ids": [ + 135 + ], + "source": "Name: skyline filtering\nType: METHOD_OR_TECHNIQUE", + "target": "Name: reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "skyline filtering", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 7.0, + "description": "skyline filtering is followed by the reduce method in the workflow", + "source_ids": [ + 135 + ], + "source": "Name: skyline filtering\nType: METHOD_OR_TECHNIQUE", + "target": "Name: reduce\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "reasoning", + "tgt_entity_name": "disjoint pieces of evidence", + "relation_name": "", + "weight": 8.0, + "description": "reasoning is the action performed on disjoint pieces of evidence", + "source_ids": [ + 179 + ], + "source": "Name: reasoning\nType: METHOD_OR_TECHNIQUE", + "target": "Name: disjoint pieces of evidence\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "experiments", + "tgt_entity_name": "6 experiments", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Experiments' is the primary topic covered in section 6.", + "source_ids": [ + 136 + ], + "source": "Name: 6 experiments\nType: SECTION_TITLE", + "target": "Name: experiments\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "our", + "tgt_entity_name": "experiments", + "relation_name": "", + "weight": 8.0, + "description": "our group conducted the experiments referenced in the text", + "source_ids": [ + 139 + ], + "source": "Name: experiments\nType: TASK_OR_PROBLEM", + "target": "Name: our\nType: ORGANIZATION" + }, + { + "src_entity_name": "datasets", + "tgt_entity_name": "experiments", + "relation_name": "", + "weight": 9.0, + "description": "the datasets listed in table 4 were utilized in the experiments", + "source_ids": [ + 139 + ], + "source": "Name: experiments\nType: TASK_OR_PROBLEM", + "target": "Name: datasets\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "baseline methods", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 8.0, + "description": "the accuracy of baseline methods is evaluated and compared in the experiments", + "source_ids": [ + 137 + ], + "source": "Name: baseline methods\nType: METHOD_OR_TECHNIQUE", + "target": "Name: accuracy\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "exact match", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 9.0, + "description": "exact match is described as being stricter than accuracy", + "source_ids": [ + 229 + ], + "source": "Name: accuracy\nType: EVALUATION_METRIC", + "target": "Name: exact match\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "accuracy", + "tgt_entity_name": "token based f1 score", + "relation_name": "", + "weight": 9.0, + "description": "both are primary evaluation metrics used together in the assessment process", + "source_ids": [ + 144 + ], + "source": "Name: accuracy\nType: EVALUATION_METRIC", + "target": "Name: token based f1 score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 uses accuracy as a metric represented by blue bars for qasper", + "source_ids": [ + 177 + ], + "source": "Name: accuracy\nType: EVALUATION_METRIC", + "target": "Name: figure 7\nType: IMAGE" + }, + { + "src_entity_name": "accuracy", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "accuracy is the specific metric used to evaluate performance on the qasper dataset in the figure", + "source_ids": [ + 177 + ], + "source": "Name: accuracy\nType: EVALUATION_METRIC", + "target": "Name: qasper\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "accuracy", + "tgt_entity_name": "blue bars", + "relation_name": "", + "weight": 9.0, + "description": "accuracy is visually represented by the blue bars in the figure", + "source_ids": [ + 177 + ], + "source": "Name: accuracy\nType: EVALUATION_METRIC", + "target": "Name: blue bars\nType: IMAGE" + }, + { + "src_entity_name": "accuracy", + "tgt_entity_name": "a.1 evaluation metrics", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Accuracy' is a specific evaluation metric detailed as a topic within section A.1.", + "source_ids": [ + 221 + ], + "source": "Name: accuracy\nType: EVALUATION_METRIC", + "target": "Name: a.1 evaluation metrics\nType: SECTION_TITLE" + }, + { + "src_entity_name": "accuracy", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 10.0, + "description": "The metric 'Accuracy' is explicitly defined and detailed within section A.1.2.", + "source_ids": [ + 226 + ], + "source": "Name: accuracy\nType: EVALUATION_METRIC", + "target": "Name: a.1.2 qa performance metrics\nType: SECTION_TITLE" + }, + { + "src_entity_name": "table 4", + "tgt_entity_name": "datasets", + "relation_name": "", + "weight": 10.0, + "description": "table 4 lists the datasets used in the experiments", + "source_ids": [ + 139 + ], + "source": "Name: table 4\nType: TABLE", + "target": "Name: datasets\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "human annotators", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 6.0, + "description": "the work of human annotators contributes to the statistics presented in table 4", + "source_ids": [ + 141 + ], + "source": "Name: table 4\nType: TABLE", + "target": "Name: human annotators\nType: PERSON" + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 7.0, + "description": "statistics for mmlongbench are presented in table 4", + "source_ids": [ + 141 + ], + "source": "Name: table 4\nType: TABLE", + "target": "Name: mmlongbench\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 7.0, + "description": "statistics for m3docvqa are presented in table 4", + "source_ids": [ + 141 + ], + "source": "Name: table 4\nType: TABLE", + "target": "Name: m3docvqa\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 7.0, + "description": "statistics for qasper are presented in table 4", + "source_ids": [ + 141 + ], + "source": "Name: table 4\nType: TABLE", + "target": "Name: qasper\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "exact match", + "tgt_entity_name": "em", + "relation_name": "", + "weight": 10.0, + "description": "exact match is the definition of the abbreviation em", + "source_ids": [ + 170 + ], + "source": "Name: em\nType: EVALUATION_METRIC", + "target": "Name: exact match\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "table 7", + "tgt_entity_name": "em", + "relation_name": "", + "weight": 9.0, + "description": "table 7 uses em exact match as a metric to evaluate qa performance", + "source_ids": [ + 170 + ], + "source": "Name: em\nType: EVALUATION_METRIC", + "target": "Name: table 7\nType: TABLE" + }, + { + "src_entity_name": "em", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 8.0, + "description": "em and f1 are both evaluation metrics used together to compare qa performance in table 7", + "source_ids": [ + 170 + ], + "source": "Name: em\nType: EVALUATION_METRIC", + "target": "Name: f1\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "f1 score", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 10.0, + "description": "f1 score is the definition of the abbreviation f1", + "source_ids": [ + 170 + ], + "source": "Name: f1\nType: EVALUATION_METRIC", + "target": "Name: f1 score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "table 7", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 9.0, + "description": "table 7 uses f1 f1 score as a metric to evaluate qa performance", + "source_ids": [ + 170 + ], + "source": "Name: f1\nType: EVALUATION_METRIC", + "target": "Name: table 7\nType: TABLE" + }, + { + "src_entity_name": "exact match", + "tgt_entity_name": "token based f1 score", + "relation_name": "", + "weight": 9.0, + "description": "both are primary evaluation metrics used together in the assessment process", + "source_ids": [ + 144 + ], + "source": "Name: exact match\nType: EVALUATION_METRIC", + "target": "Name: token based f1 score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 uses exact match as a metric represented by blue bars for mmlongbench", + "source_ids": [ + 177 + ], + "source": "Name: exact match\nType: EVALUATION_METRIC", + "target": "Name: figure 7\nType: IMAGE" + }, + { + "src_entity_name": "exact match", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "exact match is the specific metric used to evaluate performance on the mmlongbench dataset in the figure", + "source_ids": [ + 177 + ], + "source": "Name: exact match\nType: EVALUATION_METRIC", + "target": "Name: mmlongbench\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "exact match", + "tgt_entity_name": "blue bars", + "relation_name": "", + "weight": 9.0, + "description": "exact match is visually represented by the blue bars in the figure", + "source_ids": [ + 177 + ], + "source": "Name: exact match\nType: EVALUATION_METRIC", + "target": "Name: blue bars\nType: IMAGE" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "f1 score", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 uses f1 score as a metric represented by red bars", + "source_ids": [ + 177 + ], + "source": "Name: f1 score\nType: EVALUATION_METRIC", + "target": "Name: figure 7\nType: IMAGE" + }, + { + "src_entity_name": "f1 score", + "tgt_entity_name": "red bars", + "relation_name": "", + "weight": 9.0, + "description": "f1 score is visually represented by the red bars in the figure", + "source_ids": [ + 177 + ], + "source": "Name: f1 score\nType: EVALUATION_METRIC", + "target": "Name: red bars\nType: IMAGE" + }, + { + "src_entity_name": "f1 score", + "tgt_entity_name": "token level f1 score", + "relation_name": "", + "weight": 9.0, + "description": "the token level f1 score is a specific application of the f1 score for text span answers", + "source_ids": [ + 231 + ], + "source": "Name: f1 score\nType: EVALUATION_METRIC", + "target": "Name: token level f1 score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "f1 score", + "tgt_entity_name": "equation 19", + "relation_name": "", + "weight": 10.0, + "description": "equation 19 provides the mathematical formula for calculating the f1 score", + "source_ids": [ + 231 + ], + "source": "Name: f1 score\nType: EVALUATION_METRIC", + "target": "Name: equation 19\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "datasets", + "relation_name": "", + "weight": 10.0, + "description": "table 5 evaluates methods across various datasets", + "source_ids": [ + 153 + ], + "source": "Name: datasets\nType: DATASET_OR_CORPUS", + "target": "Name: table 5\nType: TABLE" + }, + { + "src_entity_name": "performance comparison", + "tgt_entity_name": "datasets", + "relation_name": "", + "weight": 8.0, + "description": "the performance comparison is conducted across various datasets", + "source_ids": [ + 153 + ], + "source": "Name: datasets\nType: DATASET_OR_CORPUS", + "target": "Name: performance comparison\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "datasets", + "relation_name": "", + "weight": 8.0, + "description": "the gradient based er method s performance is evaluated across multiple datasets", + "source_ids": [ + 176 + ], + "source": "Name: datasets\nType: DATASET_OR_CORPUS", + "target": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "table: cref='#/texts/143'...", + "tgt_entity_name": "texts/143", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/143'...' contains data about 'texts/143'.", + "source_ids": [ + 140 + ], + "source": "Name: table: cref='#/texts/143'...\nType: TABLE", + "target": "Name: texts/143\nType: SECTION_TITLE" + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "m3docvqa", + "relation_name": "", + "weight": 9.0, + "description": "both are widely adopted benchmarking datasets used for complex document qa tasks", + "source_ids": [ + 141 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: m3docvqa\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "both are widely adopted benchmarking datasets used for complex document qa tasks", + "source_ids": [ + 141 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: qasper\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "guidebooks", + "relation_name": "", + "weight": 8.0, + "description": "mmlongbench covers guidebooks as a category of documents", + "source_ids": [ + 141 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: guidebooks\nType: PRODUCT" + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "financial reports", + "relation_name": "", + "weight": 8.0, + "description": "mmlongbench covers financial reports as a category of documents", + "source_ids": [ + 141 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: financial reports\nType: PRODUCT" + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "industry files", + "relation_name": "", + "weight": 8.0, + "description": "mmlongbench covers industry files as a category of documents", + "source_ids": [ + 141 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: industry files\nType: PRODUCT" + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "page numbers", + "relation_name": "", + "weight": 7.0, + "description": "mmlongbench provides page numbers used to filter candidate blocks", + "source_ids": [ + 144 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: page numbers\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to MMLongBench", + "source_ids": [ + 159 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "docetl consumes over 53 million tokens on the mmlongbench dataset", + "source_ids": [ + 160 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: docetl\nType: PRODUCT" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to MMLongBench", + "source_ids": [ + 175 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: cref='#/texts/224'\nType: IMAGE" + }, + { + "src_entity_name": "figure 8", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "figure 8 presents a case study involving responses from mmlongbench", + "source_ids": [ + 181 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: figure 8\nType: IMAGE" + }, + { + "src_entity_name": "case study", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "the case study uses responses from mmlongbench", + "source_ids": [ + 181 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: case study\nType: EVENT" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to MMLongBench", + "source_ids": [ + 182 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "figure 9", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "figure 9 presents an error analysis on queries sampled from the mmlongbench dataset", + "source_ids": [ + 183 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: figure 9\nType: IMAGE" + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "200", + "relation_name": "", + "weight": 8.0, + "description": "200 sampled queries were taken from the mmlongbench dataset", + "source_ids": [ + 183 + ], + "source": "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: 200\nType: MEASUREMENT" + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "both are widely adopted benchmarking datasets used for complex document qa tasks", + "source_ids": [ + 141 + ], + "source": "Name: m3docvqa\nType: DATASET_OR_CORPUS", + "target": "Name: qasper\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "html type documents", + "relation_name": "", + "weight": 9.0, + "description": "m3docvqa tests rag systems on a collection of html type documents", + "source_ids": [ + 141 + ], + "source": "Name: m3docvqa\nType: DATASET_OR_CORPUS", + "target": "Name: html type documents\nType: PRODUCT" + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "rag systems", + "relation_name": "", + "weight": 10.0, + "description": "m3docvqa is designed to test rag systems", + "source_ids": [ + 141 + ], + "source": "Name: m3docvqa\nType: DATASET_OR_CORPUS", + "target": "Name: rag systems\nType: SOFTWARE" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "m3docvqa", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to M3DocVQA", + "source_ids": [ + 159 + ], + "source": "Name: m3docvqa\nType: DATASET_OR_CORPUS", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "scientific papers", + "relation_name": "", + "weight": 10.0, + "description": "qasper is focused on scientific papers", + "source_ids": [ + 141 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: scientific papers\nType: PRODUCT" + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "evidence statements", + "relation_name": "", + "weight": 7.0, + "description": "qasper provides evidence statements used to filter candidate blocks", + "source_ids": [ + 144 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: evidence statements\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Qasper", + "source_ids": [ + 159 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "w o selector variant", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 7.0, + "description": "the w o selector variant incurs a computational cost measured in tokens on the qasper dataset", + "source_ids": [ + 172 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: w o selector variant\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "ift inspired selection mechanism", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 7.0, + "description": "the ift inspired selection mechanism s efficiency is validated using the qasper dataset", + "source_ids": [ + 172 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: ift inspired selection mechanism\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Qasper", + "source_ids": [ + 175 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: cref='#/texts/224'\nType: IMAGE" + }, + { + "src_entity_name": "figure 8", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "figure 8 presents a case study involving responses from qasper", + "source_ids": [ + 181 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: figure 8\nType: IMAGE" + }, + { + "src_entity_name": "case study", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "the case study uses responses from qasper", + "source_ids": [ + 181 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: case study\nType: EVENT" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Qasper", + "source_ids": [ + 182 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "figure 9", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "figure 9 presents an error analysis on queries sampled from the qasper dataset", + "source_ids": [ + 183 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: figure 9\nType: IMAGE" + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "200", + "relation_name": "", + "weight": 8.0, + "description": "200 sampled queries were taken from the qasper dataset", + "source_ids": [ + 183 + ], + "source": "Name: qasper\nType: DATASET_OR_CORPUS", + "target": "Name: 200\nType: MEASUREMENT" + }, + { + "src_entity_name": "human annotators", + "tgt_entity_name": "qa pairs", + "relation_name": "", + "weight": 9.0, + "description": "human annotators answer and refine qa pairs", + "source_ids": [ + 141 + ], + "source": "Name: human annotators\nType: PERSON", + "target": "Name: qa pairs\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "20", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based er method achieves a boost of over 20 in graph density", + "source_ids": [ + 176 + ], + "source": "Name: 20\nType: PERCENTAGE", + "target": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "html type documents", + "tgt_entity_name": "wikipedia pages", + "relation_name": "", + "weight": 10.0, + "description": "the html type documents are sourced from wikipedia pages", + "source_ids": [ + 141 + ], + "source": "Name: html type documents\nType: PRODUCT", + "target": "Name: wikipedia pages\nType: LOCATION" + }, + { + "src_entity_name": "paper", + "tgt_entity_name": "figures", + "relation_name": "", + "weight": 6.0, + "description": "the example query asks to count figures in the paper", + "source_ids": [ + 258 + ], + "source": "Name: figures\nType: IMAGE", + "target": "Name: paper\nType: BOOK" + }, + { + "src_entity_name": "wikipedia", + "tgt_entity_name": "https www wikipedia org", + "relation_name": "", + "weight": 10.0, + "description": "wikipedia is the organization represented by the url https www wikipedia org", + "source_ids": [ + 142 + ], + "source": "Name: wikipedia\nType: ORGANIZATION", + "target": "Name: https www wikipedia org\nType: LOCATION" + }, + { + "src_entity_name": "time cost", + "tgt_entity_name": "token usage", + "relation_name": "", + "weight": 8.0, + "description": "both are metrics used to assess efficiency during the response phase", + "source_ids": [ + 144 + ], + "source": "Name: time cost\nType: EVALUATION_METRIC", + "target": "Name: token usage\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "time cost", + "tgt_entity_name": "response phase", + "relation_name": "", + "weight": 8.0, + "description": "time cost is measured during the response phase", + "source_ids": [ + 144 + ], + "source": "Name: time cost\nType: EVALUATION_METRIC", + "target": "Name: response phase\nType: TIME" + }, + { + "src_entity_name": "token usage", + "tgt_entity_name": "response phase", + "relation_name": "", + "weight": 8.0, + "description": "token usage is measured during the response phase", + "source_ids": [ + 144 + ], + "source": "Name: token usage\nType: EVALUATION_METRIC", + "target": "Name: response phase\nType: TIME" + }, + { + "src_entity_name": "pdf parsing", + "tgt_entity_name": "pdf blocks", + "relation_name": "", + "weight": 7.0, + "description": "pdf parsing errors affect the availability of items within pdf blocks", + "source_ids": [ + 144 + ], + "source": "Name: pdf parsing\nType: METHOD_OR_TECHNIQUE", + "target": "Name: pdf blocks\nType: TABLE" + }, + { + "src_entity_name": "texts", + "tgt_entity_name": "formulas", + "relation_name": "", + "weight": 6.0, + "description": "both are types of pdf blocks manually labeled to establish ground truth", + "source_ids": [ + 144 + ], + "source": "Name: texts\nType: TABLE", + "target": "Name: formulas\nType: TABLE" + }, + { + "src_entity_name": "ground truth", + "tgt_entity_name": "pdf blocks", + "relation_name": "", + "weight": 10.0, + "description": "pdf blocks are manually labeled to establish the ground truth", + "source_ids": [ + 144 + ], + "source": "Name: ground truth\nType: CONCEPT", + "target": "Name: pdf blocks\nType: TABLE" + }, + { + "src_entity_name": "metadata", + "tgt_entity_name": "ground truth", + "relation_name": "", + "weight": 8.0, + "description": "metadata provides the ground truth evidence used to guide the labeling process", + "source_ids": [ + 144 + ], + "source": "Name: ground truth\nType: CONCEPT", + "target": "Name: metadata\nType: CONCEPT" + }, + { + "src_entity_name": "llm based extraction step", + "tgt_entity_name": "ground truth", + "relation_name": "", + "weight": 9.0, + "description": "the llm based extraction step aligns the model output with the ground truth format", + "source_ids": [ + 224 + ], + "source": "Name: ground truth\nType: CONCEPT", + "target": "Name: llm based extraction step\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "candidate blocks", + "tgt_entity_name": "modality", + "relation_name": "", + "weight": 8.0, + "description": "candidate blocks are filtered using the given modality", + "source_ids": [ + 144 + ], + "source": "Name: modality\nType: CONCEPT", + "target": "Name: candidate blocks\nType: TABLE" + }, + { + "src_entity_name": "candidate blocks", + "tgt_entity_name": "pdf blocks", + "relation_name": "", + "weight": 7.0, + "description": "candidate blocks are filtered from the set of pdf blocks", + "source_ids": [ + 144 + ], + "source": "Name: pdf blocks\nType: TABLE", + "target": "Name: candidate blocks\nType: TABLE" + }, + { + "src_entity_name": "candidate blocks", + "tgt_entity_name": "page numbers", + "relation_name": "", + "weight": 8.0, + "description": "candidate blocks are filtered using page numbers from mmlongbench", + "source_ids": [ + 144 + ], + "source": "Name: candidate blocks\nType: TABLE", + "target": "Name: page numbers\nType: UNKNOWN" + }, + { + "src_entity_name": "candidate blocks", + "tgt_entity_name": "evidence statements", + "relation_name": "", + "weight": 8.0, + "description": "candidate blocks are filtered using evidence statements from qasper", + "source_ids": [ + 144 + ], + "source": "Name: candidate blocks\nType: TABLE", + "target": "Name: evidence statements\nType: UNKNOWN" + }, + { + "src_entity_name": "baselines", + "tgt_entity_name": "three model configurations", + "relation_name": "", + "weight": 9.0, + "description": "the baselines consist of or are defined by the three model configurations used in the experiments", + "source_ids": [ + 145 + ], + "source": "Name: baselines\nType: TASK_OR_PROBLEM", + "target": "Name: three model configurations\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "our experiments", + "tgt_entity_name": "baselines", + "relation_name": "", + "weight": 9.0, + "description": "the experiments consider the baselines as part of their evaluation process", + "source_ids": [ + 145 + ], + "source": "Name: baselines\nType: TASK_OR_PROBLEM", + "target": "Name: our experiments\nType: EVENT" + }, + { + "src_entity_name": "our experiments", + "tgt_entity_name": "three model configurations", + "relation_name": "", + "weight": 10.0, + "description": "the experiments explicitly consider three model configurations as their primary focus", + "source_ids": [ + 145 + ], + "source": "Name: three model configurations\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: our experiments\nType: EVENT" + }, + { + "src_entity_name": "conventional rag", + "tgt_entity_name": "bm25", + "relation_name": "", + "weight": 9.0, + "description": "conventional rag is the pipeline where bm25 is selected as a retrieval model", + "source_ids": [ + 146 + ], + "source": "Name: conventional rag\nType: TASK_OR_PROBLEM", + "target": "Name: bm25\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "conventional rag", + "tgt_entity_name": "vanilla rag", + "relation_name": "", + "weight": 9.0, + "description": "conventional rag is the pipeline where vanilla rag is selected as a retrieval model", + "source_ids": [ + 146 + ], + "source": "Name: conventional rag\nType: TASK_OR_PROBLEM", + "target": "Name: vanilla rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "layout vanilla", + "tgt_entity_name": "conventional rag", + "relation_name": "", + "weight": 8.0, + "description": "layout vanilla is implemented as part of the conventional rag pipeline described in the text", + "source_ids": [ + 146 + ], + "source": "Name: conventional rag\nType: TASK_OR_PROBLEM", + "target": "Name: layout vanilla\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "layout vanilla", + "tgt_entity_name": "vanilla rag", + "relation_name": "", + "weight": 10.0, + "description": "layout vanilla is a variant that builds upon vanilla rag by adding document layout analysis", + "source_ids": [ + 146 + ], + "source": "Name: vanilla rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: layout vanilla\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "graphrag global", + "relation_name": "", + "weight": 10.0, + "description": "graphrag global is a version of graphrag that uses global search methods", + "source_ids": [ + 147 + ], + "source": "Name: graphrag\nType: TECHNOLOGY", + "target": "Name: graphrag global\nType: TECHNOLOGY" + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "graphrag local", + "relation_name": "", + "weight": 10.0, + "description": "graphrag local is a version of graphrag that uses local search methods", + "source_ids": [ + 147 + ], + "source": "Name: graphrag\nType: TECHNOLOGY", + "target": "Name: graphrag local\nType: TECHNOLOGY" + }, + { + "src_entity_name": "graphrag global", + "tgt_entity_name": "global search methods", + "relation_name": "", + "weight": 10.0, + "description": "graphrag global employs global search methods", + "source_ids": [ + 147 + ], + "source": "Name: graphrag global\nType: TECHNOLOGY", + "target": "Name: global search methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "graphrag local", + "tgt_entity_name": "local search methods", + "relation_name": "", + "weight": 10.0, + "description": "graphrag local employs local search methods", + "source_ids": [ + 147 + ], + "source": "Name: graphrag local\nType: TECHNOLOGY", + "target": "Name: local search methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "layoutsegmentedrag", + "tgt_entity_name": "mm vanilla", + "relation_name": "", + "weight": 9.0, + "description": "mm vanilla is included as a method within the layoutsegmentedrag category", + "source_ids": [ + 148 + ], + "source": "Name: layoutsegmentedrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: mm vanilla\nType: PRODUCT" + }, + { + "src_entity_name": "layoutsegmentedrag", + "tgt_entity_name": "treetraverse", + "relation_name": "", + "weight": 9.0, + "description": "treetraverse is included as a method within the layoutsegmentedrag category", + "source_ids": [ + 148 + ], + "source": "Name: layoutsegmentedrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: treetraverse\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "layoutsegmentedrag", + "tgt_entity_name": "graphranker", + "relation_name": "", + "weight": 9.0, + "description": "graphranker is included as a method within the layoutsegmentedrag category", + "source_ids": [ + 148 + ], + "source": "Name: layoutsegmentedrag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: graphranker\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "treetraverse", + "tgt_entity_name": "pageindex", + "relation_name": "", + "weight": 8.0, + "description": "treetraverse is inspired by pageindex", + "source_ids": [ + 148 + ], + "source": "Name: pageindex\nType: PRODUCT", + "target": "Name: treetraverse\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "pageindex", + "tgt_entity_name": "page 39", + "relation_name": "", + "weight": 5.0, + "description": "pageindex is referenced in citation page 39", + "source_ids": [ + 148 + ], + "source": "Name: pageindex\nType: PRODUCT", + "target": "Name: page 39\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "graphranker", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "graphranker is extended from hipporag", + "source_ids": [ + 148 + ], + "source": "Name: graphranker\nType: METHOD_OR_TECHNIQUE", + "target": "Name: hipporag\nType: METHOD_OR_ARCHITECTURE" + }, + { + "src_entity_name": "graphranker", + "tgt_entity_name": "personalized pagerank", + "relation_name": "", + "weight": 9.0, + "description": "graphranker applies personalized pagerank to rank relevant nodes", + "source_ids": [ + 148 + ], + "source": "Name: graphranker\nType: METHOD_OR_TECHNIQUE", + "target": "Name: personalized pagerank\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "graphranker", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to GraphRanker", + "source_ids": [ + 159 + ], + "source": "Name: graphranker\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "page 19", + "relation_name": "", + "weight": 5.0, + "description": "hipporag is referenced in citation page 19", + "source_ids": [ + 148 + ], + "source": "Name: hipporag\nType: METHOD_OR_ARCHITECTURE", + "target": "Name: page 19\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "personalized pagerank", + "tgt_entity_name": "page 20", + "relation_name": "", + "weight": 5.0, + "description": "personalized pagerank is referenced in citation page 20", + "source_ids": [ + 148 + ], + "source": "Name: personalized pagerank\nType: METHOD_OR_TECHNIQUE", + "target": "Name: page 20\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "baseline methods", + "tgt_entity_name": "qwen family", + "relation_name": "", + "weight": 9.0, + "description": "baseline methods are also powered by backbone models from the qwen family", + "source_ids": [ + 149 + ], + "source": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: baseline methods\nType: UNKNOWN" + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "vlm", + "relation_name": "", + "weight": 9.0, + "description": "the qwen family includes vlms used in the experiments", + "source_ids": [ + 238 + ], + "source": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: vlm\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "embedding models", + "relation_name": "", + "weight": 9.0, + "description": "the qwen family includes embedding models used in the experiments", + "source_ids": [ + 238 + ], + "source": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: embedding models\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "qwen3 8b", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 8b is a specific model from the qwen family used as the default llm", + "source_ids": [ + 238 + ], + "source": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: qwen3 8b\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "qwen2 5vl 30b", + "relation_name": "", + "weight": 10.0, + "description": "qwen2 5vl 30b is a specific model from the qwen family used as the vlm", + "source_ids": [ + 238 + ], + "source": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: qwen2 5vl 30b\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "qwen3 embedding 0 6b", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 embedding 0 6b is a specific model from the qwen family used for text embedding", + "source_ids": [ + 238 + ], + "source": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: qwen3 embedding 0 6b\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "gme qwen2 vl 2b instruct", + "relation_name": "", + "weight": 10.0, + "description": "gme qwen2 vl 2b instruct is a specific model from the qwen family used for multi modal embedding", + "source_ids": [ + 238 + ], + "source": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: gme qwen2 vl 2b instruct\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "qwen3 reranker 4b", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 reranker 4b is a specific model from the qwen family used for reranking", + "source_ids": [ + 238 + ], + "source": "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: qwen3 reranker 4b\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "mineru", + "tgt_entity_name": "robust document layout parsing", + "relation_name": "", + "weight": 10.0, + "description": "mineru is utilized for robust document layout parsing", + "source_ids": [ + 238 + ], + "source": "Name: mineru\nType: SOFTWARE", + "target": "Name: robust document layout parsing\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "mineru", + "tgt_entity_name": "reference 52", + "relation_name": "", + "weight": 10.0, + "description": "mineru is cited in reference 52", + "source_ids": [ + 238 + ], + "source": "Name: mineru\nType: SOFTWARE", + "target": "Name: reference 52\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "github com sam234990 bookrag", + "tgt_entity_name": "prompts", + "relation_name": "", + "weight": 10.0, + "description": "prompts are available at the specified github location", + "source_ids": [ + 149 + ], + "source": "Name: github com sam234990 bookrag\nType: LOCATION", + "target": "Name: prompts\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "github com sam234990 bookrag", + "tgt_entity_name": "detailed configurations", + "relation_name": "", + "weight": 10.0, + "description": "detailed configurations are available at the specified github location", + "source_ids": [ + 149 + ], + "source": "Name: github com sam234990 bookrag\nType: LOCATION", + "target": "Name: detailed configurations\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "implementation details", + "tgt_entity_name": "technical report", + "relation_name": "", + "weight": 7.0, + "description": "more details about the implementation are provided in the technical report", + "source_ids": [ + 149 + ], + "source": "Name: technical report\nType: PUBLICATION_VENUE", + "target": "Name: implementation details\nType: UNKNOWN" + }, + { + "src_entity_name": "technical report", + "tgt_entity_name": "appendix", + "relation_name": "", + "weight": 9.0, + "description": "the appendix is a section within the technical report containing more details", + "source_ids": [ + 149 + ], + "source": "Name: technical report\nType: PUBLICATION_VENUE", + "target": "Name: appendix\nType: SECTION_TITLE" + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "technical report", + "relation_name": "", + "weight": 9.0, + "description": "the document is identified as a technical report", + "source_ids": [ + 194 + ], + "source": "Name: technical report\nType: PUBLICATION_VENUE", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "performance comparison", + "relation_name": "", + "weight": 10.0, + "description": "table 5 presents the performance comparison of different methods", + "source_ids": [ + 153 + ], + "source": "Name: table 5\nType: TABLE", + "target": "Name: performance comparison\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "different methods", + "relation_name": "", + "weight": 10.0, + "description": "table 5 compares the performance of different methods", + "source_ids": [ + 153 + ], + "source": "Name: table 5\nType: TABLE", + "target": "Name: different methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "best results", + "relation_name": "", + "weight": 9.0, + "description": "table 5 marks the best results in bold", + "source_ids": [ + 153 + ], + "source": "Name: table 5\nType: TABLE", + "target": "Name: best results\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "second best results", + "relation_name": "", + "weight": 9.0, + "description": "table 5 marks the second best results in underlined", + "source_ids": [ + 153 + ], + "source": "Name: table 5\nType: TABLE", + "target": "Name: second best results\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "bold", + "relation_name": "", + "weight": 9.0, + "description": "table 5 uses bold formatting to highlight specific results", + "source_ids": [ + 153 + ], + "source": "Name: table 5\nType: TABLE", + "target": "Name: bold\nType: COLOR" + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "underlined", + "relation_name": "", + "weight": 9.0, + "description": "table 5 uses underlined formatting to highlight specific results", + "source_ids": [ + 153 + ], + "source": "Name: table 5\nType: TABLE", + "target": "Name: underlined\nType: SHAPE" + }, + { + "src_entity_name": "layout vanilla", + "tgt_entity_name": "vanilla rag", + "relation_name": "", + "weight": 9.0, + "description": "layout vanilla consistently outperforms vanilla rag in the comparison", + "source_ids": [ + 152 + ], + "source": "Name: layout vanilla\nType: PRODUCT", + "target": "Name: vanilla rag\nType: PRODUCT" + }, + { + "src_entity_name": "tree traverse", + "tgt_entity_name": "graphranker", + "relation_name": "", + "weight": 7.0, + "description": "both tree traverse and graphranker are highlighted for having suboptimal results due to similar limitations", + "source_ids": [ + 152 + ], + "source": "Name: tree traverse\nType: PRODUCT", + "target": "Name: graphranker\nType: PRODUCT" + }, + { + "src_entity_name": "tree traverse", + "tgt_entity_name": "hierarchical navigation", + "relation_name": "", + "weight": 9.0, + "description": "tree traverse relies on hierarchical navigation which leads to suboptimal results", + "source_ids": [ + 152 + ], + "source": "Name: tree traverse\nType: PRODUCT", + "target": "Name: hierarchical navigation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "tree traverse", + "tgt_entity_name": "cross sectional context", + "relation_name": "", + "weight": 8.0, + "description": "tree traverse often misses cross sectional context due to its reliance on hierarchical navigation", + "source_ids": [ + 152 + ], + "source": "Name: tree traverse\nType: PRODUCT", + "target": "Name: cross sectional context\nType: CONCEPT" + }, + { + "src_entity_name": "graphranker", + "tgt_entity_name": "graph based reasoning", + "relation_name": "", + "weight": 9.0, + "description": "graphranker relies on graph based reasoning which leads to suboptimal results", + "source_ids": [ + 152 + ], + "source": "Name: graphranker\nType: PRODUCT", + "target": "Name: graph based reasoning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "graphranker", + "tgt_entity_name": "irrelevant scopes", + "relation_name": "", + "weight": 8.0, + "description": "graphranker often drifts into irrelevant scopes due to its reliance on graph based reasoning", + "source_ids": [ + 152 + ], + "source": "Name: graphranker\nType: PRODUCT", + "target": "Name: irrelevant scopes\nType: CONCEPT" + }, + { + "src_entity_name": "qa performance", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 9.0, + "description": "qa performance is measured under different query types", + "source_ids": [ + 179 + ], + "source": "Name: qa performance\nType: TASK_OR_PROBLEM", + "target": "Name: query types\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "performance comparison", + "tgt_entity_name": "different methods", + "relation_name": "", + "weight": 8.0, + "description": "the performance comparison involves evaluating different methods", + "source_ids": [ + 153 + ], + "source": "Name: performance comparison\nType: TASK_OR_PROBLEM", + "target": "Name: different methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "best results", + "tgt_entity_name": "bold", + "relation_name": "", + "weight": 10.0, + "description": "the best results are identified by being marked in bold", + "source_ids": [ + 153 + ], + "source": "Name: best results\nType: EVALUATION_METRIC", + "target": "Name: bold\nType: COLOR" + }, + { + "src_entity_name": "second best results", + "tgt_entity_name": "underlined", + "relation_name": "", + "weight": 10.0, + "description": "the second best results are identified by being marked as underlined", + "source_ids": [ + 153 + ], + "source": "Name: second best results\nType: EVALUATION_METRIC", + "target": "Name: underlined\nType: SHAPE" + }, + { + "src_entity_name": "table: cref='#/texts/156'...", + "tgt_entity_name": "cref", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/156'...' contains data about 'cref'.", + "source_ids": [ + 154 + ], + "source": "Name: table: cref='#/texts/156'...\nType: TABLE", + "target": "Name: cref\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "table: cref='#/texts/220'...", + "tgt_entity_name": "cref", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/220'...' contains data about 'cref'.", + "source_ids": [ + 171 + ], + "source": "Name: cref\nType: PARAMETER_OR_VARIABLE", + "target": "Name: table: cref='#/texts/220'...\nType: TABLE" + }, + { + "src_entity_name": "table 6", + "tgt_entity_name": "layout based methods", + "relation_name": "", + "weight": 10.0, + "description": "table 6 compares the performance of various layout based methods", + "source_ids": [ + 155 + ], + "source": "Name: table 6\nType: TABLE", + "target": "Name: layout based methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "10", + "relation_name": "", + "weight": 8.0, + "description": "the paper was published in issue 10 of proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: 10\nType: MEASUREMENT", + "target": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "page", + "tgt_entity_name": "10", + "relation_name": "", + "weight": 7.0, + "description": "10 is part of the page range", + "source_ids": [ + 258 + ], + "source": "Name: 10\nType: MEASUREMENT", + "target": "Name: page\nType: MEASUREMENT" + }, + { + "src_entity_name": "figure 5", + "tgt_entity_name": "query efficiency", + "relation_name": "", + "weight": 9.0, + "description": "figure 5 displays a comparison of the query efficiency metric", + "source_ids": [ + 158 + ], + "source": "Name: figure 5\nType: IMAGE", + "target": "Name: query efficiency\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "figure 5", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Figure 5", + "source_ids": [ + 159 + ], + "source": "Name: figure 5\nType: IMAGE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "bm25", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to BM25", + "source_ids": [ + 159 + ], + "source": "Name: bm25\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "vanilla rag", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Vanilla RAG", + "source_ids": [ + 159 + ], + "source": "Name: vanilla rag\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "layout + vanilla", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Layout + Vanilla", + "source_ids": [ + 159 + ], + "source": "Name: layout + vanilla\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "raptor", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to RAPTOR", + "source_ids": [ + 159 + ], + "source": "Name: raptor\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "graphrag-local", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to GraphRAG-Local", + "source_ids": [ + 159 + ], + "source": "Name: graphrag-local\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "graphrag-global", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to GraphRAG-Global", + "source_ids": [ + 159 + ], + "source": "Name: graphrag-global\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "mm-vanilla", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to MM-Vanilla", + "source_ids": [ + 159 + ], + "source": "Name: mm-vanilla\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "tree-traverse", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Tree-Traverse", + "source_ids": [ + 159 + ], + "source": "Name: tree-traverse\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "query time", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Query Time", + "source_ids": [ + 159 + ], + "source": "Name: query time\nType: EVALUATION_METRIC", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "token cost", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Token cost", + "source_ids": [ + 159 + ], + "source": "Name: token cost\nType: EVALUATION_METRIC", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "time (s)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to time (s)", + "source_ids": [ + 159 + ], + "source": "Name: time (s)\nType: MEASUREMENT", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "token (m)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to token (M)", + "source_ids": [ + 159 + ], + "source": "Name: token (m)\nType: MEASUREMENT", + "target": "Name: image cref='#/texts/161'\nType: UNKNOWN" + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "53 million tokens", + "relation_name": "", + "weight": 10.0, + "description": "docetl consumes 53 million tokens on the mmlongbench dataset", + "source_ids": [ + 160 + ], + "source": "Name: docetl\nType: PRODUCT", + "target": "Name: 53 million tokens\nType: MEASUREMENT" + }, + { + "src_entity_name": "gradient based er", + "tgt_entity_name": "qa performance", + "relation_name": "", + "weight": 9.0, + "description": "gradient based er is evaluated for its impact on qa performance", + "source_ids": [ + 163 + ], + "source": "Name: gradient based er\nType: METHOD_OR_TECHNIQUE", + "target": "Name: qa performance\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 breaks down performance by different query types", + "source_ids": [ + 177 + ], + "source": "Name: query types\nType: TASK_OR_PROBLEM", + "target": "Name: figure 7\nType: IMAGE" + }, + { + "src_entity_name": "agent based planning strategy", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 9.0, + "description": "the agent based planning strategy is designed to handle different query types separately", + "source_ids": [ + 179 + ], + "source": "Name: query types\nType: TASK_OR_PROBLEM", + "target": "Name: agent based planning strategy\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "case study", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 9.0, + "description": "the case study analyzes responses across different query types", + "source_ids": [ + 181 + ], + "source": "Name: query types\nType: TASK_OR_PROBLEM", + "target": "Name: case study\nType: EVENT" + }, + { + "src_entity_name": "gradient er", + "tgt_entity_name": "basic er", + "relation_name": "", + "weight": 10.0, + "description": "basic er replaces gradient er by merging same name entities", + "source_ids": [ + 165 + ], + "source": "Name: gradient er\nType: METHOD_OR_TECHNIQUE", + "target": "Name: basic er\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "w o gradient er", + "tgt_entity_name": "gradient er", + "relation_name": "", + "weight": 9.0, + "description": "the w o gradient er scenario involves the replacement of gradient er", + "source_ids": [ + 165 + ], + "source": "Name: gradient er\nType: METHOD_OR_TECHNIQUE", + "target": "Name: w o gradient er\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "w o gradient er", + "tgt_entity_name": "basic er", + "relation_name": "", + "weight": 9.0, + "description": "the w o gradient er scenario involves the use of basic er as the replacement method", + "source_ids": [ + 165 + ], + "source": "Name: basic er\nType: METHOD_OR_TECHNIQUE", + "target": "Name: w o gradient er\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "basic er", + "tgt_entity_name": "same name entities", + "relation_name": "", + "weight": 10.0, + "description": "basic er is the method used to merge same name entities", + "source_ids": [ + 165 + ], + "source": "Name: basic er\nType: METHOD_OR_TECHNIQUE", + "target": "Name: same name entities\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "reasoners", + "relation_name": "", + "weight": 9.0, + "description": "removing selector operators directly changes how reasoners operate by forcing them to score all candidate nodes", + "source_ids": [ + 167 + ], + "source": "Name: reasoners\nType: TECHNOLOGY", + "target": "Name: selector operators\nType: TECHNOLOGY" + }, + { + "src_entity_name": "reasoners", + "tgt_entity_name": "candidate nodes", + "relation_name": "", + "weight": 8.0, + "description": "reasoners perform the action of scoring candidate nodes especially when selector operators are absent", + "source_ids": [ + 167 + ], + "source": "Name: reasoners\nType: TECHNOLOGY", + "target": "Name: candidate nodes\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "w o gradient er variant", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "the w o gradient er variant highlights the critical role of the kg in the system", + "source_ids": [ + 172 + ], + "source": "Name: kg\nType: DATASET_OR_CORPUS", + "target": "Name: w o gradient er variant\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "w o selector variant", + "tgt_entity_name": "ift inspired selection mechanism", + "relation_name": "", + "weight": 8.0, + "description": "the w o selector variant validates the efficiency of the ift inspired selection mechanism", + "source_ids": [ + 172 + ], + "source": "Name: ift inspired selection mechanism\nType: METHOD_OR_TECHNIQUE", + "target": "Name: w o selector variant\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 6", + "tgt_entity_name": "basic setting", + "relation_name": "", + "weight": 9.0, + "description": "figure 6 compares graph statistics by normalizing values to the basic setting", + "source_ids": [ + 174 + ], + "source": "Name: figure 6\nType: IMAGE", + "target": "Name: basic setting\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 6", + "tgt_entity_name": "3 6e 3", + "relation_name": "", + "weight": 8.0, + "description": "figure 6 contains the density value 3 6e 3 as an example of abbreviated notation", + "source_ids": [ + 174 + ], + "source": "Name: figure 6\nType: IMAGE", + "target": "Name: 3 6e 3\nType: MEASUREMENT" + }, + { + "src_entity_name": "figure 6", + "tgt_entity_name": "graph statistics", + "relation_name": "", + "weight": 10.0, + "description": "figure 6 is a comparison of graph statistics", + "source_ids": [ + 174 + ], + "source": "Name: figure 6\nType: IMAGE", + "target": "Name: graph statistics\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 6", + "tgt_entity_name": "absolute values", + "relation_name": "", + "weight": 8.0, + "description": "figure 6 includes annotations of absolute values for the basic setting", + "source_ids": [ + 174 + ], + "source": "Name: figure 6\nType: IMAGE", + "target": "Name: absolute values\nType: MEASUREMENT" + }, + { + "src_entity_name": "figure 6", + "tgt_entity_name": "density values", + "relation_name": "", + "weight": 9.0, + "description": "figure 6 illustrates how density values are abbreviated using 3 6e 3 as an example", + "source_ids": [ + 174 + ], + "source": "Name: figure 6\nType: IMAGE", + "target": "Name: density values\nType: MEASUREMENT" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "figure 6", + "relation_name": "", + "weight": 8.0, + "description": "figure 6 presents the results of the comparison involving gradient based entity resolution", + "source_ids": [ + 176 + ], + "source": "Name: figure 6\nType: IMAGE", + "target": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "basic setting", + "tgt_entity_name": "absolute values", + "relation_name": "", + "weight": 7.0, + "description": "absolute values are specifically annotated for the basic setting", + "source_ids": [ + 174 + ], + "source": "Name: basic setting\nType: TASK_OR_PROBLEM", + "target": "Name: absolute values\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "basic", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Basic", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: basic\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "gradient-based er", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Gradient-based ER", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: gradient-based er\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "ratio", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Ratio", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: ratio\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "# entity", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to # Entity", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: # entity\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "density", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Density", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: density\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "diameter", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Diameter", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: diameter\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "# cc", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to # CC", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: # cc\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "figure (a)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Figure (a)", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: figure (a)\nType: SECTION_TITLE" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "figure (b)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Figure (b)", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: figure (b)\nType: SECTION_TITLE" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "1327", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 1327", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: 1327\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "3.6e-3", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 3.6E-3", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: 3.6e-3\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "14.8", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 14.8", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: 14.8\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "169", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 169", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: 169\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "531", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 531", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: 531\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "5.4e-3", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 5.4e-3", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: 5.4e-3\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "15.0", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 15.0", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: 15.0\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "106", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 106", + "source_ids": [ + 175 + ], + "source": "Name: cref='#/texts/224'\nType: IMAGE", + "target": "Name: 106\nType: MEASUREMENT" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "basic kg construction", + "relation_name": "", + "weight": 9.0, + "description": "gradient based entity resolution is compared against basic kg construction to evaluate quality", + "source_ids": [ + 176 + ], + "source": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: basic kg construction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "entity count", + "relation_name": "", + "weight": 9.0, + "description": "gradient based entity resolution reduces the entity count by 12 compared to the baseline", + "source_ids": [ + 176 + ], + "source": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: entity count\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "density", + "relation_name": "", + "weight": 9.0, + "description": "gradient based entity resolution boosts graph density by over 20 across datasets", + "source_ids": [ + 176 + ], + "source": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: density\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "diameter of the largest connected component", + "relation_name": "", + "weight": 8.0, + "description": "gradient based entity resolution reduces the diameter of the largest connected component indicating a more compact graph", + "source_ids": [ + 176 + ], + "source": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: diameter of the largest connected component\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "number of connected components", + "relation_name": "", + "weight": 8.0, + "description": "gradient based entity resolution reduces the number of connected components mitigating fragmentation", + "source_ids": [ + 176 + ], + "source": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: number of connected components\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "er module", + "relation_name": "", + "weight": 10.0, + "description": "the er module is the specific component of gradient based entity resolution that identifies entities", + "source_ids": [ + 176 + ], + "source": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: er module\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "basic baseline", + "relation_name": "", + "weight": 9.0, + "description": "gradient based entity resolution is evaluated against the basic baseline to demonstrate optimization", + "source_ids": [ + 176 + ], + "source": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: basic baseline\nType: BENCHMARK" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "12", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based er method achieves a 12 reduction in entity count", + "source_ids": [ + 176 + ], + "source": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: 12\nType: PERCENTAGE" + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "graph reasoning", + "relation_name": "", + "weight": 9.0, + "description": "the structural improvements from gradient based entity resolution facilitate better graph reasoning", + "source_ids": [ + 176 + ], + "source": "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: graph reasoning\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "basic kg construction", + "tgt_entity_name": "many graph based methods", + "relation_name": "", + "weight": 9.0, + "description": "basic kg construction is standard practice in many graph based methods", + "source_ids": [ + 176 + ], + "source": "Name: basic kg construction\nType: TASK_OR_PROBLEM", + "target": "Name: many graph based methods\nType: ORGANIZATION" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "multi hop", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 displays the performance breakdown for the multi hop query type", + "source_ids": [ + 177 + ], + "source": "Name: figure 7\nType: IMAGE", + "target": "Name: multi hop\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 displays the performance breakdown for the global query type", + "source_ids": [ + 177 + ], + "source": "Name: figure 7\nType: IMAGE", + "target": "Name: global\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "blue bars", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 contains blue bars to represent specific metrics", + "source_ids": [ + 177 + ], + "source": "Name: figure 7\nType: IMAGE", + "target": "Name: blue bars\nType: IMAGE" + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "red bars", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 contains red bars to represent specific metrics", + "source_ids": [ + 177 + ], + "source": "Name: figure 7\nType: IMAGE", + "target": "Name: red bars\nType: IMAGE" + }, + { + "src_entity_name": "multi hop", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 5.0, + "description": "both are listed as distinct query types in the performance breakdown", + "source_ids": [ + 177 + ], + "source": "Name: multi hop\nType: TASK_OR_PROBLEM", + "target": "Name: global\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to Global", + "source_ids": [ + 178 + ], + "source": "Name: global\nType: TASK_OR_PROBLEM", + "target": "Name: cref='#/texts/259'\nType: IMAGE" + }, + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 9.0, + "description": "the expert query analyzer classifies questions into the global category", + "source_ids": [ + 241 + ], + "source": "Name: global\nType: TASK_OR_PROBLEM", + "target": "Name: expert query analyzer\nType: PERSON" + }, + { + "src_entity_name": "global", + "tgt_entity_name": "aggregation operation", + "relation_name": "", + "weight": 8.0, + "description": "the global task requires an aggregation operation such as counting listing or summarizing", + "source_ids": [ + 250 + ], + "source": "Name: global\nType: TASK_OR_PROBLEM", + "target": "Name: aggregation operation\nType: UNKNOWN" + }, + { + "src_entity_name": "global", + "tgt_entity_name": "counting", + "relation_name": "", + "weight": 9.0, + "description": "the global task includes counting as a possible aggregation operation", + "source_ids": [ + 250 + ], + "source": "Name: global\nType: TASK_OR_PROBLEM", + "target": "Name: counting\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "global", + "tgt_entity_name": "listing", + "relation_name": "", + "weight": 9.0, + "description": "the global task includes listing as a possible aggregation operation", + "source_ids": [ + 250 + ], + "source": "Name: global\nType: TASK_OR_PROBLEM", + "target": "Name: listing\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "global", + "tgt_entity_name": "summarizing", + "relation_name": "", + "weight": 9.0, + "description": "the global task includes summarizing as a possible aggregation operation", + "source_ids": [ + 250 + ], + "source": "Name: global\nType: TASK_OR_PROBLEM", + "target": "Name: summarizing\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "global", + "tgt_entity_name": "structural filter", + "relation_name": "", + "weight": 9.0, + "description": "the global task identifies items using a clear structural filter", + "source_ids": [ + 250 + ], + "source": "Name: global\nType: TASK_OR_PROBLEM", + "target": "Name: structural filter\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "em / accuracy", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to EM / Accuracy", + "source_ids": [ + 178 + ], + "source": "Name: cref='#/texts/259'\nType: IMAGE", + "target": "Name: em / accuracy\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "f1-score", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to F1-score", + "source_ids": [ + 178 + ], + "source": "Name: cref='#/texts/259'\nType: IMAGE", + "target": "Name: f1-score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "single", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to Single", + "source_ids": [ + 178 + ], + "source": "Name: cref='#/texts/259'\nType: IMAGE", + "target": "Name: single\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "multi", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to Multi", + "source_ids": [ + 178 + ], + "source": "Name: cref='#/texts/259'\nType: IMAGE", + "target": "Name: multi\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "(a) mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to (a) MMLongBench", + "source_ids": [ + 178 + ], + "source": "Name: cref='#/texts/259'\nType: IMAGE", + "target": "Name: (a) mmlongbench\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "(b) qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to (b) Qasper", + "source_ids": [ + 178 + ], + "source": "Name: cref='#/texts/259'\nType: IMAGE", + "target": "Name: (b) qasper\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "(a) mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to (a) MMLongBench", + "source_ids": [ + 184 + ], + "source": "Name: (a) mmlongbench\nType: DATASET_OR_CORPUS", + "target": "Name: cref='#/texts/348'\nType: IMAGE" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "(b) qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to (b) Qasper", + "source_ids": [ + 184 + ], + "source": "Name: (b) qasper\nType: DATASET_OR_CORPUS", + "target": "Name: cref='#/texts/348'\nType: IMAGE" + }, + { + "src_entity_name": "multihop", + "tgt_entity_name": "agent based planning strategy", + "relation_name": "", + "weight": 8.0, + "description": "the agent based planning strategy is validated by its ability to handle multihop queries", + "source_ids": [ + 179 + ], + "source": "Name: multihop\nType: TASK_OR_PROBLEM", + "target": "Name: agent based planning strategy\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "multihop", + "tgt_entity_name": "disjoint pieces of evidence", + "relation_name": "", + "weight": 9.0, + "description": "multihop queries are challenging because they require retrieving and reasoning over disjoint pieces of evidence", + "source_ids": [ + 179 + ], + "source": "Name: multihop\nType: TASK_OR_PROBLEM", + "target": "Name: disjoint pieces of evidence\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "retrieving", + "tgt_entity_name": "disjoint pieces of evidence", + "relation_name": "", + "weight": 8.0, + "description": "retrieving is the action performed on disjoint pieces of evidence", + "source_ids": [ + 179 + ], + "source": "Name: disjoint pieces of evidence\nType: DATASET_OR_CORPUS", + "target": "Name: retrieving\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "error response analysis", + "tgt_entity_name": "figure 9", + "relation_name": "", + "weight": 9.0, + "description": "the analysis traces error propagation as shown in figure 9", + "source_ids": [ + 180 + ], + "source": "Name: figure 9\nType: IMAGE", + "target": "Name: error response analysis\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "figure 9", + "tgt_entity_name": "error analysis", + "relation_name": "", + "weight": 10.0, + "description": "figure 9 displays the results of the error analysis", + "source_ids": [ + 183 + ], + "source": "Name: figure 9\nType: IMAGE", + "target": "Name: error analysis\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "error response analysis", + "tgt_entity_name": "200 sampled queries", + "relation_name": "", + "weight": 9.0, + "description": "the analysis is conducted on 200 sampled queries from each dataset", + "source_ids": [ + 180 + ], + "source": "Name: error response analysis\nType: TASK_OR_PROBLEM", + "target": "Name: 200 sampled queries\nType: MEASUREMENT" + }, + { + "src_entity_name": "error response analysis", + "tgt_entity_name": "four types", + "relation_name": "", + "weight": 8.0, + "description": "the analysis categorizes failures into four types", + "source_ids": [ + 180 + ], + "source": "Name: error response analysis\nType: TASK_OR_PROBLEM", + "target": "Name: four types\nType: MEASUREMENT" + }, + { + "src_entity_name": "figure 8", + "tgt_entity_name": "case study", + "relation_name": "", + "weight": 10.0, + "description": "figure 8 presents the case study", + "source_ids": [ + 181 + ], + "source": "Name: figure 8\nType: IMAGE", + "target": "Name: case study\nType: EVENT" + }, + { + "src_entity_name": "gray text", + "tgt_entity_name": "internal process", + "relation_name": "", + "weight": 10.0, + "description": "gray text describes the internal process", + "source_ids": [ + 181 + ], + "source": "Name: gray text\nType: COLOR", + "target": "Name: internal process\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "bookrag response of different query types", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to BookRAG response of different query types", + "source_ids": [ + 182 + ], + "source": "Name: bookrag response of different query types\nType: IMAGE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "single-hop case from qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Single-hop Case from Qasper", + "source_ids": [ + 182 + ], + "source": "Name: single-hop case from qasper\nType: SECTION_TITLE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "select_by_entity operator", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Select_by_Entity operator", + "source_ids": [ + 182 + ], + "source": "Name: select_by_entity operator\nType: SOFTWARE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "graph_reasoning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Graph_Reasoning", + "source_ids": [ + 182 + ], + "source": "Name: graph_reasoning\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "text_reasoning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Text_Reasoning", + "source_ids": [ + 182 + ], + "source": "Name: text_reasoning\nType: TASK_OR_PROBLEM", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "skyline_ranker", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Skyline_Ranker", + "source_ids": [ + 182 + ], + "source": "Name: skyline_ranker\nType: SOFTWARE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "binary reward system", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to binary reward system", + "source_ids": [ + 182 + ], + "source": "Name: binary reward system\nType: TECHNOLOGY", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "discount factor", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to discount factor", + "source_ids": [ + 182 + ], + "source": "Name: discount factor\nType: PARAMETER_OR_VARIABLE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "multi-hop case from qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Multi-hop Case from Qasper", + "source_ids": [ + 182 + ], + "source": "Name: multi-hop case from qasper\nType: SECTION_TITLE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "interpretable system", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Interpretable system", + "source_ids": [ + 182 + ], + "source": "Name: interpretable system\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "lstm with elmo system", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to LSTM with ELMo system", + "source_ids": [ + 182 + ], + "source": "Name: lstm with elmo system\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "lstm-elmo net", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to LSTM-ELMo net", + "source_ids": [ + 182 + ], + "source": "Name: lstm-elmo net\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "diacritic swapping", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Diacritic swapping", + "source_ids": [ + 182 + ], + "source": "Name: diacritic swapping\nType: METHOD_OR_TECHNIQUE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "cross-entropy", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to cross-entropy", + "source_ids": [ + 182 + ], + "source": "Name: cross-entropy\nType: EVALUATION_METRIC", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "decompose operator", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Decompose operator", + "source_ids": [ + 182 + ], + "source": "Name: decompose operator\nType: SOFTWARE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "global aggregation case from mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Global Aggregation Case from MMLongBench", + "source_ids": [ + 182 + ], + "source": "Name: global aggregation case from mmlongbench\nType: SECTION_TITLE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "filter operators", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Filter operators", + "source_ids": [ + 182 + ], + "source": "Name: filter operators\nType: SOFTWARE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "filter_range", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Filter_Range", + "source_ids": [ + 182 + ], + "source": "Name: filter_range\nType: SOFTWARE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "filter_modal", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Filter_Modal", + "source_ids": [ + 182 + ], + "source": "Name: filter_modal\nType: SOFTWARE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Reduce", + "source_ids": [ + 182 + ], + "source": "Name: reduce\nType: SOFTWARE", + "target": "Name: image cref='#/texts/282'\nType: UNKNOWN" + }, + { + "src_entity_name": "error analysis", + "tgt_entity_name": "200", + "relation_name": "", + "weight": 9.0, + "description": "the error analysis was conducted on 200 sampled queries", + "source_ids": [ + 183 + ], + "source": "Name: 200\nType: MEASUREMENT", + "target": "Name: error analysis\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "all queries (200)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to All Queries (200)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: all queries (200)\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "successful parsing (194)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Successful Parsing (194)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: successful parsing (194)\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "retrieval error (52)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Retrieval Error (52)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: retrieval error (52)\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "generation error (36)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Generation Error (36)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: generation error (36)\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "plan error (27)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Plan Error (27)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: plan error (27)\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "parsing error (6)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Parsing Error (6)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: parsing error (6)\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "correct (79)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Correct (79)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: correct (79)\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "successful parsing (193)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Successful Parsing (193)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: successful parsing (193)\nType: MEASUREMENT" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "generation error (30)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Generation Error (30)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: generation error (30)\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "retrieval error (26)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Retrieval Error (26)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: retrieval error (26)\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "plan error (20)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Plan Error (20)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: plan error (20)\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "parsing error (7)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Parsing Error (7)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: parsing error (7)\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "correct (117)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Correct (117)", + "source_ids": [ + 184 + ], + "source": "Name: cref='#/texts/348'\nType: IMAGE", + "target": "Name: correct (117)\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "retrieval error", + "tgt_entity_name": "multimodal evidence", + "relation_name": "", + "weight": 8.0, + "description": "retrieval error reflects the challenge of locating multimodal evidence", + "source_ids": [ + 185 + ], + "source": "Name: retrieval error\nType: TASK_OR_PROBLEM", + "target": "Name: multimodal evidence\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "results", + "tgt_entity_name": "retrieval error", + "relation_name": "", + "weight": 10.0, + "description": "the results identify retrieval error as the dominant failure mode", + "source_ids": [ + 185 + ], + "source": "Name: retrieval error\nType: TASK_OR_PROBLEM", + "target": "Name: results\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "retrieval error", + "tgt_entity_name": "generation error", + "relation_name": "", + "weight": 7.0, + "description": "retrieval error is the dominant failure mode followed by generation error", + "source_ids": [ + 185 + ], + "source": "Name: retrieval error\nType: TASK_OR_PROBLEM", + "target": "Name: generation error\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "generation error", + "tgt_entity_name": "multimodal evidence", + "relation_name": "", + "weight": 8.0, + "description": "generation error reflects the challenge of synthesizing multimodal evidence", + "source_ids": [ + 185 + ], + "source": "Name: generation error\nType: TASK_OR_PROBLEM", + "target": "Name: multimodal evidence\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "results", + "tgt_entity_name": "generation error", + "relation_name": "", + "weight": 10.0, + "description": "the results identify generation error as the second most common failure mode", + "source_ids": [ + 185 + ], + "source": "Name: generation error\nType: TASK_OR_PROBLEM", + "target": "Name: results\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "plan error", + "tgt_entity_name": "single hop queries", + "relation_name": "", + "weight": 9.0, + "description": "plan error involves the over decomposition of single hop queries", + "source_ids": [ + 185 + ], + "source": "Name: plan error\nType: TASK_OR_PROBLEM", + "target": "Name: single hop queries\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "plan error", + "tgt_entity_name": "multi hop sub tasks", + "relation_name": "", + "weight": 9.0, + "description": "plan error leads to the creation of unnecessary multi hop sub tasks", + "source_ids": [ + 185 + ], + "source": "Name: plan error\nType: TASK_OR_PROBLEM", + "target": "Name: multi hop sub tasks\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "plan error", + "tgt_entity_name": "disjointed retrieval paths", + "relation_name": "", + "weight": 9.0, + "description": "plan error causes fragmentation leading to disjointed retrieval paths", + "source_ids": [ + 185 + ], + "source": "Name: plan error\nType: TASK_OR_PROBLEM", + "target": "Name: disjointed retrieval paths\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "planner", + "tgt_entity_name": "plan error", + "relation_name": "", + "weight": 10.0, + "description": "the planner is the agent responsible for the plan error failure pattern", + "source_ids": [ + 185 + ], + "source": "Name: plan error\nType: TASK_OR_PROBLEM", + "target": "Name: planner\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "qualitative analysis", + "tgt_entity_name": "plan error", + "relation_name": "", + "weight": 9.0, + "description": "qualitative analysis reveals the specific failure pattern of plan error", + "source_ids": [ + 185 + ], + "source": "Name: plan error\nType: TASK_OR_PROBLEM", + "target": "Name: qualitative analysis\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "planner", + "tgt_entity_name": "single hop queries", + "relation_name": "", + "weight": 9.0, + "description": "the planner acts upon single hop queries by over decomposing them", + "source_ids": [ + 185 + ], + "source": "Name: single hop queries\nType: TASK_OR_PROBLEM", + "target": "Name: planner\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "disjointed retrieval paths", + "tgt_entity_name": "cohesive final answer", + "relation_name": "", + "weight": 9.0, + "description": "disjointed retrieval paths prevent the model from synthesizing a cohesive final answer", + "source_ids": [ + 185 + ], + "source": "Name: disjointed retrieval paths\nType: TASK_OR_PROBLEM", + "target": "Name: cohesive final answer\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "fragmentation", + "tgt_entity_name": "disjointed retrieval paths", + "relation_name": "", + "weight": 9.0, + "description": "fragmentation leads directly to disjointed retrieval paths", + "source_ids": [ + 185 + ], + "source": "Name: disjointed retrieval paths\nType: TASK_OR_PROBLEM", + "target": "Name: fragmentation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "model", + "tgt_entity_name": "cohesive final answer", + "relation_name": "", + "weight": 9.0, + "description": "the model attempts to synthesize a cohesive final answer but is prevented from doing so", + "source_ids": [ + 185 + ], + "source": "Name: cohesive final answer\nType: TASK_OR_PROBLEM", + "target": "Name: model\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "model", + "tgt_entity_name": "scattered sub responses", + "relation_name": "", + "weight": 8.0, + "description": "the model receives scattered sub responses which it fails to synthesize", + "source_ids": [ + 185 + ], + "source": "Name: model\nType: TASK_OR_PROBLEM", + "target": "Name: scattered sub responses\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "book index", + "tgt_entity_name": "tree graph index", + "relation_name": "", + "weight": 9.0, + "description": "book index is specifically a structured tree graph index", + "source_ids": [ + 188 + ], + "source": "Name: book index\nType: PRODUCT", + "target": "Name: tree graph index\nType: TECHNOLOGY" + }, + { + "src_entity_name": "agent based method", + "tgt_entity_name": "retrieval precision", + "relation_name": "", + "weight": 6.0, + "description": "the agent based method is used to configure operators that affect retrieval precision", + "source_ids": [ + 188 + ], + "source": "Name: agent based method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: retrieval precision\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "agent based method", + "tgt_entity_name": "answer accuracy", + "relation_name": "", + "weight": 6.0, + "description": "the agent based method is used to configure operators that affect answer accuracy", + "source_ids": [ + 188 + ], + "source": "Name: agent based method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: answer accuracy\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "agent based method", + "tgt_entity_name": "retrieval operators", + "relation_name": "", + "weight": 9.0, + "description": "the agent based method dynamically configures retrieval operators", + "source_ids": [ + 188 + ], + "source": "Name: agent based method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: retrieval operators\nType: SOFTWARE" + }, + { + "src_entity_name": "agent based method", + "tgt_entity_name": "reasoning operators", + "relation_name": "", + "weight": 9.0, + "description": "the agent based method dynamically configures reasoning operators", + "source_ids": [ + 188 + ], + "source": "Name: agent based method\nType: METHOD_OR_TECHNIQUE", + "target": "Name: reasoning operators\nType: SOFTWARE" + }, + { + "src_entity_name": "document native database system", + "tgt_entity_name": "data formatting", + "relation_name": "", + "weight": 8.0, + "description": "the future database system supports data formatting", + "source_ids": [ + 188 + ], + "source": "Name: document native database system\nType: PRODUCT", + "target": "Name: data formatting\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "document native database system", + "tgt_entity_name": "knowledge extraction", + "relation_name": "", + "weight": 8.0, + "description": "the future database system supports knowledge extraction", + "source_ids": [ + 188 + ], + "source": "Name: document native database system\nType: PRODUCT", + "target": "Name: knowledge extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "document native database system", + "tgt_entity_name": "intelligent querying", + "relation_name": "", + "weight": 8.0, + "description": "the future database system supports intelligent querying", + "source_ids": [ + 188 + ], + "source": "Name: document native database system\nType: PRODUCT", + "target": "Name: intelligent querying\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "brandon yang", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: brandon yang\nType: PERSON" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "sabri eyuboglu", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: sabri eyuboglu\nType: PERSON" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "avanika narayan", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: avanika narayan\nType: PERSON" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "andrew hojel", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: andrew hojel\nType: PERSON" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: immanuel trummer\nType: PERSON" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: christopher r\nType: PERSON" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of a paper published in 2023", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: 2023\nType: DATE" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "simple systems", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of the paper describing simple systems", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: simple systems\nType: PRODUCT" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "structured views", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of the paper describing structured views", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: structured views\nType: PRODUCT" + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "heterogeneous data lakes", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of the paper describing heterogeneous data lakes", + "source_ids": [ + 191 + ], + "source": "Name: simran arora\nType: PERSON", + "target": "Name: heterogeneous data lakes\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "sabri eyuboglu", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: brandon yang\nType: PERSON", + "target": "Name: sabri eyuboglu\nType: PERSON" + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "avanika narayan", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: brandon yang\nType: PERSON", + "target": "Name: avanika narayan\nType: PERSON" + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "andrew hojel", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: brandon yang\nType: PERSON", + "target": "Name: andrew hojel\nType: PERSON" + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: brandon yang\nType: PERSON", + "target": "Name: immanuel trummer\nType: PERSON" + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: brandon yang\nType: PERSON", + "target": "Name: christopher r\nType: PERSON" + }, + { + "src_entity_name": "sabri eyuboglu", + "tgt_entity_name": "avanika narayan", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: sabri eyuboglu\nType: PERSON", + "target": "Name: avanika narayan\nType: PERSON" + }, + { + "src_entity_name": "sabri eyuboglu", + "tgt_entity_name": "andrew hojel", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: sabri eyuboglu\nType: PERSON", + "target": "Name: andrew hojel\nType: PERSON" + }, + { + "src_entity_name": "sabri eyuboglu", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: sabri eyuboglu\nType: PERSON", + "target": "Name: immanuel trummer\nType: PERSON" + }, + { + "src_entity_name": "sabri eyuboglu", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: sabri eyuboglu\nType: PERSON", + "target": "Name: christopher r\nType: PERSON" + }, + { + "src_entity_name": "avanika narayan", + "tgt_entity_name": "andrew hojel", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: avanika narayan\nType: PERSON", + "target": "Name: andrew hojel\nType: PERSON" + }, + { + "src_entity_name": "avanika narayan", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: avanika narayan\nType: PERSON", + "target": "Name: immanuel trummer\nType: PERSON" + }, + { + "src_entity_name": "avanika narayan", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: avanika narayan\nType: PERSON", + "target": "Name: christopher r\nType: PERSON" + }, + { + "src_entity_name": "andrew hojel", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: andrew hojel\nType: PERSON", + "target": "Name: immanuel trummer\nType: PERSON" + }, + { + "src_entity_name": "andrew hojel", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: andrew hojel\nType: PERSON", + "target": "Name: christopher r\nType: PERSON" + }, + { + "src_entity_name": "immanuel trummer", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ], + "source": "Name: immanuel trummer\nType: PERSON", + "target": "Name: christopher r\nType: PERSON" + }, + { + "src_entity_name": "language models", + "tgt_entity_name": "heterogeneous data lakes", + "relation_name": "", + "weight": 10.0, + "description": "language models enable the generation of structured views of heterogeneous data lakes", + "source_ids": [ + 191 + ], + "source": "Name: language models\nType: TECHNOLOGY", + "target": "Name: heterogeneous data lakes\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "language models", + "tgt_entity_name": "simple systems", + "relation_name": "", + "weight": 10.0, + "description": "language models enable the creation of simple systems", + "source_ids": [ + 191 + ], + "source": "Name: language models\nType: TECHNOLOGY", + "target": "Name: simple systems\nType: PRODUCT" + }, + { + "src_entity_name": "simple systems", + "tgt_entity_name": "heterogeneous data lakes", + "relation_name": "", + "weight": 9.0, + "description": "simple systems generate views of heterogeneous data lakes", + "source_ids": [ + 191 + ], + "source": "Name: heterogeneous data lakes\nType: DATASET_OR_CORPUS", + "target": "Name: simple systems\nType: PRODUCT" + }, + { + "src_entity_name": "simple systems", + "tgt_entity_name": "structured views", + "relation_name": "", + "weight": 9.0, + "description": "simple systems are used for generating structured views", + "source_ids": [ + 191 + ], + "source": "Name: simple systems\nType: PRODUCT", + "target": "Name: structured views\nType: PRODUCT" + }, + { + "src_entity_name": "self rag", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 10.0, + "description": "the self rag paper was published in the year 2023", + "source_ids": [ + 193 + ], + "source": "Name: 2023\nType: DATE", + "target": "Name: self rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 9.0, + "description": "haipipe was published in the year 2023", + "source_ids": [ + 200 + ], + "source": "Name: 2023\nType: DATE", + "target": "Name: haipipe\nType: PRODUCT" + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 8.0, + "description": "xavier daull is an author of the work published in 2023", + "source_ids": [ + 205 + ], + "source": "Name: 2023\nType: DATE", + "target": "Name: xavier daull\nType: PERSON" + }, + { + "src_entity_name": "retrieval augmented generation for large language models a survey", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 9.0, + "description": "the survey was published in the year 2023", + "source_ids": [ + 207 + ], + "source": "Name: 2023\nType: DATE", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "akari asai is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ], + "source": "Name: akari asai\nType: PERSON", + "target": "Name: self rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 8.0, + "description": "akari asai s paper was published at the international conference on learning representations", + "source_ids": [ + 192 + ], + "source": "Name: akari asai\nType: PERSON", + "target": "Name: international conference on learning representations\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "zeqiu wu", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and zeqiu wu are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: akari asai\nType: PERSON", + "target": "Name: zeqiu wu\nType: PERSON" + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "yizhong wang", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and yizhong wang are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: akari asai\nType: PERSON", + "target": "Name: yizhong wang\nType: PERSON" + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "akari asai is listed alongside other authors et al on the same paper", + "source_ids": [ + 192 + ], + "source": "Name: akari asai\nType: PERSON", + "target": "Name: et al\nType: PERSON" + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "avirup sil", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and avirup sil are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: akari asai\nType: PERSON", + "target": "Name: avirup sil\nType: PERSON" + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "hannaneh hajishirzi", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and hannaneh hajishirzi are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: akari asai\nType: PERSON", + "target": "Name: hannaneh hajishirzi\nType: PERSON" + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "zeqiu wu is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ], + "source": "Name: zeqiu wu\nType: PERSON", + "target": "Name: self rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 8.0, + "description": "zeqiu wu s paper was published at the international conference on learning representations", + "source_ids": [ + 192 + ], + "source": "Name: zeqiu wu\nType: PERSON", + "target": "Name: international conference on learning representations\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "yizhong wang", + "relation_name": "", + "weight": 8.0, + "description": "zeqiu wu and yizhong wang are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: zeqiu wu\nType: PERSON", + "target": "Name: yizhong wang\nType: PERSON" + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "zeqiu wu is listed alongside other authors et al on the same paper", + "source_ids": [ + 192 + ], + "source": "Name: zeqiu wu\nType: PERSON", + "target": "Name: et al\nType: PERSON" + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "avirup sil", + "relation_name": "", + "weight": 8.0, + "description": "zeqiu wu and avirup sil are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: zeqiu wu\nType: PERSON", + "target": "Name: avirup sil\nType: PERSON" + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "hannaneh hajishirzi", + "relation_name": "", + "weight": 8.0, + "description": "zeqiu wu and hannaneh hajishirzi are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: zeqiu wu\nType: PERSON", + "target": "Name: hannaneh hajishirzi\nType: PERSON" + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "yizhong wang is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ], + "source": "Name: yizhong wang\nType: PERSON", + "target": "Name: self rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 8.0, + "description": "yizhong wang s paper was published at the international conference on learning representations", + "source_ids": [ + 192 + ], + "source": "Name: yizhong wang\nType: PERSON", + "target": "Name: international conference on learning representations\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "yizhong wang is listed alongside other authors et al on the same paper", + "source_ids": [ + 192 + ], + "source": "Name: yizhong wang\nType: PERSON", + "target": "Name: et al\nType: PERSON" + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "avirup sil", + "relation_name": "", + "weight": 8.0, + "description": "yizhong wang and avirup sil are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: yizhong wang\nType: PERSON", + "target": "Name: avirup sil\nType: PERSON" + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "hannaneh hajishirzi", + "relation_name": "", + "weight": 8.0, + "description": "yizhong wang and hannaneh hajishirzi are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: yizhong wang\nType: PERSON", + "target": "Name: hannaneh hajishirzi\nType: PERSON" + }, + { + "src_entity_name": "et al", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 8.0, + "description": "et al refers to co authors of the paper describing the self rag model", + "source_ids": [ + 192 + ], + "source": "Name: self rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: et al\nType: PERSON" + }, + { + "src_entity_name": "self rag", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 10.0, + "description": "the self rag paper was published at the international conference on learning representations", + "source_ids": [ + 192 + ], + "source": "Name: self rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: international conference on learning representations\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "avirup sil", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "avirup sil is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ], + "source": "Name: self rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: avirup sil\nType: PERSON" + }, + { + "src_entity_name": "hannaneh hajishirzi", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "hannaneh hajishirzi is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ], + "source": "Name: self rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: hannaneh hajishirzi\nType: PERSON" + }, + { + "src_entity_name": "self rag", + "tgt_entity_name": "arxiv preprint arxiv 2310 11511", + "relation_name": "", + "weight": 10.0, + "description": "the self rag paper is identified by the arxiv preprint number arxiv 2310 11511", + "source_ids": [ + 193 + ], + "source": "Name: self rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: arxiv preprint arxiv 2310 11511\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "self rag", + "tgt_entity_name": "learning to retrieve generate and critique through self reflection", + "relation_name": "", + "weight": 10.0, + "description": "self rag is the model that implements the method of learning to retrieve generate and critique through self reflection", + "source_ids": [ + 193 + ], + "source": "Name: self rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: learning to retrieve generate and critique through self reflection\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "et al", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 7.0, + "description": "the co authors referred to as et al published their paper at the international conference on learning representations", + "source_ids": [ + 192 + ], + "source": "Name: international conference on learning representations\nType: PUBLICATION_VENUE", + "target": "Name: et al\nType: PERSON" + }, + { + "src_entity_name": "international conference on learning representations", + "tgt_entity_name": "iclr", + "relation_name": "", + "weight": 10.0, + "description": "iclr is the abbreviation used for the international conference on learning representations in the text", + "source_ids": [ + 192 + ], + "source": "Name: international conference on learning representations\nType: PUBLICATION_VENUE", + "target": "Name: iclr\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "the paper about auto formula was published in 2024", + "source_ids": [ + 199 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: auto formula\nType: PRODUCT" + }, + { + "src_entity_name": "proceedings of the acm on management of data", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 10.0, + "description": "the publication year is 2024", + "source_ids": [ + 199 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag was published in the year 2024", + "source_ids": [ + 201 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: m3docrag\nType: PRODUCT" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "darren edge is an author of a document published in 2024", + "source_ids": [ + 206 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: darren edge\nType: PERSON" + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "ha trinh is an author of a document published in 2024", + "source_ids": [ + 206 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: ha trinh\nType: PERSON" + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "newman cheng is an author of a document published in 2024", + "source_ids": [ + 206 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: newman cheng\nType: PERSON" + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "joshua bradley is an author of a document published in 2024", + "source_ids": [ + 206 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: joshua bradley\nType: PERSON" + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "alex chao is an author of a document published in 2024", + "source_ids": [ + 206 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: alex chao\nType: PERSON" + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "apurva mody is an author of a document published in 2024", + "source_ids": [ + 206 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: apurva mody\nType: PERSON" + }, + { + "src_entity_name": "steven truitt", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "steven truitt is an author of a document published in 2024", + "source_ids": [ + 206 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: steven truitt\nType: PERSON" + }, + { + "src_entity_name": "jonathan larson", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "jonathan larson is an author of a document published in 2024", + "source_ids": [ + 206 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: jonathan larson\nType: PERSON" + }, + { + "src_entity_name": "2024", + "tgt_entity_name": "arxiv 2404 16130", + "relation_name": "", + "weight": 9.0, + "description": "the preprint arxiv 2404 16130 was published in 2024", + "source_ids": [ + 206 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: arxiv 2404 16130\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "lightrag was published in the year 2024", + "source_ids": [ + 208 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: lightrag\nType: PRODUCT" + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 10.0, + "description": "the paper describing hipporag was published in the year 2024", + "source_ids": [ + 209 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "g retriever was published in the year 2024", + "source_ids": [ + 211 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper was published in the year 2024", + "source_ids": [ + 212 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: rag and rau a survey on retrieval augmented language model in natural language processing\nType: BOOK" + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "timo schick is an author of the work published in 2024", + "source_ids": [ + 216 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: timo schick\nType: PERSON" + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "jane dwivedi yu is an author of the work published in 2024", + "source_ids": [ + 216 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: jane dwivedi yu\nType: PERSON" + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "roberto dess is an author of the work published in 2024", + "source_ids": [ + 216 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: roberto dess\nType: PERSON" + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "roberta raileanu is an author of the work published in 2024", + "source_ids": [ + 216 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: roberta raileanu\nType: PERSON" + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "maria lomeli is an author of the work published in 2024", + "source_ids": [ + 216 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: maria lomeli\nType: PERSON" + }, + { + "src_entity_name": "eric hambro", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "eric hambro is an author of the work published in 2024", + "source_ids": [ + 216 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: eric hambro\nType: PERSON" + }, + { + "src_entity_name": "luke zettlemoyer", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "luke zettlemoyer is an author of the work published in 2024", + "source_ids": [ + 216 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: luke zettlemoyer\nType: PERSON" + }, + { + "src_entity_name": "nicola cancedda", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "nicola cancedda is an author of the work published in 2024", + "source_ids": [ + 216 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: nicola cancedda\nType: PERSON" + }, + { + "src_entity_name": "thomas scialom", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "thomas scialom is an author of the work published in 2024", + "source_ids": [ + 216 + ], + "source": "Name: 2024\nType: DATE", + "target": "Name: thomas scialom\nType: PERSON" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "shuai bai is the first author listed before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: shuai bai\nType: PERSON" + }, + { + "src_entity_name": "keqin chen", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "keqin chen is listed as an author before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: keqin chen\nType: PERSON" + }, + { + "src_entity_name": "xuejing liu", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "xuejing liu is listed as an author before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: xuejing liu\nType: PERSON" + }, + { + "src_entity_name": "jialin wang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "jialin wang is listed as an author before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: jialin wang\nType: PERSON" + }, + { + "src_entity_name": "wenbin ge", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "wenbin ge is listed as an author before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: wenbin ge\nType: PERSON" + }, + { + "src_entity_name": "sibo song", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "sibo song is listed as an author before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: sibo song\nType: PERSON" + }, + { + "src_entity_name": "kai dang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "kai dang is listed as an author before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: kai dang\nType: PERSON" + }, + { + "src_entity_name": "peng wang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "peng wang is listed as an author before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: peng wang\nType: PERSON" + }, + { + "src_entity_name": "shijie wang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "shijie wang is listed as an author before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: shijie wang\nType: PERSON" + }, + { + "src_entity_name": "jun tang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "jun tang is listed as an author before et al", + "source_ids": [ + 194 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: jun tang\nType: PERSON" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 9.0, + "description": "gheorghe comanici is listed before et al indicating they are among the authors represented by the abbreviation", + "source_ids": [ + 203 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: gheorghe comanici\nType: PERSON" + }, + { + "src_entity_name": "soyeong jeong", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 9.0, + "description": "soyeong jeong is listed alongside et al as authors of the paper", + "source_ids": [ + 213 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: soyeong jeong\nType: PERSON" + }, + { + "src_entity_name": "jinheon baek", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 9.0, + "description": "jinheon baek is listed alongside et al as authors of the paper", + "source_ids": [ + 213 + ], + "source": "Name: et al\nType: PERSON", + "target": "Name: jinheon baek\nType: PERSON" + }, + { + "src_entity_name": "avirup sil", + "tgt_entity_name": "hannaneh hajishirzi", + "relation_name": "", + "weight": 8.0, + "description": "avirup sil and hannaneh hajishirzi are co authors on the same paper", + "source_ids": [ + 193 + ], + "source": "Name: avirup sil\nType: PERSON", + "target": "Name: hannaneh hajishirzi\nType: PERSON" + }, + { + "src_entity_name": "arxiv preprint arxiv 2310 11511", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the preprint is hosted by the arxiv organization", + "source_ids": [ + 193 + ], + "source": "Name: arxiv preprint arxiv 2310 11511\nType: PUBLICATION_VENUE", + "target": "Name: arxiv\nType: ORGANIZATION" + }, + { + "src_entity_name": "arxiv preprint arxiv 2302 09051", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the preprint is hosted by the arxiv organization", + "source_ids": [ + 205 + ], + "source": "Name: arxiv\nType: ORGANIZATION", + "target": "Name: arxiv preprint arxiv 2302 09051\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "arxiv preprint arxiv 2312 10997", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 10.0, + "description": "the preprint is hosted by arxiv", + "source_ids": [ + 207 + ], + "source": "Name: arxiv\nType: ORGANIZATION", + "target": "Name: arxiv preprint arxiv 2312 10997\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "shuai bai is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "keqin chen", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and keqin chen are co authors of the same document", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: keqin chen\nType: PERSON" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "xuejing liu", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and xuejing liu are co authors of the same document", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: xuejing liu\nType: PERSON" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "jialin wang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and jialin wang are co authors of the same document", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: jialin wang\nType: PERSON" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "wenbin ge", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and wenbin ge are co authors of the same document", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: wenbin ge\nType: PERSON" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "sibo song", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and sibo song are co authors of the same document", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: sibo song\nType: PERSON" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "kai dang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and kai dang are co authors of the same document", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: kai dang\nType: PERSON" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "peng wang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and peng wang are co authors of the same document", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: peng wang\nType: PERSON" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "shijie wang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and shijie wang are co authors of the same document", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: shijie wang\nType: PERSON" + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "jun tang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and jun tang are co authors of the same document", + "source_ids": [ + 194 + ], + "source": "Name: shuai bai\nType: PERSON", + "target": "Name: jun tang\nType: PERSON" + }, + { + "src_entity_name": "keqin chen", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "keqin chen is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: keqin chen\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "xuejing liu", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "xuejing liu is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: xuejing liu\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "jialin wang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "jialin wang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: jialin wang\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "wenbin ge", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "wenbin ge is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: wenbin ge\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "sibo song", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "sibo song is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: sibo song\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "kai dang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "kai dang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: kai dang\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "peng wang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "peng wang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: peng wang\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "shijie wang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "shijie wang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: shijie wang\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "jun tang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "jun tang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ], + "source": "Name: jun tang\nType: PERSON", + "target": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the qwen2 5 vl technical report was published as a preprint on arxiv", + "source_ids": [ + 194 + ], + "source": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE", + "target": "Name: arxiv\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "arxiv 2502 13923", + "relation_name": "", + "weight": 9.0, + "description": "the qwen2 5 vl technical report is identified by the preprint number arxiv 2502 13923", + "source_ids": [ + 194 + ], + "source": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE", + "target": "Name: arxiv 2502 13923\nType: FILE_TYPE" + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "qwen2 5 vl", + "relation_name": "", + "weight": 10.0, + "description": "the report is about the qwen2 5 vl model architecture", + "source_ids": [ + 194 + ], + "source": "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE", + "target": "Name: qwen2 5 vl\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "arxiv", + "tgt_entity_name": "preprint", + "relation_name": "", + "weight": 8.0, + "description": "arxiv is a platform for preprints", + "source_ids": [ + 194 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: preprint\nType: FILE_TYPE" + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper was published as a preprint on arxiv", + "source_ids": [ + 195 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK" + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag was published as a preprint on arxiv", + "source_ids": [ + 201 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: m3docrag\nType: PRODUCT" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici is an author of the paper published on arxiv", + "source_ids": [ + 203 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: gheorghe comanici\nType: PERSON" + }, + { + "src_entity_name": "arxiv 2507 06261", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 10.0, + "description": "arxiv 2507 06261 is the specific identifier for the paper on arxiv", + "source_ids": [ + 203 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: arxiv 2507 06261\nType: FILE_TYPE" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "darren edge is an author of a document published in arxiv", + "source_ids": [ + 206 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: darren edge\nType: PERSON" + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "ha trinh is an author of a document published in arxiv", + "source_ids": [ + 206 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: ha trinh\nType: PERSON" + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "newman cheng is an author of a document published in arxiv", + "source_ids": [ + 206 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: newman cheng\nType: PERSON" + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "joshua bradley is an author of a document published in arxiv", + "source_ids": [ + 206 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: joshua bradley\nType: PERSON" + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "alex chao is an author of a document published in arxiv", + "source_ids": [ + 206 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: alex chao\nType: PERSON" + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "apurva mody is an author of a document published in arxiv", + "source_ids": [ + 206 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: apurva mody\nType: PERSON" + }, + { + "src_entity_name": "steven truitt", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "steven truitt is an author of a document published in arxiv", + "source_ids": [ + 206 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: steven truitt\nType: PERSON" + }, + { + "src_entity_name": "jonathan larson", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "jonathan larson is an author of a document published in arxiv", + "source_ids": [ + 206 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: jonathan larson\nType: PERSON" + }, + { + "src_entity_name": "from local to global a graph rag approach to query focused summarization", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 10.0, + "description": "the document from local to global a graph rag approach to query focused summarization is published in arxiv", + "source_ids": [ + 206 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 10.0, + "description": "the paper describing hipporag was published as a preprint on arxiv", + "source_ids": [ + 209 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "g retriever is published on the arxiv platform", + "source_ids": [ + 211 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper was published on the arxiv preprint server", + "source_ids": [ + 212 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: rag and rau a survey on retrieval augmented language model in natural language processing\nType: BOOK" + }, + { + "src_entity_name": "soyeong jeong", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "soyeong jeong s work was published on arxiv", + "source_ids": [ + 213 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: soyeong jeong\nType: PERSON" + }, + { + "src_entity_name": "jinheon baek", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "jinheon baek s work was published on arxiv", + "source_ids": [ + 213 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: jinheon baek\nType: PERSON" + }, + { + "src_entity_name": "adaptive rag", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the adaptive rag preprint is hosted on arxiv", + "source_ids": [ + 213 + ], + "source": "Name: arxiv\nType: PUBLICATION_VENUE", + "target": "Name: adaptive rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "arxiv 2501 02235", + "tgt_entity_name": "preprint", + "relation_name": "", + "weight": 9.0, + "description": "arxiv 2501 02235 is identified as a preprint document", + "source_ids": [ + 195 + ], + "source": "Name: preprint\nType: FILE_TYPE", + "target": "Name: arxiv 2501 02235\nType: FILE_TYPE" + }, + { + "src_entity_name": "camille barboule", + "tgt_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "relation_name": "", + "weight": 10.0, + "description": "camille barboule is an author of the survey paper", + "source_ids": [ + 195 + ], + "source": "Name: camille barboule\nType: PERSON", + "target": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK" + }, + { + "src_entity_name": "camille barboule", + "tgt_entity_name": "benjamin piwowarski", + "relation_name": "", + "weight": 8.0, + "description": "camille barboule and benjamin piwowarski are co authors of the same survey paper", + "source_ids": [ + 195 + ], + "source": "Name: camille barboule\nType: PERSON", + "target": "Name: benjamin piwowarski\nType: PERSON" + }, + { + "src_entity_name": "camille barboule", + "tgt_entity_name": "yoan chabot", + "relation_name": "", + "weight": 8.0, + "description": "camille barboule and yoan chabot are co authors of the same survey paper", + "source_ids": [ + 195 + ], + "source": "Name: camille barboule\nType: PERSON", + "target": "Name: yoan chabot\nType: PERSON" + }, + { + "src_entity_name": "benjamin piwowarski", + "tgt_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "relation_name": "", + "weight": 10.0, + "description": "benjamin piwowarski is an author of the survey paper", + "source_ids": [ + 195 + ], + "source": "Name: benjamin piwowarski\nType: PERSON", + "target": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK" + }, + { + "src_entity_name": "benjamin piwowarski", + "tgt_entity_name": "yoan chabot", + "relation_name": "", + "weight": 8.0, + "description": "benjamin piwowarski and yoan chabot are co authors of the same survey paper", + "source_ids": [ + 195 + ], + "source": "Name: benjamin piwowarski\nType: PERSON", + "target": "Name: yoan chabot\nType: PERSON" + }, + { + "src_entity_name": "yoan chabot", + "tgt_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "relation_name": "", + "weight": 10.0, + "description": "yoan chabot is an author of the survey paper", + "source_ids": [ + 195 + ], + "source": "Name: yoan chabot\nType: PERSON", + "target": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK" + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "arxiv 2501 02235", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper is identified by the preprint number arxiv 2501 02235", + "source_ids": [ + 195 + ], + "source": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK", + "target": "Name: arxiv 2501 02235\nType: FILE_TYPE" + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "visually rich documents", + "relation_name": "", + "weight": 9.0, + "description": "the survey specifically addresses visually rich documents", + "source_ids": [ + 195 + ], + "source": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK", + "target": "Name: visually rich documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "methods", + "relation_name": "", + "weight": 8.0, + "description": "the survey covers various methods used in the field", + "source_ids": [ + 195 + ], + "source": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK", + "target": "Name: methods\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "challenges", + "relation_name": "", + "weight": 8.0, + "description": "the survey discusses the challenges present in the field", + "source_ids": [ + 195 + ], + "source": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK", + "target": "Name: challenges\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "trends", + "relation_name": "", + "weight": 8.0, + "description": "the survey outlines the trends in the research area", + "source_ids": [ + 195 + ], + "source": "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK", + "target": "Name: trends\nType: RESEARCH_FIELD" + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "yukun cao is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ], + "source": "Name: yukun cao\nType: PERSON", + "target": "Name: lego graphrag\nType: PRODUCT" + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "yukun cao is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: yukun cao\nType: PERSON", + "target": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "zengyi gao", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and zengyi gao are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: yukun cao\nType: PERSON", + "target": "Name: zengyi gao\nType: PERSON" + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "zhiyang li", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and zhiyang li are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: yukun cao\nType: PERSON", + "target": "Name: zhiyang li\nType: PERSON" + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "xike xie", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and xike xie are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: yukun cao\nType: PERSON", + "target": "Name: xike xie\nType: PERSON" + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "s kevin zhou", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and s kevin zhou are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: yukun cao\nType: PERSON", + "target": "Name: s kevin zhou\nType: PERSON" + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: yukun cao\nType: PERSON", + "target": "Name: jianliang xu\nType: PERSON" + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "zengyi gao is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ], + "source": "Name: zengyi gao\nType: PERSON", + "target": "Name: lego graphrag\nType: PRODUCT" + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "zengyi gao is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: zengyi gao\nType: PERSON", + "target": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "zhiyang li", + "relation_name": "", + "weight": 8.0, + "description": "zengyi gao and zhiyang li are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: zengyi gao\nType: PERSON", + "target": "Name: zhiyang li\nType: PERSON" + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "xike xie", + "relation_name": "", + "weight": 8.0, + "description": "zengyi gao and xike xie are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: zengyi gao\nType: PERSON", + "target": "Name: xike xie\nType: PERSON" + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "s kevin zhou", + "relation_name": "", + "weight": 8.0, + "description": "zengyi gao and s kevin zhou are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: zengyi gao\nType: PERSON", + "target": "Name: s kevin zhou\nType: PERSON" + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "zengyi gao and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: zengyi gao\nType: PERSON", + "target": "Name: jianliang xu\nType: PERSON" + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "zhiyang li is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ], + "source": "Name: zhiyang li\nType: PERSON", + "target": "Name: lego graphrag\nType: PRODUCT" + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "zhiyang li is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: zhiyang li\nType: PERSON", + "target": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "xike xie", + "relation_name": "", + "weight": 8.0, + "description": "zhiyang li and xike xie are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: zhiyang li\nType: PERSON", + "target": "Name: xike xie\nType: PERSON" + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "s kevin zhou", + "relation_name": "", + "weight": 8.0, + "description": "zhiyang li and s kevin zhou are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: zhiyang li\nType: PERSON", + "target": "Name: s kevin zhou\nType: PERSON" + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "zhiyang li and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: zhiyang li\nType: PERSON", + "target": "Name: jianliang xu\nType: PERSON" + }, + { + "src_entity_name": "xike xie", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "xike xie is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ], + "source": "Name: xike xie\nType: PERSON", + "target": "Name: lego graphrag\nType: PRODUCT" + }, + { + "src_entity_name": "xike xie", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "xike xie is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: xike xie\nType: PERSON", + "target": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "xike xie", + "tgt_entity_name": "s kevin zhou", + "relation_name": "", + "weight": 8.0, + "description": "xike xie and s kevin zhou are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: xike xie\nType: PERSON", + "target": "Name: s kevin zhou\nType: PERSON" + }, + { + "src_entity_name": "xike xie", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "xike xie and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: xike xie\nType: PERSON", + "target": "Name: jianliang xu\nType: PERSON" + }, + { + "src_entity_name": "s kevin zhou", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "s kevin zhou is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ], + "source": "Name: s kevin zhou\nType: PERSON", + "target": "Name: lego graphrag\nType: PRODUCT" + }, + { + "src_entity_name": "s kevin zhou", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "s kevin zhou is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: s kevin zhou\nType: PERSON", + "target": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "s kevin zhou", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "s kevin zhou and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ], + "source": "Name: s kevin zhou\nType: PERSON", + "target": "Name: jianliang xu\nType: PERSON" + }, + { + "src_entity_name": "jianliang xu", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "jianliang xu is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ], + "source": "Name: jianliang xu\nType: PERSON", + "target": "Name: lego graphrag\nType: PRODUCT" + }, + { + "src_entity_name": "jianliang xu", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "jianliang xu is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: jianliang xu\nType: PERSON", + "target": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 10.0, + "description": "lego graphrag is the subject of a paper published in proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: lego graphrag\nType: PRODUCT", + "target": "Name: proc vldb endow\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "june 2025", + "relation_name": "", + "weight": 9.0, + "description": "lego graphrag was published in june 2025", + "source_ids": [ + 196 + ], + "source": "Name: lego graphrag\nType: PRODUCT", + "target": "Name: june 2025\nType: DATE" + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "design space exploration", + "relation_name": "", + "weight": 10.0, + "description": "lego graphrag is developed specifically for design space exploration", + "source_ids": [ + 196 + ], + "source": "Name: lego graphrag\nType: PRODUCT", + "target": "Name: design space exploration\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "graph based retrieval augmented generation", + "relation_name": "", + "weight": 10.0, + "description": "lego graphrag is a modularized version of graph based retrieval augmented generation", + "source_ids": [ + 196 + ], + "source": "Name: lego graphrag\nType: PRODUCT", + "target": "Name: graph based retrieval augmented generation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "modularizing", + "relation_name": "", + "weight": 9.0, + "description": "the paper describes the process of modularizing graph based retrieval augmented generation to create lego graphrag", + "source_ids": [ + 196 + ], + "source": "Name: lego graphrag\nType: PRODUCT", + "target": "Name: modularizing\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "https doi org 10 14778 3748191 3748194", + "relation_name": "", + "weight": 10.0, + "description": "the paper describing lego graphrag is accessible via the provided doi link", + "source_ids": [ + 196 + ], + "source": "Name: lego graphrag\nType: PRODUCT", + "target": "Name: https doi org 10 14778 3748191 3748194\nType: URL" + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "june 2025", + "relation_name": "", + "weight": 9.0, + "description": "proc vldb endow published the paper in june 2025", + "source_ids": [ + 196 + ], + "source": "Name: proc vldb endow\nType: PUBLICATION_VENUE", + "target": "Name: june 2025\nType: DATE" + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "18", + "relation_name": "", + "weight": 8.0, + "description": "the paper was published in volume 18 of proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: proc vldb endow\nType: PUBLICATION_VENUE", + "target": "Name: 18\nType: MEASUREMENT" + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "3269 3283", + "relation_name": "", + "weight": 8.0, + "description": "the paper appears on pages 3269 3283 of proc vldb endow", + "source_ids": [ + 196 + ], + "source": "Name: proc vldb endow\nType: PUBLICATION_VENUE", + "target": "Name: 3269 3283\nType: MEASUREMENT" + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "chengliang chai is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: doctopus\nType: PRODUCT" + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: unstructured documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "chengliang chai is an author of the paper describing haipipe", + "source_ids": [ + 200 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: haipipe\nType: PRODUCT" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "chengliang chai", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and chengliang chai are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: sibei chen\nType: PERSON" + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "chengliang chai", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and chengliang chai are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: nan tang\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "chengliang chai", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and chengliang chai are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: ju fan\nType: PERSON" + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "chengliang chai", + "relation_name": "", + "weight": 8.0, + "description": "xuemi yan and chengliang chai are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: xuemi yan\nType: PERSON" + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: guoliang li\nType: PERSON" + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: xiaoyong du\nType: PERSON" + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "chengliang chai is an author of a paper published by the acm", + "source_ids": [ + 200 + ], + "source": "Name: chengliang chai\nType: PERSON", + "target": "Name: acm\nType: ORGANIZATION" + }, + { + "src_entity_name": "jiajun li", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "jiajun li is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ], + "source": "Name: jiajun li\nType: PERSON", + "target": "Name: doctopus\nType: PRODUCT" + }, + { + "src_entity_name": "jiajun li", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "jiajun li is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ], + "source": "Name: jiajun li\nType: PERSON", + "target": "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "jiajun li", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "jiajun li is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ], + "source": "Name: jiajun li\nType: PERSON", + "target": "Name: unstructured documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "yuhao deng", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "yuhao deng is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ], + "source": "Name: yuhao deng\nType: PERSON", + "target": "Name: doctopus\nType: PRODUCT" + }, + { + "src_entity_name": "yuhao deng", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "yuhao deng is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ], + "source": "Name: yuhao deng\nType: PERSON", + "target": "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "yuhao deng", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "yuhao deng is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ], + "source": "Name: yuhao deng\nType: PERSON", + "target": "Name: unstructured documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "yuanhao zhong", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "yuanhao zhong is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ], + "source": "Name: yuanhao zhong\nType: PERSON", + "target": "Name: doctopus\nType: PRODUCT" + }, + { + "src_entity_name": "yuanhao zhong", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "yuanhao zhong is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ], + "source": "Name: yuanhao zhong\nType: PERSON", + "target": "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "yuanhao zhong", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "yuanhao zhong is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ], + "source": "Name: yuanhao zhong\nType: PERSON", + "target": "Name: unstructured documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "ye yuan", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "ye yuan is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ], + "source": "Name: ye yuan\nType: PERSON", + "target": "Name: doctopus\nType: PRODUCT" + }, + { + "src_entity_name": "ye yuan", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "ye yuan is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ], + "source": "Name: ye yuan\nType: PERSON", + "target": "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "ye yuan", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "ye yuan is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ], + "source": "Name: ye yuan\nType: PERSON", + "target": "Name: unstructured documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "guoren wang", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "guoren wang is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ], + "source": "Name: guoren wang\nType: PERSON", + "target": "Name: doctopus\nType: PRODUCT" + }, + { + "src_entity_name": "guoren wang", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "guoren wang is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ], + "source": "Name: guoren wang\nType: PERSON", + "target": "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "guoren wang", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "guoren wang is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ], + "source": "Name: guoren wang\nType: PERSON", + "target": "Name: unstructured documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "lei cao", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "lei cao is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ], + "source": "Name: lei cao\nType: PERSON", + "target": "Name: doctopus\nType: PRODUCT" + }, + { + "src_entity_name": "lei cao", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "lei cao is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ], + "source": "Name: lei cao\nType: PERSON", + "target": "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "lei cao", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "lei cao is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ], + "source": "Name: lei cao\nType: PERSON", + "target": "Name: unstructured documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "doctopus", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 10.0, + "description": "doctopus is the system designed to perform budget aware structural table extraction", + "source_ids": [ + 197 + ], + "source": "Name: doctopus\nType: PRODUCT", + "target": "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "doctopus", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 10.0, + "description": "doctopus processes unstructured documents to extract structural tables", + "source_ids": [ + 197 + ], + "source": "Name: doctopus\nType: PRODUCT", + "target": "Name: unstructured documents\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "ilias chalkidis is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ], + "source": "Name: ilias chalkidis\nType: PERSON", + "target": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "manos fergadiotis", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: ilias chalkidis\nType: PERSON", + "target": "Name: manos fergadiotis\nType: PERSON" + }, + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "prodromos malakasiotis", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: ilias chalkidis\nType: PERSON", + "target": "Name: prodromos malakasiotis\nType: PERSON" + }, + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "nikolaos aletras", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: ilias chalkidis\nType: PERSON", + "target": "Name: nikolaos aletras\nType: PERSON" + }, + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "ion androutsopoulos", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: ilias chalkidis\nType: PERSON", + "target": "Name: ion androutsopoulos\nType: PERSON" + }, + { + "src_entity_name": "manos fergadiotis", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "manos fergadiotis is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ], + "source": "Name: manos fergadiotis\nType: PERSON", + "target": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "manos fergadiotis", + "tgt_entity_name": "prodromos malakasiotis", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: manos fergadiotis\nType: PERSON", + "target": "Name: prodromos malakasiotis\nType: PERSON" + }, + { + "src_entity_name": "manos fergadiotis", + "tgt_entity_name": "nikolaos aletras", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: manos fergadiotis\nType: PERSON", + "target": "Name: nikolaos aletras\nType: PERSON" + }, + { + "src_entity_name": "manos fergadiotis", + "tgt_entity_name": "ion androutsopoulos", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: manos fergadiotis\nType: PERSON", + "target": "Name: ion androutsopoulos\nType: PERSON" + }, + { + "src_entity_name": "prodromos malakasiotis", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "prodromos malakasiotis is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ], + "source": "Name: prodromos malakasiotis\nType: PERSON", + "target": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "prodromos malakasiotis", + "tgt_entity_name": "nikolaos aletras", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: prodromos malakasiotis\nType: PERSON", + "target": "Name: nikolaos aletras\nType: PERSON" + }, + { + "src_entity_name": "prodromos malakasiotis", + "tgt_entity_name": "ion androutsopoulos", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: prodromos malakasiotis\nType: PERSON", + "target": "Name: ion androutsopoulos\nType: PERSON" + }, + { + "src_entity_name": "nikolaos aletras", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "nikolaos aletras is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ], + "source": "Name: nikolaos aletras\nType: PERSON", + "target": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "nikolaos aletras", + "tgt_entity_name": "ion androutsopoulos", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ], + "source": "Name: nikolaos aletras\nType: PERSON", + "target": "Name: ion androutsopoulos\nType: PERSON" + }, + { + "src_entity_name": "ion androutsopoulos", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "ion androutsopoulos is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ], + "source": "Name: ion androutsopoulos\nType: PERSON", + "target": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "legal bert", + "tgt_entity_name": "arxiv preprint arxiv 2010 02559", + "relation_name": "", + "weight": 10.0, + "description": "legal bert is the subject of the publication arxiv preprint arxiv 2010 02559", + "source_ids": [ + 198 + ], + "source": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: arxiv preprint arxiv 2010 02559\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "legal bert", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "legal bert was published in the year 2020", + "source_ids": [ + 198 + ], + "source": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: 2020\nType: DATE" + }, + { + "src_entity_name": "legal bert", + "tgt_entity_name": "muppets", + "relation_name": "", + "weight": 9.0, + "description": "legal bert is described as being straight out of the muppets in the text", + "source_ids": [ + 198 + ], + "source": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: muppets\nType: PRODUCT" + }, + { + "src_entity_name": "legal bert", + "tgt_entity_name": "law school", + "relation_name": "", + "weight": 9.0, + "description": "legal bert is described as coming straight out of law school in the text", + "source_ids": [ + 198 + ], + "source": "Name: legal bert\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: law school\nType: LOCATION" + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "vassilis christophides is an author of a paper published in 2020", + "source_ids": [ + 202 + ], + "source": "Name: 2020\nType: DATE", + "target": "Name: vassilis christophides\nType: PERSON" + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "vasilis efthymiou is an author of a paper published in 2020", + "source_ids": [ + 202 + ], + "source": "Name: 2020\nType: DATE", + "target": "Name: vasilis efthymiou\nType: PERSON" + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "themis palpanas is an author of a paper published in 2020", + "source_ids": [ + 202 + ], + "source": "Name: 2020\nType: DATE", + "target": "Name: themis palpanas\nType: PERSON" + }, + { + "src_entity_name": "george papadakis", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "george papadakis is an author of a paper published in 2020", + "source_ids": [ + 202 + ], + "source": "Name: 2020\nType: DATE", + "target": "Name: george papadakis\nType: PERSON" + }, + { + "src_entity_name": "kostas stefanidis", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "kostas stefanidis is an author of a paper published in 2020", + "source_ids": [ + 202 + ], + "source": "Name: 2020\nType: DATE", + "target": "Name: kostas stefanidis\nType: PERSON" + }, + { + "src_entity_name": "2020", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 9.0, + "description": "the paper was published in acm computing surveys in the year 2020", + "source_ids": [ + 202 + ], + "source": "Name: 2020\nType: DATE", + "target": "Name: acm computing surveys\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "2020", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "the paper titled an overview of end to end entity resolution for big data was published in 2020", + "source_ids": [ + 202 + ], + "source": "Name: 2020\nType: DATE", + "target": "Name: an overview of end to end entity resolution for big data\nType: BOOK" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "sibei chen is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: auto formula\nType: PRODUCT" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen is an author of a paper published in this venue", + "source_ids": [ + 199 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "yeye he", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and yeye he are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: yeye he\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "weiwei cui", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and weiwei cui are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: weiwei cui\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "ju fan", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and ju fan are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: ju fan\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "song ge", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and song ge are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: song ge\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: haidong zhang\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: dongmei zhang\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: surajit chaudhuri\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "sibei chen is an author of the paper describing haipipe", + "source_ids": [ + 200 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: haipipe\nType: PRODUCT" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "nan tang", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and nan tang are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: nan tang\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "xuemi yan", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and xuemi yan are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: xuemi yan\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: guoliang li\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: xiaoyong du\nType: PERSON" + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "sibei chen is an author of a paper published by the acm", + "source_ids": [ + 200 + ], + "source": "Name: sibei chen\nType: PERSON", + "target": "Name: acm\nType: ORGANIZATION" + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "yeye he is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ], + "source": "Name: yeye he\nType: PERSON", + "target": "Name: auto formula\nType: PRODUCT" + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "yeye he is an author of a paper published in this venue", + "source_ids": [ + 199 + ], + "source": "Name: yeye he\nType: PERSON", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "weiwei cui", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and weiwei cui are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: yeye he\nType: PERSON", + "target": "Name: weiwei cui\nType: PERSON" + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "ju fan", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and ju fan are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: yeye he\nType: PERSON", + "target": "Name: ju fan\nType: PERSON" + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "song ge", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and song ge are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: yeye he\nType: PERSON", + "target": "Name: song ge\nType: PERSON" + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: yeye he\nType: PERSON", + "target": "Name: haidong zhang\nType: PERSON" + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: yeye he\nType: PERSON", + "target": "Name: dongmei zhang\nType: PERSON" + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: yeye he\nType: PERSON", + "target": "Name: surajit chaudhuri\nType: PERSON" + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "weiwei cui is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ], + "source": "Name: weiwei cui\nType: PERSON", + "target": "Name: auto formula\nType: PRODUCT" + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui is an author of a paper published in this venue", + "source_ids": [ + 199 + ], + "source": "Name: weiwei cui\nType: PERSON", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "ju fan", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and ju fan are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: weiwei cui\nType: PERSON", + "target": "Name: ju fan\nType: PERSON" + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "song ge", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and song ge are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: weiwei cui\nType: PERSON", + "target": "Name: song ge\nType: PERSON" + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: weiwei cui\nType: PERSON", + "target": "Name: haidong zhang\nType: PERSON" + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: weiwei cui\nType: PERSON", + "target": "Name: dongmei zhang\nType: PERSON" + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: weiwei cui\nType: PERSON", + "target": "Name: surajit chaudhuri\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "ju fan is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: auto formula\nType: PRODUCT" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "ju fan is an author of a paper published in this venue", + "source_ids": [ + 199 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "song ge", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and song ge are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: song ge\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: haidong zhang\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: dongmei zhang\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: surajit chaudhuri\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "ju fan is an author of the paper describing haipipe", + "source_ids": [ + 200 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: haipipe\nType: PRODUCT" + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "ju fan", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and ju fan are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: nan tang\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "xuemi yan", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and xuemi yan are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: xuemi yan\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: guoliang li\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: xiaoyong du\nType: PERSON" + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "ju fan is an author of a paper published by the acm", + "source_ids": [ + 200 + ], + "source": "Name: ju fan\nType: PERSON", + "target": "Name: acm\nType: ORGANIZATION" + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "song ge is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ], + "source": "Name: song ge\nType: PERSON", + "target": "Name: auto formula\nType: PRODUCT" + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "song ge is an author of a paper published in this venue", + "source_ids": [ + 199 + ], + "source": "Name: song ge\nType: PERSON", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "song ge and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: song ge\nType: PERSON", + "target": "Name: haidong zhang\nType: PERSON" + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "song ge and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: song ge\nType: PERSON", + "target": "Name: dongmei zhang\nType: PERSON" + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "song ge and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: song ge\nType: PERSON", + "target": "Name: surajit chaudhuri\nType: PERSON" + }, + { + "src_entity_name": "haidong zhang", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "haidong zhang is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ], + "source": "Name: haidong zhang\nType: PERSON", + "target": "Name: auto formula\nType: PRODUCT" + }, + { + "src_entity_name": "haidong zhang", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "haidong zhang is an author of a paper published in this venue", + "source_ids": [ + 199 + ], + "source": "Name: haidong zhang\nType: PERSON", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "haidong zhang", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "haidong zhang and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: haidong zhang\nType: PERSON", + "target": "Name: dongmei zhang\nType: PERSON" + }, + { + "src_entity_name": "haidong zhang", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "haidong zhang and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: haidong zhang\nType: PERSON", + "target": "Name: surajit chaudhuri\nType: PERSON" + }, + { + "src_entity_name": "dongmei zhang", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "dongmei zhang is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ], + "source": "Name: dongmei zhang\nType: PERSON", + "target": "Name: auto formula\nType: PRODUCT" + }, + { + "src_entity_name": "dongmei zhang", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "dongmei zhang is an author of a paper published in this venue", + "source_ids": [ + 199 + ], + "source": "Name: dongmei zhang\nType: PERSON", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "dongmei zhang", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "dongmei zhang and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ], + "source": "Name: dongmei zhang\nType: PERSON", + "target": "Name: surajit chaudhuri\nType: PERSON" + }, + { + "src_entity_name": "surajit chaudhuri", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "surajit chaudhuri is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ], + "source": "Name: surajit chaudhuri\nType: PERSON", + "target": "Name: auto formula\nType: PRODUCT" + }, + { + "src_entity_name": "surajit chaudhuri", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "surajit chaudhuri is an author of a paper published in this venue", + "source_ids": [ + 199 + ], + "source": "Name: surajit chaudhuri\nType: PERSON", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 9.0, + "description": "auto formula is the subject of a paper published in this venue", + "source_ids": [ + 199 + ], + "source": "Name: auto formula\nType: PRODUCT", + "target": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "contrastive learning", + "relation_name": "", + "weight": 10.0, + "description": "auto formula uses contrastive learning as its core method", + "source_ids": [ + 199 + ], + "source": "Name: auto formula\nType: PRODUCT", + "target": "Name: contrastive learning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "spreadsheets", + "relation_name": "", + "weight": 9.0, + "description": "auto formula operates within the context of spreadsheets", + "source_ids": [ + 199 + ], + "source": "Name: auto formula\nType: PRODUCT", + "target": "Name: spreadsheets\nType: PRODUCT" + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "formulas", + "relation_name": "", + "weight": 10.0, + "description": "auto formula is designed to recommend formulas", + "source_ids": [ + 199 + ], + "source": "Name: auto formula\nType: PRODUCT", + "target": "Name: formulas\nType: PRODUCT" + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "table representations", + "relation_name": "", + "weight": 9.0, + "description": "auto formula relies on table representations for its learning process", + "source_ids": [ + 199 + ], + "source": "Name: auto formula\nType: PRODUCT", + "target": "Name: table representations\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "proceedings of the acm on management of data", + "tgt_entity_name": "1 27", + "relation_name": "", + "weight": 10.0, + "description": "the publication page range is 1 27", + "source_ids": [ + 199 + ], + "source": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE", + "target": "Name: 1 27\nType: MEASUREMENT" + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 10.0, + "description": "haipipe is published in the proceedings of the acm on management of data", + "source_ids": [ + 200 + ], + "source": "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE", + "target": "Name: haipipe\nType: PRODUCT" + }, + { + "src_entity_name": "contrastive learning", + "tgt_entity_name": "table representations", + "relation_name": "", + "weight": 9.0, + "description": "contrastive learning is applied to table representations", + "source_ids": [ + 199 + ], + "source": "Name: table representations\nType: DATASET_OR_CORPUS", + "target": "Name: contrastive learning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "nan tang is an author of the paper describing haipipe", + "source_ids": [ + 200 + ], + "source": "Name: nan tang\nType: PERSON", + "target": "Name: haipipe\nType: PRODUCT" + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "xuemi yan", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and xuemi yan are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: nan tang\nType: PERSON", + "target": "Name: xuemi yan\nType: PERSON" + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: nan tang\nType: PERSON", + "target": "Name: guoliang li\nType: PERSON" + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: nan tang\nType: PERSON", + "target": "Name: xiaoyong du\nType: PERSON" + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "nan tang is an author of a paper published by the acm", + "source_ids": [ + 200 + ], + "source": "Name: nan tang\nType: PERSON", + "target": "Name: acm\nType: ORGANIZATION" + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "xuemi yan is an author of the paper describing haipipe", + "source_ids": [ + 200 + ], + "source": "Name: xuemi yan\nType: PERSON", + "target": "Name: haipipe\nType: PRODUCT" + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "xuemi yan and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: xuemi yan\nType: PERSON", + "target": "Name: guoliang li\nType: PERSON" + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "xuemi yan and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: xuemi yan\nType: PERSON", + "target": "Name: xiaoyong du\nType: PERSON" + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "xuemi yan is an author of a paper published by the acm", + "source_ids": [ + 200 + ], + "source": "Name: xuemi yan\nType: PERSON", + "target": "Name: acm\nType: ORGANIZATION" + }, + { + "src_entity_name": "guoliang li", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "guoliang li is an author of the paper describing haipipe", + "source_ids": [ + 200 + ], + "source": "Name: guoliang li\nType: PERSON", + "target": "Name: haipipe\nType: PRODUCT" + }, + { + "src_entity_name": "guoliang li", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "guoliang li and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ], + "source": "Name: guoliang li\nType: PERSON", + "target": "Name: xiaoyong du\nType: PERSON" + }, + { + "src_entity_name": "guoliang li", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "guoliang li is an author of a paper published by the acm", + "source_ids": [ + 200 + ], + "source": "Name: guoliang li\nType: PERSON", + "target": "Name: acm\nType: ORGANIZATION" + }, + { + "src_entity_name": "xiaoyong du", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "xiaoyong du is an author of the paper describing haipipe", + "source_ids": [ + 200 + ], + "source": "Name: xiaoyong du\nType: PERSON", + "target": "Name: haipipe\nType: PRODUCT" + }, + { + "src_entity_name": "xiaoyong du", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "xiaoyong du is an author of a paper published by the acm", + "source_ids": [ + 200 + ], + "source": "Name: xiaoyong du\nType: PERSON", + "target": "Name: acm\nType: ORGANIZATION" + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "data preparation", + "relation_name": "", + "weight": 10.0, + "description": "haipipe is a system designed for data preparation", + "source_ids": [ + 200 + ], + "source": "Name: haipipe\nType: PRODUCT", + "target": "Name: data preparation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "human generated pipelines", + "relation_name": "", + "weight": 9.0, + "description": "haipipe combines human generated pipelines as part of its methodology", + "source_ids": [ + 200 + ], + "source": "Name: haipipe\nType: PRODUCT", + "target": "Name: human generated pipelines\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "machine generated pipelines", + "relation_name": "", + "weight": 9.0, + "description": "haipipe combines machine generated pipelines as part of its methodology", + "source_ids": [ + 200 + ], + "source": "Name: haipipe\nType: PRODUCT", + "target": "Name: machine generated pipelines\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 8.0, + "description": "haipipe is published by the acm organization", + "source_ids": [ + 200 + ], + "source": "Name: haipipe\nType: PRODUCT", + "target": "Name: acm\nType: ORGANIZATION" + }, + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "jaemin cho is an author of the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: jaemin cho\nType: PERSON", + "target": "Name: m3docrag\nType: PRODUCT" + }, + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "debanjan mahata", + "relation_name": "", + "weight": 8.0, + "description": "jaemin cho and debanjan mahata are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: jaemin cho\nType: PERSON", + "target": "Name: debanjan mahata\nType: PERSON" + }, + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "ozan irsoy", + "relation_name": "", + "weight": 8.0, + "description": "jaemin cho and ozan irsoy are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: jaemin cho\nType: PERSON", + "target": "Name: ozan irsoy\nType: PERSON" + }, + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "yujie he", + "relation_name": "", + "weight": 8.0, + "description": "jaemin cho and yujie he are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: jaemin cho\nType: PERSON", + "target": "Name: yujie he\nType: PERSON" + }, + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "mohit bansal", + "relation_name": "", + "weight": 8.0, + "description": "jaemin cho and mohit bansal are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: jaemin cho\nType: PERSON", + "target": "Name: mohit bansal\nType: PERSON" + }, + { + "src_entity_name": "debanjan mahata", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "debanjan mahata is an author of the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: debanjan mahata\nType: PERSON", + "target": "Name: m3docrag\nType: PRODUCT" + }, + { + "src_entity_name": "debanjan mahata", + "tgt_entity_name": "ozan irsoy", + "relation_name": "", + "weight": 8.0, + "description": "debanjan mahata and ozan irsoy are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: debanjan mahata\nType: PERSON", + "target": "Name: ozan irsoy\nType: PERSON" + }, + { + "src_entity_name": "debanjan mahata", + "tgt_entity_name": "yujie he", + "relation_name": "", + "weight": 8.0, + "description": "debanjan mahata and yujie he are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: debanjan mahata\nType: PERSON", + "target": "Name: yujie he\nType: PERSON" + }, + { + "src_entity_name": "debanjan mahata", + "tgt_entity_name": "mohit bansal", + "relation_name": "", + "weight": 8.0, + "description": "debanjan mahata and mohit bansal are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: debanjan mahata\nType: PERSON", + "target": "Name: mohit bansal\nType: PERSON" + }, + { + "src_entity_name": "ozan irsoy", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "ozan irsoy is an author of the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: ozan irsoy\nType: PERSON", + "target": "Name: m3docrag\nType: PRODUCT" + }, + { + "src_entity_name": "ozan irsoy", + "tgt_entity_name": "yujie he", + "relation_name": "", + "weight": 8.0, + "description": "ozan irsoy and yujie he are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: ozan irsoy\nType: PERSON", + "target": "Name: yujie he\nType: PERSON" + }, + { + "src_entity_name": "ozan irsoy", + "tgt_entity_name": "mohit bansal", + "relation_name": "", + "weight": 8.0, + "description": "ozan irsoy and mohit bansal are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: ozan irsoy\nType: PERSON", + "target": "Name: mohit bansal\nType: PERSON" + }, + { + "src_entity_name": "yujie he", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "yujie he is an author of the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: yujie he\nType: PERSON", + "target": "Name: m3docrag\nType: PRODUCT" + }, + { + "src_entity_name": "yujie he", + "tgt_entity_name": "mohit bansal", + "relation_name": "", + "weight": 8.0, + "description": "yujie he and mohit bansal are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: yujie he\nType: PERSON", + "target": "Name: mohit bansal\nType: PERSON" + }, + { + "src_entity_name": "mohit bansal", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "mohit bansal is an author of the m3docrag preprint", + "source_ids": [ + 201 + ], + "source": "Name: mohit bansal\nType: PERSON", + "target": "Name: m3docrag\nType: PRODUCT" + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "arxiv 2411 04952", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag is identified by the file type arxiv 2411 04952", + "source_ids": [ + 201 + ], + "source": "Name: m3docrag\nType: PRODUCT", + "target": "Name: arxiv 2411 04952\nType: FILE_TYPE" + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "multi modal retrieval", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag utilizes multi modal retrieval as its core technique", + "source_ids": [ + 201 + ], + "source": "Name: m3docrag\nType: PRODUCT", + "target": "Name: multi modal retrieval\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "multi page multidocument understanding", + "relation_name": "", + "weight": 10.0, + "description": "m3docrag is designed to solve the problem of multi page multidocument understanding", + "source_ids": [ + 201 + ], + "source": "Name: m3docrag\nType: PRODUCT", + "target": "Name: multi page multidocument understanding\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "arxiv preprint", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag was published as an arxiv preprint", + "source_ids": [ + 201 + ], + "source": "Name: m3docrag\nType: PRODUCT", + "target": "Name: arxiv preprint\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "multi modal retrieval", + "tgt_entity_name": "multi page multidocument understanding", + "relation_name": "", + "weight": 8.0, + "description": "multi modal retrieval is identified as the necessary method for achieving multi page multidocument understanding", + "source_ids": [ + 201 + ], + "source": "Name: multi modal retrieval\nType: METHOD_OR_TECHNIQUE", + "target": "Name: multi page multidocument understanding\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "vasilis efthymiou", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: vassilis christophides\nType: PERSON", + "target": "Name: vasilis efthymiou\nType: PERSON" + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "themis palpanas", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: vassilis christophides\nType: PERSON", + "target": "Name: themis palpanas\nType: PERSON" + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "george papadakis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: vassilis christophides\nType: PERSON", + "target": "Name: george papadakis\nType: PERSON" + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "kostas stefanidis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: vassilis christophides\nType: PERSON", + "target": "Name: kostas stefanidis\nType: PERSON" + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "vassilis christophides is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ], + "source": "Name: vassilis christophides\nType: PERSON", + "target": "Name: acm computing surveys\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "vassilis christophides is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "source": "Name: vassilis christophides\nType: PERSON", + "target": "Name: an overview of end to end entity resolution for big data\nType: BOOK" + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "themis palpanas", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: vasilis efthymiou\nType: PERSON", + "target": "Name: themis palpanas\nType: PERSON" + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "george papadakis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: vasilis efthymiou\nType: PERSON", + "target": "Name: george papadakis\nType: PERSON" + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "kostas stefanidis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: vasilis efthymiou\nType: PERSON", + "target": "Name: kostas stefanidis\nType: PERSON" + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "vasilis efthymiou is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ], + "source": "Name: vasilis efthymiou\nType: PERSON", + "target": "Name: acm computing surveys\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "vasilis efthymiou is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "source": "Name: vasilis efthymiou\nType: PERSON", + "target": "Name: an overview of end to end entity resolution for big data\nType: BOOK" + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "george papadakis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: themis palpanas\nType: PERSON", + "target": "Name: george papadakis\nType: PERSON" + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "kostas stefanidis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: themis palpanas\nType: PERSON", + "target": "Name: kostas stefanidis\nType: PERSON" + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "themis palpanas is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ], + "source": "Name: themis palpanas\nType: PERSON", + "target": "Name: acm computing surveys\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "themis palpanas is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "source": "Name: themis palpanas\nType: PERSON", + "target": "Name: an overview of end to end entity resolution for big data\nType: BOOK" + }, + { + "src_entity_name": "george papadakis", + "tgt_entity_name": "kostas stefanidis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ], + "source": "Name: george papadakis\nType: PERSON", + "target": "Name: kostas stefanidis\nType: PERSON" + }, + { + "src_entity_name": "george papadakis", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "george papadakis is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ], + "source": "Name: george papadakis\nType: PERSON", + "target": "Name: acm computing surveys\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "george papadakis", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "george papadakis is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "source": "Name: george papadakis\nType: PERSON", + "target": "Name: an overview of end to end entity resolution for big data\nType: BOOK" + }, + { + "src_entity_name": "kostas stefanidis", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "kostas stefanidis is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ], + "source": "Name: kostas stefanidis\nType: PERSON", + "target": "Name: acm computing surveys\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "kostas stefanidis", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "kostas stefanidis is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "source": "Name: kostas stefanidis\nType: PERSON", + "target": "Name: an overview of end to end entity resolution for big data\nType: BOOK" + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "acm computing surveys is the publication venue for the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ], + "source": "Name: acm computing surveys\nType: PUBLICATION_VENUE", + "target": "Name: an overview of end to end entity resolution for big data\nType: BOOK" + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "csur", + "relation_name": "", + "weight": 10.0, + "description": "csur is the abbreviation used for the publication venue acm computing surveys", + "source_ids": [ + 202 + ], + "source": "Name: acm computing surveys\nType: PUBLICATION_VENUE", + "target": "Name: csur\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "53", + "relation_name": "", + "weight": 9.0, + "description": "the paper was published in volume 53 of acm computing surveys", + "source_ids": [ + 202 + ], + "source": "Name: acm computing surveys\nType: PUBLICATION_VENUE", + "target": "Name: 53\nType: MEASUREMENT" + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "1 42", + "relation_name": "", + "weight": 9.0, + "description": "the paper spans pages 1 42 in acm computing surveys", + "source_ids": [ + 202 + ], + "source": "Name: acm computing surveys\nType: PUBLICATION_VENUE", + "target": "Name: 1 42\nType: MEASUREMENT" + }, + { + "src_entity_name": "an overview of end to end entity resolution for big data", + "tgt_entity_name": "end to end entity resolution", + "relation_name": "", + "weight": 10.0, + "description": "the paper title indicates it provides an overview of the task of end to end entity resolution", + "source_ids": [ + 202 + ], + "source": "Name: an overview of end to end entity resolution for big data\nType: BOOK", + "target": "Name: end to end entity resolution\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "an overview of end to end entity resolution for big data", + "tgt_entity_name": "big data", + "relation_name": "", + "weight": 10.0, + "description": "the paper title indicates it discusses the application of entity resolution to big data", + "source_ids": [ + 202 + ], + "source": "Name: an overview of end to end entity resolution for big data\nType: BOOK", + "target": "Name: big data\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "end to end entity resolution", + "tgt_entity_name": "big data", + "relation_name": "", + "weight": 8.0, + "description": "the text links the task of end to end entity resolution with the domain of big data", + "source_ids": [ + 202 + ], + "source": "Name: end to end entity resolution\nType: TASK_OR_PROBLEM", + "target": "Name: big data\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "eric bieber", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and eric bieber are co authors on the same paper", + "source_ids": [ + 203 + ], + "source": "Name: gheorghe comanici\nType: PERSON", + "target": "Name: eric bieber\nType: PERSON" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "mike schaekermann", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and mike schaekermann are co authors on the same paper", + "source_ids": [ + 203 + ], + "source": "Name: gheorghe comanici\nType: PERSON", + "target": "Name: mike schaekermann\nType: PERSON" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "ice pasupat", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and ice pasupat are co authors on the same paper", + "source_ids": [ + 203 + ], + "source": "Name: gheorghe comanici\nType: PERSON", + "target": "Name: ice pasupat\nType: PERSON" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "noveen sachdeva", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and noveen sachdeva are co authors on the same paper", + "source_ids": [ + 203 + ], + "source": "Name: gheorghe comanici\nType: PERSON", + "target": "Name: noveen sachdeva\nType: PERSON" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "inderjit dhillon", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and inderjit dhillon are co authors on the same paper", + "source_ids": [ + 203 + ], + "source": "Name: gheorghe comanici\nType: PERSON", + "target": "Name: inderjit dhillon\nType: PERSON" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "marcel blistein", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and marcel blistein are co authors on the same paper", + "source_ids": [ + 203 + ], + "source": "Name: gheorghe comanici\nType: PERSON", + "target": "Name: marcel blistein\nType: PERSON" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "ori ram", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and ori ram are co authors on the same paper", + "source_ids": [ + 203 + ], + "source": "Name: gheorghe comanici\nType: PERSON", + "target": "Name: ori ram\nType: PERSON" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "dan zhang", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and dan zhang are co authors on the same paper", + "source_ids": [ + 203 + ], + "source": "Name: gheorghe comanici\nType: PERSON", + "target": "Name: dan zhang\nType: PERSON" + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "evan rosen", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and evan rosen are co authors on the same paper", + "source_ids": [ + 203 + ], + "source": "Name: gheorghe comanici\nType: PERSON", + "target": "Name: evan rosen\nType: PERSON" + }, + { + "src_entity_name": "arxiv 2507 06261", + "tgt_entity_name": "arxiv preprint", + "relation_name": "", + "weight": 10.0, + "description": "arxiv 2507 06261 is identified as an arxiv preprint", + "source_ids": [ + 203 + ], + "source": "Name: arxiv 2507 06261\nType: FILE_TYPE", + "target": "Name: arxiv preprint\nType: FILE_TYPE" + }, + { + "src_entity_name": "arxiv 2402 07630", + "tgt_entity_name": "arxiv preprint", + "relation_name": "", + "weight": 9.0, + "description": "arxiv 2402 07630 is an instance of an arxiv preprint", + "source_ids": [ + 211 + ], + "source": "Name: arxiv preprint\nType: FILE_TYPE", + "target": "Name: arxiv 2402 07630\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "arxiv preprint", + "relation_name": "", + "weight": 9.0, + "description": "g retriever is published as an arxiv preprint", + "source_ids": [ + 211 + ], + "source": "Name: arxiv preprint\nType: FILE_TYPE", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "pradeep dasigi", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "pradeep dasigi is an author of the dataset work", + "source_ids": [ + 204 + ], + "source": "Name: pradeep dasigi\nType: PERSON", + "target": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT" + }, + { + "src_entity_name": "pradeep dasigi", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "pradeep dasigi is an author of the work published in this venue", + "source_ids": [ + 204 + ], + "source": "Name: pradeep dasigi\nType: PERSON", + "target": "Name: arxiv preprint arxiv 2105 03011\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "kyle lo", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "kyle lo is an author of the dataset work", + "source_ids": [ + 204 + ], + "source": "Name: kyle lo\nType: PERSON", + "target": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT" + }, + { + "src_entity_name": "kyle lo", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "kyle lo is an author of the work published in this venue", + "source_ids": [ + 204 + ], + "source": "Name: kyle lo\nType: PERSON", + "target": "Name: arxiv preprint arxiv 2105 03011\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "iz beltagy", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "iz beltagy is an author of the dataset work", + "source_ids": [ + 204 + ], + "source": "Name: iz beltagy\nType: PERSON", + "target": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT" + }, + { + "src_entity_name": "iz beltagy", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "iz beltagy is an author of the work published in this venue", + "source_ids": [ + 204 + ], + "source": "Name: iz beltagy\nType: PERSON", + "target": "Name: arxiv preprint arxiv 2105 03011\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "arman cohan", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "arman cohan is an author of the dataset work", + "source_ids": [ + 204 + ], + "source": "Name: arman cohan\nType: PERSON", + "target": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT" + }, + { + "src_entity_name": "arman cohan", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "arman cohan is an author of the work published in this venue", + "source_ids": [ + 204 + ], + "source": "Name: arman cohan\nType: PERSON", + "target": "Name: arxiv preprint arxiv 2105 03011\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "noah a smith", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "noah a smith is an author of the dataset work", + "source_ids": [ + 204 + ], + "source": "Name: noah a smith\nType: PERSON", + "target": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT" + }, + { + "src_entity_name": "noah a smith", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "noah a smith is an author of the work published in this venue", + "source_ids": [ + 204 + ], + "source": "Name: noah a smith\nType: PERSON", + "target": "Name: arxiv preprint arxiv 2105 03011\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "matt gardner", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "matt gardner is an author of the dataset work", + "source_ids": [ + 204 + ], + "source": "Name: matt gardner\nType: PERSON", + "target": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT" + }, + { + "src_entity_name": "matt gardner", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "matt gardner is an author of the work published in this venue", + "source_ids": [ + 204 + ], + "source": "Name: matt gardner\nType: PERSON", + "target": "Name: arxiv preprint arxiv 2105 03011\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 10.0, + "description": "the dataset work is published as the arxiv preprint arxiv 2105 03011", + "source_ids": [ + 204 + ], + "source": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT", + "target": "Name: arxiv preprint arxiv 2105 03011\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "2021", + "relation_name": "", + "weight": 10.0, + "description": "the dataset work was published in the year 2021", + "source_ids": [ + 204 + ], + "source": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT", + "target": "Name: 2021\nType: DATE" + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "research papers", + "relation_name": "", + "weight": 10.0, + "description": "the dataset is anchored in research papers meaning it derives its content from them", + "source_ids": [ + 204 + ], + "source": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT", + "target": "Name: research papers\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "information seeking questions", + "relation_name": "", + "weight": 10.0, + "description": "the dataset consists of information seeking questions", + "source_ids": [ + 204 + ], + "source": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT", + "target": "Name: information seeking questions\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "answers", + "relation_name": "", + "weight": 10.0, + "description": "the dataset consists of answers corresponding to the questions", + "source_ids": [ + 204 + ], + "source": "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT", + "target": "Name: answers\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "patrice bellot", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: xavier daull\nType: PERSON", + "target": "Name: patrice bellot\nType: PERSON" + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "emmanuel bruno", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: xavier daull\nType: PERSON", + "target": "Name: emmanuel bruno\nType: PERSON" + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "vincent martin", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: xavier daull\nType: PERSON", + "target": "Name: vincent martin\nType: PERSON" + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "elisabeth murisasco", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: xavier daull\nType: PERSON", + "target": "Name: elisabeth murisasco\nType: PERSON" + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "arxiv preprint arxiv 2302 09051", + "relation_name": "", + "weight": 8.0, + "description": "xavier daull is an author of the work identified by this preprint number", + "source_ids": [ + 205 + ], + "source": "Name: xavier daull\nType: PERSON", + "target": "Name: arxiv preprint arxiv 2302 09051\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "complex qa and language models hybrid architectures survey", + "relation_name": "", + "weight": 10.0, + "description": "xavier daull is the author of this specific survey title", + "source_ids": [ + 205 + ], + "source": "Name: xavier daull\nType: PERSON", + "target": "Name: complex qa and language models hybrid architectures survey\nType: BOOK" + }, + { + "src_entity_name": "patrice bellot", + "tgt_entity_name": "emmanuel bruno", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: patrice bellot\nType: PERSON", + "target": "Name: emmanuel bruno\nType: PERSON" + }, + { + "src_entity_name": "patrice bellot", + "tgt_entity_name": "vincent martin", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: patrice bellot\nType: PERSON", + "target": "Name: vincent martin\nType: PERSON" + }, + { + "src_entity_name": "patrice bellot", + "tgt_entity_name": "elisabeth murisasco", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: patrice bellot\nType: PERSON", + "target": "Name: elisabeth murisasco\nType: PERSON" + }, + { + "src_entity_name": "emmanuel bruno", + "tgt_entity_name": "vincent martin", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: emmanuel bruno\nType: PERSON", + "target": "Name: vincent martin\nType: PERSON" + }, + { + "src_entity_name": "emmanuel bruno", + "tgt_entity_name": "elisabeth murisasco", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: emmanuel bruno\nType: PERSON", + "target": "Name: elisabeth murisasco\nType: PERSON" + }, + { + "src_entity_name": "vincent martin", + "tgt_entity_name": "elisabeth murisasco", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ], + "source": "Name: vincent martin\nType: PERSON", + "target": "Name: elisabeth murisasco\nType: PERSON" + }, + { + "src_entity_name": "arxiv preprint arxiv 2302 09051", + "tgt_entity_name": "2302 09051", + "relation_name": "", + "weight": 10.0, + "description": "the preprint identifier contains the specific code 2302 09051", + "source_ids": [ + 205 + ], + "source": "Name: arxiv preprint arxiv 2302 09051\nType: PUBLICATION_VENUE", + "target": "Name: 2302 09051\nType: FILE_TYPE" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "ha trinh", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: darren edge\nType: PERSON", + "target": "Name: ha trinh\nType: PERSON" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "newman cheng", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: darren edge\nType: PERSON", + "target": "Name: newman cheng\nType: PERSON" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "joshua bradley", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: darren edge\nType: PERSON", + "target": "Name: joshua bradley\nType: PERSON" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "alex chao", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: darren edge\nType: PERSON", + "target": "Name: alex chao\nType: PERSON" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: darren edge\nType: PERSON", + "target": "Name: apurva mody\nType: PERSON" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: darren edge\nType: PERSON", + "target": "Name: steven truitt\nType: PERSON" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: darren edge\nType: PERSON", + "target": "Name: jonathan larson\nType: PERSON" + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "darren edge is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ], + "source": "Name: darren edge\nType: PERSON", + "target": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "newman cheng", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: ha trinh\nType: PERSON", + "target": "Name: newman cheng\nType: PERSON" + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "joshua bradley", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: ha trinh\nType: PERSON", + "target": "Name: joshua bradley\nType: PERSON" + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "alex chao", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: ha trinh\nType: PERSON", + "target": "Name: alex chao\nType: PERSON" + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: ha trinh\nType: PERSON", + "target": "Name: apurva mody\nType: PERSON" + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: ha trinh\nType: PERSON", + "target": "Name: steven truitt\nType: PERSON" + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: ha trinh\nType: PERSON", + "target": "Name: jonathan larson\nType: PERSON" + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "ha trinh is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ], + "source": "Name: ha trinh\nType: PERSON", + "target": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "joshua bradley", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: newman cheng\nType: PERSON", + "target": "Name: joshua bradley\nType: PERSON" + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "alex chao", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: newman cheng\nType: PERSON", + "target": "Name: alex chao\nType: PERSON" + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: newman cheng\nType: PERSON", + "target": "Name: apurva mody\nType: PERSON" + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: newman cheng\nType: PERSON", + "target": "Name: steven truitt\nType: PERSON" + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: newman cheng\nType: PERSON", + "target": "Name: jonathan larson\nType: PERSON" + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "newman cheng is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ], + "source": "Name: newman cheng\nType: PERSON", + "target": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "alex chao", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: joshua bradley\nType: PERSON", + "target": "Name: alex chao\nType: PERSON" + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: joshua bradley\nType: PERSON", + "target": "Name: apurva mody\nType: PERSON" + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: joshua bradley\nType: PERSON", + "target": "Name: steven truitt\nType: PERSON" + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: joshua bradley\nType: PERSON", + "target": "Name: jonathan larson\nType: PERSON" + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "joshua bradley is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ], + "source": "Name: joshua bradley\nType: PERSON", + "target": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: alex chao\nType: PERSON", + "target": "Name: apurva mody\nType: PERSON" + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: alex chao\nType: PERSON", + "target": "Name: steven truitt\nType: PERSON" + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: alex chao\nType: PERSON", + "target": "Name: jonathan larson\nType: PERSON" + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "alex chao is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ], + "source": "Name: alex chao\nType: PERSON", + "target": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: apurva mody\nType: PERSON", + "target": "Name: steven truitt\nType: PERSON" + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: apurva mody\nType: PERSON", + "target": "Name: jonathan larson\nType: PERSON" + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "apurva mody is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ], + "source": "Name: apurva mody\nType: PERSON", + "target": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "src_entity_name": "steven truitt", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ], + "source": "Name: steven truitt\nType: PERSON", + "target": "Name: jonathan larson\nType: PERSON" + }, + { + "src_entity_name": "steven truitt", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "steven truitt is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ], + "source": "Name: steven truitt\nType: PERSON", + "target": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "src_entity_name": "jonathan larson", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "jonathan larson is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ], + "source": "Name: jonathan larson\nType: PERSON", + "target": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK" + }, + { + "src_entity_name": "from local to global a graph rag approach to query focused summarization", + "tgt_entity_name": "arxiv 2404 16130", + "relation_name": "", + "weight": 10.0, + "description": "the document from local to global a graph rag approach to query focused summarization is identified by the preprint number arxiv 2404 16130", + "source_ids": [ + 206 + ], + "source": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK", + "target": "Name: arxiv 2404 16130\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "from local to global a graph rag approach to query focused summarization", + "tgt_entity_name": "graph rag", + "relation_name": "", + "weight": 10.0, + "description": "the paper title explicitly names graph rag as the core approach discussed", + "source_ids": [ + 206 + ], + "source": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK", + "target": "Name: graph rag\nType: TECHNOLOGY" + }, + { + "src_entity_name": "from local to global a graph rag approach to query focused summarization", + "tgt_entity_name": "query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "the paper title explicitly names query focused summarization as the target task", + "source_ids": [ + 206 + ], + "source": "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK", + "target": "Name: query focused summarization\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "graph rag", + "tgt_entity_name": "query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "graph rag is the approach used to solve the task of query focused summarization", + "source_ids": [ + 206 + ], + "source": "Name: graph rag\nType: TECHNOLOGY", + "target": "Name: query focused summarization\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "graph rag", + "tgt_entity_name": "local", + "relation_name": "", + "weight": 7.0, + "description": "the graph rag approach is described as a transition from local to global implying it handles local data", + "source_ids": [ + 206 + ], + "source": "Name: graph rag\nType: TECHNOLOGY", + "target": "Name: local\nType: CONCEPT" + }, + { + "src_entity_name": "graph rag", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 7.0, + "description": "the graph rag approach is described as a transition from local to global implying it handles global data", + "source_ids": [ + 206 + ], + "source": "Name: graph rag\nType: TECHNOLOGY", + "target": "Name: global\nType: CONCEPT" + }, + { + "src_entity_name": "example", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 9.0, + "description": "the example task is defined by the global process of filtering for tables", + "source_ids": [ + 251 + ], + "source": "Name: global\nType: CONCEPT", + "target": "Name: example\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "yunfan gao is an author of the survey", + "source_ids": [ + 207 + ], + "source": "Name: yunfan gao\nType: PERSON", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "yun xiong", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and yun xiong are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yunfan gao\nType: PERSON", + "target": "Name: yun xiong\nType: PERSON" + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "xinyu gao", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and xinyu gao are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yunfan gao\nType: PERSON", + "target": "Name: xinyu gao\nType: PERSON" + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "kangxiang jia", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and kangxiang jia are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yunfan gao\nType: PERSON", + "target": "Name: kangxiang jia\nType: PERSON" + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "jinliu pan", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and jinliu pan are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yunfan gao\nType: PERSON", + "target": "Name: jinliu pan\nType: PERSON" + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yunfan gao\nType: PERSON", + "target": "Name: yuxi bi\nType: PERSON" + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yunfan gao\nType: PERSON", + "target": "Name: yi dai\nType: PERSON" + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yunfan gao\nType: PERSON", + "target": "Name: jiawei sun\nType: PERSON" + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yunfan gao\nType: PERSON", + "target": "Name: haofen wang\nType: PERSON" + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "yun xiong is an author of the survey", + "source_ids": [ + 207 + ], + "source": "Name: yun xiong\nType: PERSON", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "xinyu gao", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and xinyu gao are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yun xiong\nType: PERSON", + "target": "Name: xinyu gao\nType: PERSON" + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "kangxiang jia", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and kangxiang jia are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yun xiong\nType: PERSON", + "target": "Name: kangxiang jia\nType: PERSON" + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "jinliu pan", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and jinliu pan are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yun xiong\nType: PERSON", + "target": "Name: jinliu pan\nType: PERSON" + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yun xiong\nType: PERSON", + "target": "Name: yuxi bi\nType: PERSON" + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yun xiong\nType: PERSON", + "target": "Name: yi dai\nType: PERSON" + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yun xiong\nType: PERSON", + "target": "Name: jiawei sun\nType: PERSON" + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yun xiong\nType: PERSON", + "target": "Name: haofen wang\nType: PERSON" + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "xinyu gao is an author of the survey", + "source_ids": [ + 207 + ], + "source": "Name: xinyu gao\nType: PERSON", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "kangxiang jia", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and kangxiang jia are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: xinyu gao\nType: PERSON", + "target": "Name: kangxiang jia\nType: PERSON" + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "jinliu pan", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and jinliu pan are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: xinyu gao\nType: PERSON", + "target": "Name: jinliu pan\nType: PERSON" + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: xinyu gao\nType: PERSON", + "target": "Name: yuxi bi\nType: PERSON" + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: xinyu gao\nType: PERSON", + "target": "Name: yi dai\nType: PERSON" + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: xinyu gao\nType: PERSON", + "target": "Name: jiawei sun\nType: PERSON" + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: xinyu gao\nType: PERSON", + "target": "Name: haofen wang\nType: PERSON" + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "kangxiang jia is an author of the survey", + "source_ids": [ + 207 + ], + "source": "Name: kangxiang jia\nType: PERSON", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "jinliu pan", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and jinliu pan are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: kangxiang jia\nType: PERSON", + "target": "Name: jinliu pan\nType: PERSON" + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: kangxiang jia\nType: PERSON", + "target": "Name: yuxi bi\nType: PERSON" + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: kangxiang jia\nType: PERSON", + "target": "Name: yi dai\nType: PERSON" + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: kangxiang jia\nType: PERSON", + "target": "Name: jiawei sun\nType: PERSON" + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: kangxiang jia\nType: PERSON", + "target": "Name: haofen wang\nType: PERSON" + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "jinliu pan is an author of the survey", + "source_ids": [ + 207 + ], + "source": "Name: jinliu pan\nType: PERSON", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "jinliu pan and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: jinliu pan\nType: PERSON", + "target": "Name: yuxi bi\nType: PERSON" + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "jinliu pan and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: jinliu pan\nType: PERSON", + "target": "Name: yi dai\nType: PERSON" + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "jinliu pan and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: jinliu pan\nType: PERSON", + "target": "Name: jiawei sun\nType: PERSON" + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "jinliu pan and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: jinliu pan\nType: PERSON", + "target": "Name: haofen wang\nType: PERSON" + }, + { + "src_entity_name": "yuxi bi", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "yuxi bi is an author of the survey", + "source_ids": [ + 207 + ], + "source": "Name: yuxi bi\nType: PERSON", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "yuxi bi", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "yuxi bi and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yuxi bi\nType: PERSON", + "target": "Name: yi dai\nType: PERSON" + }, + { + "src_entity_name": "yuxi bi", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "yuxi bi and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yuxi bi\nType: PERSON", + "target": "Name: jiawei sun\nType: PERSON" + }, + { + "src_entity_name": "yuxi bi", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "yuxi bi and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yuxi bi\nType: PERSON", + "target": "Name: haofen wang\nType: PERSON" + }, + { + "src_entity_name": "yi dai", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "yi dai is an author of the survey", + "source_ids": [ + 207 + ], + "source": "Name: yi dai\nType: PERSON", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "yi dai", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "yi dai and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yi dai\nType: PERSON", + "target": "Name: jiawei sun\nType: PERSON" + }, + { + "src_entity_name": "yi dai", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "yi dai and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: yi dai\nType: PERSON", + "target": "Name: haofen wang\nType: PERSON" + }, + { + "src_entity_name": "jiawei sun", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "jiawei sun is an author of the survey", + "source_ids": [ + 207 + ], + "source": "Name: jiawei sun\nType: PERSON", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "jiawei sun", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "jiawei sun and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ], + "source": "Name: jiawei sun\nType: PERSON", + "target": "Name: haofen wang\nType: PERSON" + }, + { + "src_entity_name": "haofen wang", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "haofen wang is an author of the survey", + "source_ids": [ + 207 + ], + "source": "Name: haofen wang\nType: PERSON", + "target": "Name: retrieval augmented generation for large language models a survey\nType: BOOK" + }, + { + "src_entity_name": "retrieval augmented generation for large language models a survey", + "tgt_entity_name": "arxiv preprint arxiv 2312 10997", + "relation_name": "", + "weight": 10.0, + "description": "the survey is identified as the arxiv preprint with the number 2312 10997", + "source_ids": [ + 207 + ], + "source": "Name: retrieval augmented generation for large language models a survey\nType: BOOK", + "target": "Name: arxiv preprint arxiv 2312 10997\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "arxiv preprint arxiv 2312 10997", + "tgt_entity_name": "2312 10997", + "relation_name": "", + "weight": 10.0, + "description": "2312 10997 is the specific identifier for the arxiv preprint", + "source_ids": [ + 207 + ], + "source": "Name: arxiv preprint arxiv 2312 10997\nType: PUBLICATION_VENUE", + "target": "Name: 2312 10997\nType: FILE_TYPE" + }, + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "zirui guo is an author of the lightrag paper", + "source_ids": [ + 208 + ], + "source": "Name: zirui guo\nType: PERSON", + "target": "Name: lightrag\nType: PRODUCT" + }, + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "lianghao xia", + "relation_name": "", + "weight": 8.0, + "description": "zirui guo and lianghao xia are co authors on the same paper", + "source_ids": [ + 208 + ], + "source": "Name: zirui guo\nType: PERSON", + "target": "Name: lianghao xia\nType: PERSON" + }, + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "tu ao", + "relation_name": "", + "weight": 8.0, + "description": "zirui guo and tu ao are co authors on the same paper", + "source_ids": [ + 208 + ], + "source": "Name: zirui guo\nType: PERSON", + "target": "Name: tu ao\nType: PERSON" + }, + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "chao huang", + "relation_name": "", + "weight": 8.0, + "description": "zirui guo and chao huang are co authors on the same paper", + "source_ids": [ + 208 + ], + "source": "Name: zirui guo\nType: PERSON", + "target": "Name: chao huang\nType: PERSON" + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "lianghao xia is an author of the lightrag paper", + "source_ids": [ + 208 + ], + "source": "Name: lianghao xia\nType: PERSON", + "target": "Name: lightrag\nType: PRODUCT" + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "yanhua yu", + "relation_name": "", + "weight": 8.0, + "description": "lianghao xia and yanhua yu are co authors on the same paper", + "source_ids": [ + 208 + ], + "source": "Name: lianghao xia\nType: PERSON", + "target": "Name: yanhua yu\nType: PERSON" + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "tu ao", + "relation_name": "", + "weight": 8.0, + "description": "lianghao xia and tu ao are co authors on the same paper", + "source_ids": [ + 208 + ], + "source": "Name: lianghao xia\nType: PERSON", + "target": "Name: tu ao\nType: PERSON" + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "chao huang", + "relation_name": "", + "weight": 8.0, + "description": "lianghao xia and chao huang are co authors on the same paper", + "source_ids": [ + 208 + ], + "source": "Name: lianghao xia\nType: PERSON", + "target": "Name: chao huang\nType: PERSON" + }, + { + "src_entity_name": "yanhua yu", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "yanhua yu is an author of the lightrag paper", + "source_ids": [ + 208 + ], + "source": "Name: yanhua yu\nType: PERSON", + "target": "Name: lightrag\nType: PRODUCT" + }, + { + "src_entity_name": "yanhua yu", + "tgt_entity_name": "tu ao", + "relation_name": "", + "weight": 8.0, + "description": "yanhua yu and tu ao are co authors on the same paper", + "source_ids": [ + 208 + ], + "source": "Name: yanhua yu\nType: PERSON", + "target": "Name: tu ao\nType: PERSON" + }, + { + "src_entity_name": "yanhua yu", + "tgt_entity_name": "chao huang", + "relation_name": "", + "weight": 8.0, + "description": "yanhua yu and chao huang are co authors on the same paper", + "source_ids": [ + 208 + ], + "source": "Name: yanhua yu\nType: PERSON", + "target": "Name: chao huang\nType: PERSON" + }, + { + "src_entity_name": "tu ao", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "tu ao is an author of the lightrag paper", + "source_ids": [ + 208 + ], + "source": "Name: tu ao\nType: PERSON", + "target": "Name: lightrag\nType: PRODUCT" + }, + { + "src_entity_name": "tu ao", + "tgt_entity_name": "chao huang", + "relation_name": "", + "weight": 8.0, + "description": "tu ao and chao huang are co authors on the same paper", + "source_ids": [ + 208 + ], + "source": "Name: tu ao\nType: PERSON", + "target": "Name: chao huang\nType: PERSON" + }, + { + "src_entity_name": "chao huang", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "chao huang is an author of the lightrag paper", + "source_ids": [ + 208 + ], + "source": "Name: chao huang\nType: PERSON", + "target": "Name: lightrag\nType: PRODUCT" + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "arxiv e prints", + "relation_name": "", + "weight": 9.0, + "description": "lightrag was published in arxiv e prints", + "source_ids": [ + 208 + ], + "source": "Name: lightrag\nType: PRODUCT", + "target": "Name: arxiv e prints\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "arxiv2410", + "relation_name": "", + "weight": 9.0, + "description": "lightrag is identified by the arxiv identifier arxiv2410", + "source_ids": [ + 208 + ], + "source": "Name: lightrag\nType: PRODUCT", + "target": "Name: arxiv2410\nType: FILE_TYPE" + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "simple", + "relation_name": "", + "weight": 8.0, + "description": "lightrag is described as being simple", + "source_ids": [ + 208 + ], + "source": "Name: lightrag\nType: PRODUCT", + "target": "Name: simple\nType: CONCEPT" + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "fast", + "relation_name": "", + "weight": 8.0, + "description": "lightrag is described as being fast", + "source_ids": [ + 208 + ], + "source": "Name: lightrag\nType: PRODUCT", + "target": "Name: fast\nType: CONCEPT" + }, + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "bernal jim nez guti rrez is an author of the paper describing hipporag", + "source_ids": [ + 209 + ], + "source": "Name: bernal jim nez guti rrez\nType: PERSON", + "target": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "yiheng shu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: bernal jim nez guti rrez\nType: PERSON", + "target": "Name: yiheng shu\nType: PERSON" + }, + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "yu gu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: bernal jim nez guti rrez\nType: PERSON", + "target": "Name: yu gu\nType: PERSON" + }, + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "michihiro yasunaga", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: bernal jim nez guti rrez\nType: PERSON", + "target": "Name: michihiro yasunaga\nType: PERSON" + }, + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "yu su", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: bernal jim nez guti rrez\nType: PERSON", + "target": "Name: yu su\nType: PERSON" + }, + { + "src_entity_name": "yiheng shu", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "yiheng shu is an author of the paper describing hipporag", + "source_ids": [ + 209 + ], + "source": "Name: yiheng shu\nType: PERSON", + "target": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "yiheng shu", + "tgt_entity_name": "yu gu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: yiheng shu\nType: PERSON", + "target": "Name: yu gu\nType: PERSON" + }, + { + "src_entity_name": "yiheng shu", + "tgt_entity_name": "michihiro yasunaga", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: yiheng shu\nType: PERSON", + "target": "Name: michihiro yasunaga\nType: PERSON" + }, + { + "src_entity_name": "yiheng shu", + "tgt_entity_name": "yu su", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: yiheng shu\nType: PERSON", + "target": "Name: yu su\nType: PERSON" + }, + { + "src_entity_name": "yu gu", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "yu gu is an author of the paper describing hipporag", + "source_ids": [ + 209 + ], + "source": "Name: yu gu\nType: PERSON", + "target": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "yu gu", + "tgt_entity_name": "michihiro yasunaga", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: yu gu\nType: PERSON", + "target": "Name: michihiro yasunaga\nType: PERSON" + }, + { + "src_entity_name": "yu gu", + "tgt_entity_name": "yu su", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: yu gu\nType: PERSON", + "target": "Name: yu su\nType: PERSON" + }, + { + "src_entity_name": "michihiro yasunaga", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "michihiro yasunaga is an author of the paper describing hipporag", + "source_ids": [ + 209 + ], + "source": "Name: michihiro yasunaga\nType: PERSON", + "target": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "michihiro yasunaga", + "tgt_entity_name": "yu su", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ], + "source": "Name: michihiro yasunaga\nType: PERSON", + "target": "Name: yu su\nType: PERSON" + }, + { + "src_entity_name": "yu su", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "yu su is an author of the paper describing hipporag", + "source_ids": [ + 209 + ], + "source": "Name: yu su\nType: PERSON", + "target": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 10.0, + "description": "hipporag is explicitly designed to provide long term memory capabilities for large language models", + "source_ids": [ + 209 + ], + "source": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: large language models\nType: PRODUCT" + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "neurobiologically inspired long term memory", + "relation_name": "", + "weight": 10.0, + "description": "hipporag is defined as a system for neurobiologically inspired long term memory", + "source_ids": [ + 209 + ], + "source": "Name: hipporag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: neurobiologically inspired long term memory\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "taher h haveliwala", + "tgt_entity_name": "topic sensitive pagerank", + "relation_name": "", + "weight": 10.0, + "description": "taher h haveliwala is the author of the paper topic sensitive pagerank", + "source_ids": [ + 210 + ], + "source": "Name: taher h haveliwala\nType: PERSON", + "target": "Name: topic sensitive pagerank\nType: TECHNOLOGY" + }, + { + "src_entity_name": "taher h haveliwala", + "tgt_entity_name": "2002", + "relation_name": "", + "weight": 8.0, + "description": "taher h haveliwala published the paper in the year 2002", + "source_ids": [ + 210 + ], + "source": "Name: taher h haveliwala\nType: PERSON", + "target": "Name: 2002\nType: DATE" + }, + { + "src_entity_name": "topic sensitive pagerank", + "tgt_entity_name": "11th international conference on world wide web", + "relation_name": "", + "weight": 9.0, + "description": "the paper topic sensitive pagerank was presented at the 11th international conference on world wide web", + "source_ids": [ + 210 + ], + "source": "Name: topic sensitive pagerank\nType: TECHNOLOGY", + "target": "Name: 11th international conference on world wide web\nType: EVENT" + }, + { + "src_entity_name": "topic sensitive pagerank", + "tgt_entity_name": "517 526", + "relation_name": "", + "weight": 8.0, + "description": "the paper topic sensitive pagerank spans pages 517 to 526 in the proceedings", + "source_ids": [ + 210 + ], + "source": "Name: topic sensitive pagerank\nType: TECHNOLOGY", + "target": "Name: 517 526\nType: MEASUREMENT" + }, + { + "src_entity_name": "11th international conference on world wide web", + "tgt_entity_name": "world wide web", + "relation_name": "", + "weight": 9.0, + "description": "the conference is named after and focused on the world wide web technology", + "source_ids": [ + 210 + ], + "source": "Name: 11th international conference on world wide web\nType: EVENT", + "target": "Name: world wide web\nType: TECHNOLOGY" + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "yijun tian", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: xiaoxin he\nType: PERSON", + "target": "Name: yijun tian\nType: PERSON" + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "yifei sun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: xiaoxin he\nType: PERSON", + "target": "Name: yifei sun\nType: PERSON" + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "nitesh v chawla", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: xiaoxin he\nType: PERSON", + "target": "Name: nitesh v chawla\nType: PERSON" + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "thomas laurent", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: xiaoxin he\nType: PERSON", + "target": "Name: thomas laurent\nType: PERSON" + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: xiaoxin he\nType: PERSON", + "target": "Name: yann lecun\nType: PERSON" + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: xiaoxin he\nType: PERSON", + "target": "Name: xavier bresson\nType: PERSON" + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: xiaoxin he\nType: PERSON", + "target": "Name: bryan hooi\nType: PERSON" + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "xiaoxin he is an author of the paper describing g retriever", + "source_ids": [ + 211 + ], + "source": "Name: xiaoxin he\nType: PERSON", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "yifei sun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yijun tian\nType: PERSON", + "target": "Name: yifei sun\nType: PERSON" + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "nitesh v chawla", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yijun tian\nType: PERSON", + "target": "Name: nitesh v chawla\nType: PERSON" + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "thomas laurent", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yijun tian\nType: PERSON", + "target": "Name: thomas laurent\nType: PERSON" + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yijun tian\nType: PERSON", + "target": "Name: yann lecun\nType: PERSON" + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yijun tian\nType: PERSON", + "target": "Name: xavier bresson\nType: PERSON" + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yijun tian\nType: PERSON", + "target": "Name: bryan hooi\nType: PERSON" + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "yijun tian is an author of the paper describing g retriever", + "source_ids": [ + 211 + ], + "source": "Name: yijun tian\nType: PERSON", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "nitesh v chawla", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yifei sun\nType: PERSON", + "target": "Name: nitesh v chawla\nType: PERSON" + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "thomas laurent", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yifei sun\nType: PERSON", + "target": "Name: thomas laurent\nType: PERSON" + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yifei sun\nType: PERSON", + "target": "Name: yann lecun\nType: PERSON" + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yifei sun\nType: PERSON", + "target": "Name: xavier bresson\nType: PERSON" + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yifei sun\nType: PERSON", + "target": "Name: bryan hooi\nType: PERSON" + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "yifei sun is an author of the paper describing g retriever", + "source_ids": [ + 211 + ], + "source": "Name: yifei sun\nType: PERSON", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "thomas laurent", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: nitesh v chawla\nType: PERSON", + "target": "Name: thomas laurent\nType: PERSON" + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: nitesh v chawla\nType: PERSON", + "target": "Name: yann lecun\nType: PERSON" + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: nitesh v chawla\nType: PERSON", + "target": "Name: xavier bresson\nType: PERSON" + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: nitesh v chawla\nType: PERSON", + "target": "Name: bryan hooi\nType: PERSON" + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "nitesh v chawla is an author of the paper describing g retriever", + "source_ids": [ + 211 + ], + "source": "Name: nitesh v chawla\nType: PERSON", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "thomas laurent", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: thomas laurent\nType: PERSON", + "target": "Name: yann lecun\nType: PERSON" + }, + { + "src_entity_name": "thomas laurent", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: thomas laurent\nType: PERSON", + "target": "Name: xavier bresson\nType: PERSON" + }, + { + "src_entity_name": "thomas laurent", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: thomas laurent\nType: PERSON", + "target": "Name: bryan hooi\nType: PERSON" + }, + { + "src_entity_name": "thomas laurent", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "thomas laurent is an author of the paper describing g retriever", + "source_ids": [ + 211 + ], + "source": "Name: thomas laurent\nType: PERSON", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "yann lecun", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yann lecun\nType: PERSON", + "target": "Name: xavier bresson\nType: PERSON" + }, + { + "src_entity_name": "yann lecun", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: yann lecun\nType: PERSON", + "target": "Name: bryan hooi\nType: PERSON" + }, + { + "src_entity_name": "yann lecun", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "yann lecun is an author of the paper describing g retriever", + "source_ids": [ + 211 + ], + "source": "Name: yann lecun\nType: PERSON", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "xavier bresson", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ], + "source": "Name: xavier bresson\nType: PERSON", + "target": "Name: bryan hooi\nType: PERSON" + }, + { + "src_entity_name": "xavier bresson", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "xavier bresson is an author of the paper describing g retriever", + "source_ids": [ + 211 + ], + "source": "Name: xavier bresson\nType: PERSON", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "bryan hooi", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "bryan hooi is an author of the paper describing g retriever", + "source_ids": [ + 211 + ], + "source": "Name: bryan hooi\nType: PERSON", + "target": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "arxiv 2402 07630", + "relation_name": "", + "weight": 9.0, + "description": "g retriever is identified by the preprint number arxiv 2402 07630", + "source_ids": [ + 211 + ], + "source": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: arxiv 2402 07630\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "textual graph understanding", + "relation_name": "", + "weight": 10.0, + "description": "g retriever is designed to solve the problem of textual graph understanding", + "source_ids": [ + 211 + ], + "source": "Name: g retriever\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: textual graph understanding\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "yucheng hu", + "tgt_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "relation_name": "", + "weight": 10.0, + "description": "yucheng hu is an author of the survey paper", + "source_ids": [ + 212 + ], + "source": "Name: yucheng hu\nType: PERSON", + "target": "Name: rag and rau a survey on retrieval augmented language model in natural language processing\nType: BOOK" + }, + { + "src_entity_name": "yuxing lu", + "tgt_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "relation_name": "", + "weight": 10.0, + "description": "yuxing lu is an author of the survey paper", + "source_ids": [ + 212 + ], + "source": "Name: yuxing lu\nType: PERSON", + "target": "Name: rag and rau a survey on retrieval augmented language model in natural language processing\nType: BOOK" + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "natural language processing", + "relation_name": "", + "weight": 8.0, + "description": "the survey paper focuses on the research field of natural language processing", + "source_ids": [ + 212 + ], + "source": "Name: rag and rau a survey on retrieval augmented language model in natural language processing\nType: BOOK", + "target": "Name: natural language processing\nType: RESEARCH_FIELD" + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "arxiv 2404 19543", + "relation_name": "", + "weight": 10.0, + "description": "the survey paper is identified by the preprint number arxiv 2404 19543", + "source_ids": [ + 212 + ], + "source": "Name: rag and rau a survey on retrieval augmented language model in natural language processing\nType: BOOK", + "target": "Name: arxiv 2404 19543\nType: PRODUCT" + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "retrieval augmented language model", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper is about the retrieval augmented language model technology", + "source_ids": [ + 212 + ], + "source": "Name: rag and rau a survey on retrieval augmented language model in natural language processing\nType: BOOK", + "target": "Name: retrieval augmented language model\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "soyeong jeong", + "tgt_entity_name": "adaptive rag", + "relation_name": "", + "weight": 9.0, + "description": "soyeong jeong is an author of the work on adaptive rag", + "source_ids": [ + 213 + ], + "source": "Name: soyeong jeong\nType: PERSON", + "target": "Name: adaptive rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "jinheon baek", + "tgt_entity_name": "adaptive rag", + "relation_name": "", + "weight": 9.0, + "description": "jinheon baek is an author of the work on adaptive rag", + "source_ids": [ + 213 + ], + "source": "Name: jinheon baek\nType: PERSON", + "target": "Name: adaptive rag\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "adaptive rag", + "tgt_entity_name": "retrieval augmented large language models", + "relation_name": "", + "weight": 10.0, + "description": "adaptive rag is designed to adapt retrieval augmented large language models", + "source_ids": [ + 213 + ], + "source": "Name: adaptive rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: retrieval augmented large language models\nType: MODEL_OR_ARCHITECTURE" + }, + { + "src_entity_name": "adaptive rag", + "tgt_entity_name": "question complexity", + "relation_name": "", + "weight": 10.0, + "description": "adaptive rag adapts specifically through the lens of question complexity", + "source_ids": [ + 213 + ], + "source": "Name: adaptive rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: question complexity\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "adaptive rag", + "tgt_entity_name": "learning", + "relation_name": "", + "weight": 8.0, + "description": "adaptive rag utilizes learning to adapt its retrieval mechanisms", + "source_ids": [ + 213 + ], + "source": "Name: adaptive rag\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: learning\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "jane dwivedi yu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: timo schick\nType: PERSON", + "target": "Name: jane dwivedi yu\nType: PERSON" + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "roberto dess", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: timo schick\nType: PERSON", + "target": "Name: roberto dess\nType: PERSON" + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "roberta raileanu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: timo schick\nType: PERSON", + "target": "Name: roberta raileanu\nType: PERSON" + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "maria lomeli", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: timo schick\nType: PERSON", + "target": "Name: maria lomeli\nType: PERSON" + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: timo schick\nType: PERSON", + "target": "Name: eric hambro\nType: PERSON" + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: timo schick\nType: PERSON", + "target": "Name: luke zettlemoyer\nType: PERSON" + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: timo schick\nType: PERSON", + "target": "Name: nicola cancedda\nType: PERSON" + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: timo schick\nType: PERSON", + "target": "Name: thomas scialom\nType: PERSON" + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "roberto dess", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: jane dwivedi yu\nType: PERSON", + "target": "Name: roberto dess\nType: PERSON" + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "roberta raileanu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: jane dwivedi yu\nType: PERSON", + "target": "Name: roberta raileanu\nType: PERSON" + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "maria lomeli", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: jane dwivedi yu\nType: PERSON", + "target": "Name: maria lomeli\nType: PERSON" + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: jane dwivedi yu\nType: PERSON", + "target": "Name: eric hambro\nType: PERSON" + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: jane dwivedi yu\nType: PERSON", + "target": "Name: luke zettlemoyer\nType: PERSON" + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: jane dwivedi yu\nType: PERSON", + "target": "Name: nicola cancedda\nType: PERSON" + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: jane dwivedi yu\nType: PERSON", + "target": "Name: thomas scialom\nType: PERSON" + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "roberta raileanu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberto dess\nType: PERSON", + "target": "Name: roberta raileanu\nType: PERSON" + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "maria lomeli", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberto dess\nType: PERSON", + "target": "Name: maria lomeli\nType: PERSON" + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberto dess\nType: PERSON", + "target": "Name: eric hambro\nType: PERSON" + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberto dess\nType: PERSON", + "target": "Name: luke zettlemoyer\nType: PERSON" + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberto dess\nType: PERSON", + "target": "Name: nicola cancedda\nType: PERSON" + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberto dess\nType: PERSON", + "target": "Name: thomas scialom\nType: PERSON" + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "maria lomeli", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberta raileanu\nType: PERSON", + "target": "Name: maria lomeli\nType: PERSON" + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberta raileanu\nType: PERSON", + "target": "Name: eric hambro\nType: PERSON" + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberta raileanu\nType: PERSON", + "target": "Name: luke zettlemoyer\nType: PERSON" + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberta raileanu\nType: PERSON", + "target": "Name: nicola cancedda\nType: PERSON" + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: roberta raileanu\nType: PERSON", + "target": "Name: thomas scialom\nType: PERSON" + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: maria lomeli\nType: PERSON", + "target": "Name: eric hambro\nType: PERSON" + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: maria lomeli\nType: PERSON", + "target": "Name: luke zettlemoyer\nType: PERSON" + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: maria lomeli\nType: PERSON", + "target": "Name: nicola cancedda\nType: PERSON" + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: maria lomeli\nType: PERSON", + "target": "Name: thomas scialom\nType: PERSON" + }, + { + "src_entity_name": "eric hambro", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: eric hambro\nType: PERSON", + "target": "Name: luke zettlemoyer\nType: PERSON" + }, + { + "src_entity_name": "eric hambro", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: eric hambro\nType: PERSON", + "target": "Name: nicola cancedda\nType: PERSON" + }, + { + "src_entity_name": "eric hambro", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: eric hambro\nType: PERSON", + "target": "Name: thomas scialom\nType: PERSON" + }, + { + "src_entity_name": "luke zettlemoyer", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: luke zettlemoyer\nType: PERSON", + "target": "Name: nicola cancedda\nType: PERSON" + }, + { + "src_entity_name": "luke zettlemoyer", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: luke zettlemoyer\nType: PERSON", + "target": "Name: thomas scialom\nType: PERSON" + }, + { + "src_entity_name": "nicola cancedda", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ], + "source": "Name: nicola cancedda\nType: PERSON", + "target": "Name: thomas scialom\nType: PERSON" + }, + { + "src_entity_name": "metrics", + "tgt_entity_name": "main experiments", + "relation_name": "", + "weight": 10.0, + "description": "metrics are explicitly stated to be used in the main experiments", + "source_ids": [ + 222 + ], + "source": "Name: main experiments\nType: EVENT", + "target": "Name: metrics\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "definitions", + "tgt_entity_name": "metrics", + "relation_name": "", + "weight": 9.0, + "description": "definitions are provided for the metrics", + "source_ids": [ + 222 + ], + "source": "Name: metrics\nType: EVALUATION_METRIC", + "target": "Name: definitions\nType: CONCEPT" + }, + { + "src_entity_name": "calculation procedures", + "tgt_entity_name": "metrics", + "relation_name": "", + "weight": 9.0, + "description": "calculation procedures are provided for the metrics", + "source_ids": [ + 222 + ], + "source": "Name: metrics\nType: EVALUATION_METRIC", + "target": "Name: calculation procedures\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "definitions", + "tgt_entity_name": "calculation procedures", + "relation_name": "", + "weight": 8.0, + "description": "both definitions and calculation procedures are provided together for the metrics in the text", + "source_ids": [ + 222 + ], + "source": "Name: definitions\nType: CONCEPT", + "target": "Name: calculation procedures\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "standard rag models", + "tgt_entity_name": "natural language responses", + "relation_name": "", + "weight": 10.0, + "description": "standard rag models generate natural language responses as their output", + "source_ids": [ + 223 + ], + "source": "Name: standard rag models\nType: TECHNOLOGY", + "target": "Name: natural language responses\nType: PRODUCT" + }, + { + "src_entity_name": "a 1 1 answer extraction and normalization", + "tgt_entity_name": "standard rag models", + "relation_name": "", + "weight": 9.0, + "description": "the section a 1 1 answer extraction and normalization describes the behavior of standard rag models", + "source_ids": [ + 223 + ], + "source": "Name: standard rag models\nType: TECHNOLOGY", + "target": "Name: a 1 1 answer extraction and normalization\nType: SECTION_TITLE" + }, + { + "src_entity_name": "natural language responses", + "tgt_entity_name": "ground truth labels", + "relation_name": "", + "weight": 8.0, + "description": "natural language responses are compared against ground truth labels a process that can lead to false negatives if not normalized", + "source_ids": [ + 223 + ], + "source": "Name: natural language responses\nType: PRODUCT", + "target": "Name: ground truth labels\nType: PRODUCT" + }, + { + "src_entity_name": "natural language responses", + "tgt_entity_name": "the answer is", + "relation_name": "", + "weight": 10.0, + "description": "the answer is is cited as an example of the extraneous conversational text found in natural language responses", + "source_ids": [ + 223 + ], + "source": "Name: natural language responses\nType: PRODUCT", + "target": "Name: the answer is\nType: PRODUCT" + }, + { + "src_entity_name": "a 1 1 answer extraction and normalization", + "tgt_entity_name": "ground truth labels", + "relation_name": "", + "weight": 9.0, + "description": "the section a 1 1 answer extraction and normalization discusses the comparison with ground truth labels", + "source_ids": [ + 223 + ], + "source": "Name: ground truth labels\nType: PRODUCT", + "target": "Name: a 1 1 answer extraction and normalization\nType: SECTION_TITLE" + }, + { + "src_entity_name": "ground truth labels", + "tgt_entity_name": "option a", + "relation_name": "", + "weight": 10.0, + "description": "option a is cited as an example of a ground truth label", + "source_ids": [ + 223 + ], + "source": "Name: ground truth labels\nType: PRODUCT", + "target": "Name: option a\nType: PRODUCT" + }, + { + "src_entity_name": "ground truth labels", + "tgt_entity_name": "12 5", + "relation_name": "", + "weight": 10.0, + "description": "12 5 is cited as an example of a ground truth label", + "source_ids": [ + 223 + ], + "source": "Name: ground truth labels\nType: PRODUCT", + "target": "Name: 12 5\nType: MEASUREMENT" + }, + { + "src_entity_name": "llm based extraction step", + "tgt_entity_name": "rag system", + "relation_name": "", + "weight": 9.0, + "description": "the llm based extraction step is employed to process the output from the rag system", + "source_ids": [ + 224 + ], + "source": "Name: llm based extraction step\nType: METHOD_OR_TECHNIQUE", + "target": "Name: rag system\nType: SYSTEM" + }, + { + "src_entity_name": "official evaluation protocols", + "tgt_entity_name": "llm based extraction step", + "relation_name": "", + "weight": 9.0, + "description": "the llm based extraction step is employed following official evaluation protocols", + "source_ids": [ + 224 + ], + "source": "Name: llm based extraction step\nType: METHOD_OR_TECHNIQUE", + "target": "Name: official evaluation protocols\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "y raw", + "relation_name": "", + "weight": 10.0, + "description": "llmextract extracts key information from y raw", + "source_ids": [ + 224 + ], + "source": "Name: llmextract\nType: SOFTWARE", + "target": "Name: y raw\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "y hat", + "relation_name": "", + "weight": 10.0, + "description": "llmextract is used to define the extracted answer y hat", + "source_ids": [ + 224 + ], + "source": "Name: llmextract\nType: SOFTWARE", + "target": "Name: y hat\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "equation 16", + "tgt_entity_name": "llmextract", + "relation_name": "", + "weight": 9.0, + "description": "equation 16 utilizes llmextract to define the extracted answer", + "source_ids": [ + 224 + ], + "source": "Name: llmextract\nType: SOFTWARE", + "target": "Name: equation 16\nType: EQUATION_OR_FORMULA" + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "key information", + "relation_name": "", + "weight": 10.0, + "description": "llmextract is responsible for extracting key information from the raw response", + "source_ids": [ + 224 + ], + "source": "Name: llmextract\nType: SOFTWARE", + "target": "Name: key information\nType: CONCEPT" + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "key entity", + "relation_name": "", + "weight": 8.0, + "description": "key entity is a specific type of key information extracted by llmextract", + "source_ids": [ + 224 + ], + "source": "Name: llmextract\nType: SOFTWARE", + "target": "Name: key entity\nType: CONCEPT" + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "span extraction", + "relation_name": "", + "weight": 8.0, + "description": "span extraction is the context in which llmextract extracts key entities", + "source_ids": [ + 224 + ], + "source": "Name: llmextract\nType: SOFTWARE", + "target": "Name: span extraction\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "instruction", + "relation_name": "", + "weight": 10.0, + "description": "llmextract uses the instruction parameter to perform the extraction", + "source_ids": [ + 224 + ], + "source": "Name: llmextract\nType: SOFTWARE", + "target": "Name: instruction\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "y raw", + "tgt_entity_name": "y gold", + "relation_name": "", + "weight": 8.0, + "description": "y raw and y gold are compared after normalization to calculate the evaluation metric", + "source_ids": [ + 224 + ], + "source": "Name: y raw\nType: PARAMETER_OR_VARIABLE", + "target": "Name: y gold\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "n", + "tgt_entity_name": "y gold", + "relation_name": "", + "weight": 9.0, + "description": "n is applied to normalize y gold", + "source_ids": [ + 224 + ], + "source": "Name: y gold\nType: PARAMETER_OR_VARIABLE", + "target": "Name: n\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "n", + "tgt_entity_name": "y hat", + "relation_name": "", + "weight": 9.0, + "description": "n is applied to normalize y hat", + "source_ids": [ + 224 + ], + "source": "Name: y hat\nType: PARAMETER_OR_VARIABLE", + "target": "Name: n\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "n", + "tgt_entity_name": "lowercasing", + "relation_name": "", + "weight": 9.0, + "description": "lowercasing is an example of the standard normalization n applied to the data", + "source_ids": [ + 224 + ], + "source": "Name: n\nType: METHOD_OR_TECHNIQUE", + "target": "Name: lowercasing\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "n", + "tgt_entity_name": "removing punctuation", + "relation_name": "", + "weight": 9.0, + "description": "removing punctuation is an example of the standard normalization n applied to the data", + "source_ids": [ + 224 + ], + "source": "Name: n\nType: METHOD_OR_TECHNIQUE", + "target": "Name: removing punctuation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "qa performance metrics", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'QA Performance Metrics' is the primary topic covered in section A.1.2.", + "source_ids": [ + 226 + ], + "source": "Name: a.1.2 qa performance metrics\nType: SECTION_TITLE", + "target": "Name: qa performance metrics\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "ground truth (y_gold)", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 9.5, + "description": "The variable 'Ground Truth' is a fundamental component used in the definitions provided in section A.1.2.", + "source_ids": [ + 226 + ], + "source": "Name: a.1.2 qa performance metrics\nType: SECTION_TITLE", + "target": "Name: ground truth (y_gold)\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "model response (y_raw)", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 9.5, + "description": "The variable 'Model Response' is a fundamental component used in the definitions provided in section A.1.2.", + "source_ids": [ + 226 + ], + "source": "Name: a.1.2 qa performance metrics\nType: SECTION_TITLE", + "target": "Name: model response (y_raw)\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "substring inclusion relation", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 9.0, + "description": "The technique 'Substring Inclusion Relation' is the core logic applied in section A.1.2 to compute the metrics.", + "source_ids": [ + 226 + ], + "source": "Name: a.1.2 qa performance metrics\nType: SECTION_TITLE", + "target": "Name: substring inclusion relation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "accuracy inclusion based", + "tgt_entity_name": "prior works", + "relation_name": "", + "weight": 9.0, + "description": "accuracy inclusion based is utilized following prior works cited as 3 34 46", + "source_ids": [ + 227 + ], + "source": "Name: accuracy inclusion based\nType: EVALUATION_METRIC", + "target": "Name: prior works\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "r", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 10.0, + "description": "r recall is a component used in the calculation of the f1 score", + "source_ids": [ + 231 + ], + "source": "Name: r\nType: PARAMETER_OR_VARIABLE", + "target": "Name: f1\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "retrieval quality", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 9.5, + "description": "Retrieval Quality is the primary concept evaluated within section A.1.3.", + "source_ids": [ + 234 + ], + "source": "Name: a.1.3 retrieval recall\nType: SECTION_TITLE", + "target": "Name: retrieval quality\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "pdf blocks", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "PDF Blocks serve as the granular units of analysis for the evaluation described in section A.1.3.", + "source_ids": [ + 234 + ], + "source": "Name: a.1.3 retrieval recall\nType: SECTION_TITLE", + "target": "Name: pdf blocks\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "query q", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 8.5, + "description": "The variable 'Query q' is a key parameter defined in the context of section A.1.3.", + "source_ids": [ + 234 + ], + "source": "Name: a.1.3 retrieval recall\nType: SECTION_TITLE", + "target": "Name: query q\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "b_gold", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "The variable 'B_gold' represents the ground truth set utilized in the definition provided in section A.1.3.", + "source_ids": [ + 234 + ], + "source": "Name: a.1.3 retrieval recall\nType: SECTION_TITLE", + "target": "Name: b_gold\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "b_ret", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "The variable 'B_ret' represents the retrieved set utilized in the definition provided in section A.1.3.", + "source_ids": [ + 234 + ], + "source": "Name: a.1.3 retrieval recall\nType: SECTION_TITLE", + "target": "Name: b_ret\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "recall_ret", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 10.0, + "description": "The metric 'Recall_ret' is the central formula and subject explicitly defined in section A.1.3.", + "source_ids": [ + 234 + ], + "source": "Name: a.1.3 retrieval recall\nType: SECTION_TITLE", + "target": "Name: recall_ret\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "ground truth block", + "tgt_entity_name": "candidate pool", + "relation_name": "", + "weight": 9.0, + "description": "a ground truth block is considered unretrievable if it does not exist in the candidate pool", + "source_ids": [ + 236 + ], + "source": "Name: ground truth block\nType: TASK_OR_PROBLEM", + "target": "Name: candidate pool\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "ground truth block", + "tgt_entity_name": "recall", + "relation_name": "", + "weight": 10.0, + "description": "the loss of a ground truth block results in a recall contribution of 0", + "source_ids": [ + 236 + ], + "source": "Name: ground truth block\nType: TASK_OR_PROBLEM", + "target": "Name: recall\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "recall", + "tgt_entity_name": "0", + "relation_name": "", + "weight": 10.0, + "description": "the recall contribution is explicitly stated as 0 when a ground truth block is lost", + "source_ids": [ + 236 + ], + "source": "Name: recall\nType: EVALUATION_METRIC", + "target": "Name: 0\nType: NUMBER" + }, + { + "src_entity_name": "qwen3 8b", + "tgt_entity_name": "ground truth images", + "relation_name": "", + "weight": 7.0, + "description": "the 8b counterpart related to qwen3 8b context failed to answer correctly even with ground truth images", + "source_ids": [ + 238 + ], + "source": "Name: qwen3 8b\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: ground truth images\nType: IMAGE" + }, + { + "src_entity_name": "qwen3 8b", + "tgt_entity_name": "reference 60", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 8b is cited in reference 60", + "source_ids": [ + 238 + ], + "source": "Name: qwen3 8b\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: reference 60\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "qwen2 5vl 30b", + "tgt_entity_name": "reference 4", + "relation_name": "", + "weight": 10.0, + "description": "qwen2 5vl 30b is cited in reference 4", + "source_ids": [ + 238 + ], + "source": "Name: qwen2 5vl 30b\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: reference 4\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "qwen3 embedding 0 6b", + "tgt_entity_name": "text embedding", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 embedding 0 6b is used for text embedding", + "source_ids": [ + 238 + ], + "source": "Name: qwen3 embedding 0 6b\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: text embedding\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "qwen3 embedding 0 6b", + "tgt_entity_name": "reference 64", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 embedding 0 6b is cited in reference 64", + "source_ids": [ + 238 + ], + "source": "Name: qwen3 embedding 0 6b\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: reference 64\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "gme qwen2 vl 2b instruct", + "tgt_entity_name": "multi modal embedding", + "relation_name": "", + "weight": 10.0, + "description": "gme qwen2 vl 2b instruct is used for multi modal embedding", + "source_ids": [ + 238 + ], + "source": "Name: gme qwen2 vl 2b instruct\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: multi modal embedding\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "gme qwen2 vl 2b instruct", + "tgt_entity_name": "reference 63", + "relation_name": "", + "weight": 10.0, + "description": "gme qwen2 vl 2b instruct is cited in reference 63", + "source_ids": [ + 238 + ], + "source": "Name: gme qwen2 vl 2b instruct\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: reference 63\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "qwen3 reranker 4b", + "tgt_entity_name": "reranking", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 reranker 4b is used for reranking", + "source_ids": [ + 238 + ], + "source": "Name: qwen3 reranker 4b\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: reranking\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "qwen3 reranker 4b", + "tgt_entity_name": "reference 64", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 reranker 4b is cited in reference 64", + "source_ids": [ + 238 + ], + "source": "Name: qwen3 reranker 4b\nType: MODEL_OR_ARCHITECTURE", + "target": "Name: reference 64\nType: PUBLICATION_VENUE" + }, + { + "src_entity_name": "linux", + "tgt_entity_name": "intel xeon 2 0ghz cpu", + "relation_name": "", + "weight": 9.0, + "description": "the linux operating system runs on a server equipped with an intel xeon 2 0ghz cpu", + "source_ids": [ + 238 + ], + "source": "Name: linux\nType: SOFTWARE", + "target": "Name: intel xeon 2 0ghz cpu\nType: HARDWARE" + }, + { + "src_entity_name": "linux", + "tgt_entity_name": "nvidia geforce rtx a5000", + "relation_name": "", + "weight": 9.0, + "description": "the linux operating system runs on a server equipped with nvidia geforce rtx a5000 gpus", + "source_ids": [ + 238 + ], + "source": "Name: linux\nType: SOFTWARE", + "target": "Name: nvidia geforce rtx a5000\nType: HARDWARE" + }, + { + "src_entity_name": "linux", + "tgt_entity_name": "high performance server", + "relation_name": "", + "weight": 9.0, + "description": "the linux operating system runs on the high performance server", + "source_ids": [ + 238 + ], + "source": "Name: linux\nType: SOFTWARE", + "target": "Name: high performance server\nType: LOCATION" + }, + { + "src_entity_name": "intel xeon 2 0ghz cpu", + "tgt_entity_name": "1024gb", + "relation_name": "", + "weight": 8.0, + "description": "the server with the intel xeon 2 0ghz cpu has 1024gb of memory", + "source_ids": [ + 238 + ], + "source": "Name: intel xeon 2 0ghz cpu\nType: HARDWARE", + "target": "Name: 1024gb\nType: MEASUREMENT" + }, + { + "src_entity_name": "nvidia geforce rtx a5000", + "tgt_entity_name": "24 gb", + "relation_name": "", + "weight": 9.0, + "description": "each nvidia geforce rtx a5000 gpu has 24 gb of vram", + "source_ids": [ + 238 + ], + "source": "Name: nvidia geforce rtx a5000\nType: HARDWARE", + "target": "Name: 24 gb\nType: MEASUREMENT" + }, + { + "src_entity_name": "8b counterpart", + "tgt_entity_name": "performance deficits", + "relation_name": "", + "weight": 10.0, + "description": "the 8b counterpart exhibited performance deficits", + "source_ids": [ + 238 + ], + "source": "Name: 8b counterpart\nType: MEASUREMENT", + "target": "Name: performance deficits\nType: CONCEPT" + }, + { + "src_entity_name": "prompts", + "tgt_entity_name": "a.3 prompts", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Prompts' is the primary topic of section A.3.", + "source_ids": [ + 239 + ], + "source": "Name: a.3 prompts\nType: SECTION_TITLE", + "target": "Name: prompts\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "figure 10", + "tgt_entity_name": "agent based query classification", + "relation_name": "", + "weight": 10.0, + "description": "figure 10 presents the prompts for agent based query classification", + "source_ids": [ + 240 + ], + "source": "Name: agent based query classification\nType: TASK_OR_PROBLEM", + "target": "Name: figure 10\nType: IMAGE" + }, + { + "src_entity_name": "prompts", + "tgt_entity_name": "agent based query classification", + "relation_name": "", + "weight": 10.0, + "description": "prompts are designed specifically for agent based query classification", + "source_ids": [ + 240 + ], + "source": "Name: agent based query classification\nType: TASK_OR_PROBLEM", + "target": "Name: prompts\nType: PRODUCT" + }, + { + "src_entity_name": "figure 11", + "tgt_entity_name": "question decomposition", + "relation_name": "", + "weight": 10.0, + "description": "figure 11 presents the prompts for question decomposition", + "source_ids": [ + 240 + ], + "source": "Name: question decomposition\nType: TASK_OR_PROBLEM", + "target": "Name: figure 11\nType: IMAGE" + }, + { + "src_entity_name": "prompts", + "tgt_entity_name": "question decomposition", + "relation_name": "", + "weight": 10.0, + "description": "prompts are designed specifically for question decomposition", + "source_ids": [ + 240 + ], + "source": "Name: question decomposition\nType: TASK_OR_PROBLEM", + "target": "Name: prompts\nType: PRODUCT" + }, + { + "src_entity_name": "figure 12", + "tgt_entity_name": "filter operator generation", + "relation_name": "", + "weight": 10.0, + "description": "figure 12 contains the prompt used for filter operator generation", + "source_ids": [ + 259 + ], + "source": "Name: filter operator generation\nType: TASK_OR_PROBLEM", + "target": "Name: figure 12\nType: IMAGE" + }, + { + "src_entity_name": "prompts", + "tgt_entity_name": "filter operator generation", + "relation_name": "", + "weight": 10.0, + "description": "prompts are designed specifically for filter operator generation", + "source_ids": [ + 240 + ], + "source": "Name: filter operator generation\nType: TASK_OR_PROBLEM", + "target": "Name: prompts\nType: PRODUCT" + }, + { + "src_entity_name": "figure 13", + "tgt_entity_name": "entity resolution judgment", + "relation_name": "", + "weight": 10.0, + "description": "figure 13 illustrates the prompt for entity resolution judgment", + "source_ids": [ + 240 + ], + "source": "Name: entity resolution judgment\nType: TASK_OR_PROBLEM", + "target": "Name: figure 13\nType: IMAGE" + }, + { + "src_entity_name": "entity resolution judgment", + "tgt_entity_name": "graph construction phase", + "relation_name": "", + "weight": 9.0, + "description": "entity resolution judgment is performed during the graph construction phase", + "source_ids": [ + 240 + ], + "source": "Name: entity resolution judgment\nType: TASK_OR_PROBLEM", + "target": "Name: graph construction phase\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "prompts", + "tgt_entity_name": "entity resolution judgment", + "relation_name": "", + "weight": 10.0, + "description": "a prompt is employed for entity resolution judgment", + "source_ids": [ + 240 + ], + "source": "Name: entity resolution judgment\nType: TASK_OR_PROBLEM", + "target": "Name: prompts\nType: PRODUCT" + }, + { + "src_entity_name": "figure 11", + "tgt_entity_name": "query decomposition", + "relation_name": "", + "weight": 10.0, + "description": "figure 11 contains the prompt specifically for the task of query decomposition", + "source_ids": [ + 256 + ], + "source": "Name: figure 11\nType: IMAGE", + "target": "Name: query decomposition\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "examples", + "tgt_entity_name": "figure 13", + "relation_name": "", + "weight": 8.0, + "description": "examples were omitted from figure 13 due to lack of space", + "source_ids": [ + 284 + ], + "source": "Name: figure 13\nType: IMAGE", + "target": "Name: examples\nType: DATASET_OR_CORPUS" + }, + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "simple", + "relation_name": "", + "weight": 9.0, + "description": "the expert query analyzer classifies questions into the simple category", + "source_ids": [ + 241 + ], + "source": "Name: expert query analyzer\nType: PERSON", + "target": "Name: simple\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "user", + "relation_name": "", + "weight": 8.0, + "description": "the expert query analyzer processes questions submitted by the user", + "source_ids": [ + 241 + ], + "source": "Name: expert query analyzer\nType: PERSON", + "target": "Name: user\nType: PERSON" + }, + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "json object", + "relation_name": "", + "weight": 9.0, + "description": "the expert query analyzer must respond using the specified json object format", + "source_ids": [ + 241 + ], + "source": "Name: expert query analyzer\nType: PERSON", + "target": "Name: json object\nType: FILE_TYPE" + }, + { + "src_entity_name": "assistant", + "tgt_entity_name": "user", + "relation_name": "", + "weight": 10.0, + "description": "the assistant responds to the user", + "source_ids": [ + 258 + ], + "source": "Name: user\nType: PERSON", + "target": "Name: assistant\nType: PERSON" + }, + { + "src_entity_name": "ai assistant", + "tgt_entity_name": "json object", + "relation_name": "", + "weight": 10.0, + "description": "the ai assistant must return a single valid json object as its output", + "source_ids": [ + 258 + ], + "source": "Name: json object\nType: FILE_TYPE", + "target": "Name: ai assistant\nType: PERSON" + }, + { + "src_entity_name": "assistant", + "tgt_entity_name": "json object", + "relation_name": "", + "weight": 10.0, + "description": "the assistant must output a json object", + "source_ids": [ + 258 + ], + "source": "Name: json object\nType: FILE_TYPE", + "target": "Name: assistant\nType: PERSON" + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "json object", + "relation_name": "", + "weight": 9.0, + "description": "the entity resolution adjudicator must output the result in a json object format", + "source_ids": [ + 262 + ], + "source": "Name: json object\nType: FILE_TYPE", + "target": "Name: entity resolution adjudicator\nType: PERSON" + }, + { + "src_entity_name": "json object", + "tgt_entity_name": "id", + "relation_name": "", + "weight": 8.0, + "description": "the json object contains the id of the matching candidate", + "source_ids": [ + 262 + ], + "source": "Name: json object\nType: FILE_TYPE", + "target": "Name: id\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "json object", + "tgt_entity_name": "explanation", + "relation_name": "", + "weight": 8.0, + "description": "the json object contains the explanation for the decision", + "source_ids": [ + 262 + ], + "source": "Name: json object\nType: FILE_TYPE", + "target": "Name: explanation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "information", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "information is retrieved from the document", + "source_ids": [ + 243 + ], + "source": "Name: information\nType: CONCEPT", + "target": "Name: document\nType: CONCEPT" + }, + { + "src_entity_name": "paragraph", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "a paragraph is a part of a document", + "source_ids": [ + 243 + ], + "source": "Name: document\nType: CONCEPT", + "target": "Name: paragraph\nType: SECTION_TITLE" + }, + { + "src_entity_name": "table", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "a table is a part of a document", + "source_ids": [ + 243 + ], + "source": "Name: document\nType: CONCEPT", + "target": "Name: table\nType: SECTION_TITLE" + }, + { + "src_entity_name": "figure", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "a figure is a part of a document", + "source_ids": [ + 243 + ], + "source": "Name: document\nType: CONCEPT", + "target": "Name: figure\nType: SECTION_TITLE" + }, + { + "src_entity_name": "5", + "tgt_entity_name": "latinos", + "relation_name": "", + "weight": 9.0, + "description": "the percentage 5 specifically refers to a subset of the latino population", + "source_ids": [ + 246 + ], + "source": "Name: 5\nType: PERCENTAGE", + "target": "Name: latinos\nType: NATIONALITY" + }, + { + "src_entity_name": "latinos", + "tgt_entity_name": "economic upward mobility", + "relation_name": "", + "weight": 10.0, + "description": "latinos are the group whose perspective on economic upward mobility for their children is being examined", + "source_ids": [ + 246 + ], + "source": "Name: latinos\nType: NATIONALITY", + "target": "Name: economic upward mobility\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "latinos", + "tgt_entity_name": "children", + "relation_name": "", + "weight": 10.0, + "description": "the children belong to the latino demographic group mentioned in the text", + "source_ids": [ + 246 + ], + "source": "Name: latinos\nType: NATIONALITY", + "target": "Name: children\nType: PERSON" + }, + { + "src_entity_name": "economic upward mobility", + "tgt_entity_name": "children", + "relation_name": "", + "weight": 9.0, + "description": "economic upward mobility is the specific attribute or outcome being considered for the children", + "source_ids": [ + 246 + ], + "source": "Name: economic upward mobility\nType: TASK_OR_PROBLEM", + "target": "Name: children\nType: PERSON" + }, + { + "src_entity_name": "counting", + "tgt_entity_name": "aggregation operation", + "relation_name": "", + "weight": 10.0, + "description": "counting is explicitly described as an aggregation operation", + "source_ids": [ + 250 + ], + "source": "Name: counting\nType: METHOD_OR_TECHNIQUE", + "target": "Name: aggregation operation\nType: UNKNOWN" + }, + { + "src_entity_name": "listing", + "tgt_entity_name": "aggregation operation", + "relation_name": "", + "weight": 10.0, + "description": "listing is explicitly described as an aggregation operation", + "source_ids": [ + 250 + ], + "source": "Name: listing\nType: METHOD_OR_TECHNIQUE", + "target": "Name: aggregation operation\nType: UNKNOWN" + }, + { + "src_entity_name": "summarizing", + "tgt_entity_name": "aggregation operation", + "relation_name": "", + "weight": 10.0, + "description": "summarizing is explicitly described as an aggregation operation", + "source_ids": [ + 250 + ], + "source": "Name: summarizing\nType: METHOD_OR_TECHNIQUE", + "target": "Name: aggregation operation\nType: UNKNOWN" + }, + { + "src_entity_name": "structural filter", + "tgt_entity_name": "items", + "relation_name": "", + "weight": 8.0, + "description": "the structural filter is used to identify the set of items", + "source_ids": [ + 250 + ], + "source": "Name: structural filter\nType: METHOD_OR_TECHNIQUE", + "target": "Name: items\nType: UNKNOWN" + }, + { + "src_entity_name": "user a2gbifl43u1lkj", + "tgt_entity_name": "soft labeled personality embedding matrix", + "relation_name": "", + "weight": 9.0, + "description": "user a2gbifl43u1lkj is the subject for whom personality vectors are analyzed within the soft labeled personality embedding matrix", + "source_ids": [ + 255 + ], + "source": "Name: user a2gbifl43u1lkj\nType: PERSON", + "target": "Name: soft labeled personality embedding matrix\nType: PRODUCT" + }, + { + "src_entity_name": "user a2gbifl43u1lkj", + "tgt_entity_name": "receptiviti score", + "relation_name": "", + "weight": 9.0, + "description": "receptiviti scores are calculated for the personality vectors associated with user a2gbifl43u1lkj", + "source_ids": [ + 255 + ], + "source": "Name: user a2gbifl43u1lkj\nType: PERSON", + "target": "Name: receptiviti score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "foreign born latinos", + "tgt_entity_name": "population", + "relation_name": "", + "weight": 8.0, + "description": "the population of foreign born latinos is a specific value sought in the survey example", + "source_ids": [ + 255 + ], + "source": "Name: foreign born latinos\nType: PERSON", + "target": "Name: population\nType: MEASUREMENT" + }, + { + "src_entity_name": "latinos interviewed by cellphone", + "tgt_entity_name": "population", + "relation_name": "", + "weight": 8.0, + "description": "the population of latinos interviewed by cellphone is a specific value sought in the survey example", + "source_ids": [ + 255 + ], + "source": "Name: latinos interviewed by cellphone\nType: PERSON", + "target": "Name: population\nType: MEASUREMENT" + }, + { + "src_entity_name": "soft labeled personality embedding matrix", + "tgt_entity_name": "receptiviti score", + "relation_name": "", + "weight": 7.0, + "description": "the soft labeled personality embedding matrix contains personality vectors that are evaluated using receptiviti scores", + "source_ids": [ + 255 + ], + "source": "Name: soft labeled personality embedding matrix\nType: PRODUCT", + "target": "Name: receptiviti score\nType: EVALUATION_METRIC" + }, + { + "src_entity_name": "report", + "tgt_entity_name": "chapter", + "relation_name": "", + "weight": 6.0, + "description": "the example query asks to count chapters in the report", + "source_ids": [ + 258 + ], + "source": "Name: report\nType: BOOK", + "target": "Name: chapter\nType: SECTION_TITLE" + }, + { + "src_entity_name": "ai assistant", + "tgt_entity_name": "global query", + "relation_name": "", + "weight": 10.0, + "description": "the ai assistant s function is to analyze the global query", + "source_ids": [ + 258 + ], + "source": "Name: ai assistant\nType: PERSON", + "target": "Name: global query\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "ai assistant", + "tgt_entity_name": "filters", + "relation_name": "", + "weight": 9.0, + "description": "the ai assistant must determine the list of filters to apply", + "source_ids": [ + 258 + ], + "source": "Name: ai assistant\nType: PERSON", + "target": "Name: filters\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "ai assistant", + "tgt_entity_name": "operation", + "relation_name": "", + "weight": 9.0, + "description": "the ai assistant must determine the final aggregation operation", + "source_ids": [ + 258 + ], + "source": "Name: ai assistant\nType: PERSON", + "target": "Name: operation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "filters", + "tgt_entity_name": "page", + "relation_name": "", + "weight": 8.0, + "description": "filters can be of type page to target specific page numbers", + "source_ids": [ + 258 + ], + "source": "Name: filters\nType: TASK_OR_PROBLEM", + "target": "Name: page\nType: MEASUREMENT" + }, + { + "src_entity_name": "assistant", + "tgt_entity_name": "filters", + "relation_name": "", + "weight": 9.0, + "description": "the assistant determines the filters to apply", + "source_ids": [ + 258 + ], + "source": "Name: filters\nType: TASK_OR_PROBLEM", + "target": "Name: assistant\nType: PERSON" + }, + { + "src_entity_name": "operation", + "tgt_entity_name": "count", + "relation_name": "", + "weight": 7.0, + "description": "count is one of the possible operations for aggregation", + "source_ids": [ + 258 + ], + "source": "Name: operation\nType: TASK_OR_PROBLEM", + "target": "Name: count\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "operation", + "tgt_entity_name": "list", + "relation_name": "", + "weight": 7.0, + "description": "list is one of the possible operations for aggregation", + "source_ids": [ + 258 + ], + "source": "Name: operation\nType: TASK_OR_PROBLEM", + "target": "Name: list\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "operation", + "tgt_entity_name": "summarize", + "relation_name": "", + "weight": 7.0, + "description": "summarize is one of the possible operations for aggregation", + "source_ids": [ + 258 + ], + "source": "Name: operation\nType: TASK_OR_PROBLEM", + "target": "Name: summarize\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "operation", + "tgt_entity_name": "analyze", + "relation_name": "", + "weight": 7.0, + "description": "analyze is one of the possible operations for aggregation", + "source_ids": [ + 258 + ], + "source": "Name: operation\nType: TASK_OR_PROBLEM", + "target": "Name: analyze\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "assistant", + "tgt_entity_name": "operation", + "relation_name": "", + "weight": 9.0, + "description": "the assistant determines the operation to perform", + "source_ids": [ + 258 + ], + "source": "Name: operation\nType: TASK_OR_PROBLEM", + "target": "Name: assistant\nType: PERSON" + }, + { + "src_entity_name": "methodology", + "tgt_entity_name": "data augmentation", + "relation_name": "", + "weight": 9.0, + "description": "the example query asks to summarize the discussion about data augmentation in the methodology section", + "source_ids": [ + 258 + ], + "source": "Name: methodology\nType: SECTION_TITLE", + "target": "Name: data augmentation\nType: METHOD_OR_TECHNIQUE" + }, + { + "src_entity_name": "paper", + "tgt_entity_name": "page", + "relation_name": "", + "weight": 6.0, + "description": "the example query specifies a page range 3 to 10 for the paper", + "source_ids": [ + 258 + ], + "source": "Name: paper\nType: BOOK", + "target": "Name: page\nType: MEASUREMENT" + }, + { + "src_entity_name": "discussion", + "tgt_entity_name": "data augmentation", + "relation_name": "", + "weight": 8.0, + "description": "the discussion is about data augmentation", + "source_ids": [ + 258 + ], + "source": "Name: data augmentation\nType: METHOD_OR_TECHNIQUE", + "target": "Name: discussion\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "page", + "tgt_entity_name": "3 10", + "relation_name": "", + "weight": 8.0, + "description": "3 10 is an example value for a page filter", + "source_ids": [ + 258 + ], + "source": "Name: 3 10\nType: MEASUREMENT", + "target": "Name: page\nType: MEASUREMENT" + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "candidate entities", + "relation_name": "", + "weight": 10.0, + "description": "the entity resolution adjudicator compares the new entity against the candidate entities", + "source_ids": [ + 262 + ], + "source": "Name: entity resolution adjudicator\nType: PERSON", + "target": "Name: candidate entities\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "id", + "relation_name": "", + "weight": 9.0, + "description": "the entity resolution adjudicator outputs the id of the matching candidate", + "source_ids": [ + 262 + ], + "source": "Name: entity resolution adjudicator\nType: PERSON", + "target": "Name: id\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 9.0, + "description": "the entity resolution adjudicator outputs 1 if no match is found", + "source_ids": [ + 262 + ], + "source": "Name: entity resolution adjudicator\nType: PERSON", + "target": "Name: 1\nType: VALUE" + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "explanation", + "relation_name": "", + "weight": 9.0, + "description": "the entity resolution adjudicator provides an explanation for the decision", + "source_ids": [ + 262 + ], + "source": "Name: entity resolution adjudicator\nType: PERSON", + "target": "Name: explanation\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "candidate entities", + "tgt_entity_name": "knowledge graph", + "relation_name": "", + "weight": 8.0, + "description": "candidate entities are retrieved from the knowledge graph", + "source_ids": [ + 262 + ], + "source": "Name: candidate entities\nType: TASK_OR_PROBLEM", + "target": "Name: knowledge graph\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "candidate entities", + "tgt_entity_name": "knowledge base", + "relation_name": "", + "weight": 8.0, + "description": "candidate entities are retrieved from the knowledge base", + "source_ids": [ + 262 + ], + "source": "Name: candidate entities\nType: TASK_OR_PROBLEM", + "target": "Name: knowledge base\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "candidate entities", + "tgt_entity_name": "id", + "relation_name": "", + "weight": 10.0, + "description": "each candidate entity has a unique id for reference", + "source_ids": [ + 262 + ], + "source": "Name: candidate entities\nType: TASK_OR_PROBLEM", + "target": "Name: id\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "select id", + "tgt_entity_name": "id", + "relation_name": "", + "weight": 9.0, + "description": "select id is defined as the integer value of the id of the candidate", + "source_ids": [ + 276 + ], + "source": "Name: id\nType: PARAMETER_OR_VARIABLE", + "target": "Name: select id\nType: PARAMETER_OR_VARIABLE" + }, + { + "src_entity_name": "event detection", + "tgt_entity_name": "named entity recognition", + "relation_name": "", + "weight": 9.0, + "description": "event detection and named entity recognition are distinct parallel concepts and are explicitly stated as not a match", + "source_ids": [ + 267 + ], + "source": "Name: event detection\nType: TASK_OR_PROBLEM", + "target": "Name: named entity recognition\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "description", + "tgt_entity_name": "contextual importance", + "relation_name": "", + "weight": 9.0, + "description": "descriptions possess contextual importance which dictates the need to analyze them for underlying identity rather than surface similarity", + "source_ids": [ + 269 + ], + "source": "Name: description\nType: CONCEPT", + "target": "Name: contextual importance\nType: CONCEPT" + }, + { + "src_entity_name": "apple", + "tgt_entity_name": "apple inc", + "relation_name": "", + "weight": 10.0, + "description": "both are mentioned in the text as examples to illustrate that they are not a match despite sharing the same name", + "source_ids": [ + 272 + ], + "source": "Name: apple\nType: PRODUCT", + "target": "Name: apple inc\nType: ORGANIZATION" + }, + { + "src_entity_name": "when in doubt", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 10.0, + "description": "the text states that if the condition when in doubt is met the output must be 1", + "source_ids": [ + 273 + ], + "source": "Name: when in doubt\nType: TASK_OR_PROBLEM", + "target": "Name: 1\nType: UNKNOWN" + }, + { + "src_entity_name": "json", + "tgt_entity_name": "output", + "relation_name": "", + "weight": 10.0, + "description": "the text specifies that the answer must be provided in a valid json format", + "source_ids": [ + 275 + ], + "source": "Name: json\nType: FILE_TYPE", + "target": "Name: output\nType: UNKNOWN" + }, + { + "src_entity_name": "select id", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 8.0, + "description": "select id holds the value of the id if an exact match is found", + "source_ids": [ + 276 + ], + "source": "Name: select id\nType: PARAMETER_OR_VARIABLE", + "target": "Name: exact match\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "select id", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 9.0, + "description": "select id is assigned the value 1 if no exact match is found", + "source_ids": [ + 276 + ], + "source": "Name: select id\nType: PARAMETER_OR_VARIABLE", + "target": "Name: 1\nType: MONEY" + }, + { + "src_entity_name": "select id", + "tgt_entity_name": "candidate", + "relation_name": "", + "weight": 9.0, + "description": "select id represents the id of the candidate being evaluated", + "source_ids": [ + 276 + ], + "source": "Name: select id\nType: PARAMETER_OR_VARIABLE", + "target": "Name: candidate\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "select id", + "tgt_entity_name": "integer", + "relation_name": "", + "weight": 10.0, + "description": "select id is defined as an integer type", + "source_ids": [ + 276 + ], + "source": "Name: select id\nType: PARAMETER_OR_VARIABLE", + "target": "Name: integer\nType: MEASUREMENT" + }, + { + "src_entity_name": "example 1", + "tgt_entity_name": "select id", + "relation_name": "", + "weight": 5.0, + "description": "example 1 is associated with the context of the provided json structure containing select id", + "source_ids": [ + 281 + ], + "source": "Name: select id\nType: PARAMETER_OR_VARIABLE", + "target": "Name: example 1\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "candidate", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 8.0, + "description": "the candidate is the subject of the exact match determination", + "source_ids": [ + 276 + ], + "source": "Name: exact match\nType: TASK_OR_PROBLEM", + "target": "Name: candidate\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "selection task", + "tgt_entity_name": "integer", + "relation_name": "", + "weight": 9.0, + "description": "the selection task requires the output to be a single integer", + "source_ids": [ + 282 + ], + "source": "Name: integer\nType: MEASUREMENT", + "target": "Name: selection task\nType: TASK_OR_PROBLEM" + }, + { + "src_entity_name": "example 2", + "tgt_entity_name": "explanation", + "relation_name": "", + "weight": 5.0, + "description": "example 2 is associated with the context of the provided json structure containing explanation", + "source_ids": [ + 281 + ], + "source": "Name: explanation\nType: PARAMETER_OR_VARIABLE", + "target": "Name: example 2\nType: TASK_OR_PROBLEM" + } + ] + }, + "tree2kg": { + "1": [ + "Name: complex documents\nType: DATASET_OR_CORPUS", + "Name: retrieval-augmented generation\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: MODEL_OR_ARCHITECTURE", + "Name: hierarchical structure-aware index-based approach\nType: METHOD_OR_TECHNIQUE", + "Name: bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents\nType: SECTION_TITLE" + ], + "2": [ + "Name: efficiency\nType: EVALUATION_METRIC", + "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "Name: qa accuracy\nType: EVALUATION_METRIC", + "Name: baselines\nType: MODEL_OR_ARCHITECTURE", + "Name: large language models\nType: MODEL_OR_ARCHITECTURE", + "Name: handbooks\nType: BOOK", + "Name: retrievalaugmented generation\nType: METHOD_OR_TECHNIQUE", + "Name: shu wang\nType: PERSON", + "Name: bookindex\nType: SOFTWARE", + "Name: yingli zhou\nType: PERSON", + "Name: yixiang fang\nType: PERSON", + "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "Name: three widely adopted benchmarks\nType: BENCHMARK", + "Name: graph\nType: SOFTWARE", + "Name: booklets\nType: BOOK", + "Name: retrieval recall\nType: EVALUATION_METRIC", + "Name: books\nType: BOOK", + "Name: question answering\nType: TASK_OR_PROBLEM", + "Name: table of contents\nType: SOFTWARE", + "Name: the chinese university of hong kong shenzhen\nType: ORGANIZATION", + "Name: tree\nType: SOFTWARE", + "Name: industry\nType: ORGANIZATION", + "Name: academia\nType: ORGANIZATION" + ], + "3": [ + "Name: abstract\nType: SECTION_TITLE" + ], + "4": [ + "Name: reference format\nType: SECTION_TITLE", + "Name: pvldb\nType: PUBLICATION_VENUE" + ], + "5": [ + "Name: 19\nType: MEASUREMENT", + "Name: pvldb\nType: PUBLICATION_VENUE", + "Name: xx xx xxx xx\nType: MEASUREMENT", + "Name: bookrag\nType: PRODUCT", + "Name: yingli zhou\nType: PERSON", + "Name: xxx xxx\nType: MEASUREMENT", + "Name: retrieval augmented generation\nType: TECHNOLOGY", + "Name: yixiang fang\nType: PERSON", + "Name: 2025\nType: DATE", + "Name: hierarchical structure aware index based approach\nType: METHOD_OR_TECHNIQUE", + "Name: complex documents\nType: TASK_OR_PROBLEM", + "Name: 1\nType: MEASUREMENT", + "Name: shu wang\nType: PERSON" + ], + "6": [ + "Name: artifact availability\nType: TASK_OR_PROBLEM", + "Name: pvldb\nType: PUBLICATION_VENUE" + ], + "7": [ + "Name: github\nType: ORGANIZATION", + "Name: source code\nType: PRODUCT", + "Name: sam234990\nType: PERSON", + "Name: data\nType: PRODUCT", + "Name: artifacts\nType: PRODUCT", + "Name: bookrag\nType: SOFTWARE" + ], + "8": [ + "Name: 1 introduction\nType: SECTION_TITLE" + ], + "9": [ + "Name: qa system\nType: PRODUCT", + "Name: question answering\nType: TASK_OR_PROBLEM", + "Name: qwen 3\nType: PRODUCT", + "Name: gemini 2 5\nType: PRODUCT", + "Name: large language models\nType: TECHNOLOGY", + "Name: industry\nType: ORGANIZATION", + "Name: users\nType: PERSON" + ], + "10": [ + "Name: owner author s\nType: PERSON", + "Name: info vldb org\nType: EMAIL", + "Name: creative commons by nc nd 4 0 international license\nType: LAW", + "Name: creative commons\nType: ORGANIZATION", + "Name: vldb endowment\nType: ORGANIZATION" + ], + "11": [ + "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "Name: vol 19\nType: MEASUREMENT", + "Name: issn 2150 8097\nType: MEASUREMENT", + "Name: doi xx xx xxx xx\nType: MEASUREMENT", + "Name: no 1\nType: MEASUREMENT" + ], + "12": [ + "Name: figure 1\nType: IMAGE", + "Name: existing methods\nType: METHOD_OR_TECHNIQUE", + "Name: bookrag\nType: PRODUCT", + "Name: complex document qa\nType: TASK_OR_PROBLEM" + ], + "13": [ + "Name: text-only rag\nType: METHOD_OR_TECHNIQUE", + "Name: layout analysis & parsing\nType: METHOD_OR_TECHNIQUE", + "Name: cref='#/texts/14'\nType: IMAGE", + "Name: agent-based retrieval\nType: METHOD_OR_TECHNIQUE", + "Name: bookrag (natively structure-aware)\nType: METHOD_OR_TECHNIQUE", + "Name: bookindex\nType: SYSTEM_COMPONENT", + "Name: flattened chunks\nType: DATASET_OR_CORPUS", + "Name: accurate, structured-grounded\nType: EVALUATION_METRIC", + "Name: unstructured chunks\nType: DATASET_OR_CORPUS", + "Name: text index (vector/graph/tree)\nType: SYSTEM_COMPONENT", + "Name: complex query\nType: TASK_OR_PROBLEM", + "Name: plain text extraction (ocr)\nType: METHOD_OR_TECHNIQUE", + "Name: fixed/ graph retrieval\nType: METHOD_OR_TECHNIQUE", + "Name: fails on structural dependencies\nType: TASK_OR_PROBLEM", + "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "Name: complex multi-page document\nType: PRODUCT", + "Name: fixed retrieval\nType: METHOD_OR_TECHNIQUE", + "Name: loses complex relationships\nType: TASK_OR_PROBLEM", + "Name: hierarchical chunks\nType: DATASET_OR_CORPUS", + "Name: flattened vector index\nType: SYSTEM_COMPONENT", + "Name: layout segmented rag\nType: METHOD_OR_TECHNIQUE" + ], + "14": [ + "Name: retrieval augmented generation\nType: METHOD_OR_TECHNIQUE", + "Name: intricate layouts\nType: SHAPE", + "Name: long form documents\nType: PRODUCT", + "Name: api reference manuals\nType: PRODUCT", + "Name: technical handbooks\nType: PRODUCT", + "Name: external sources\nType: LOCATION", + "Name: tables of contents\nType: PRODUCT", + "Name: financial auditing\nType: TASK_OR_PROBLEM", + "Name: logical hierarchies\nType: CONCEPT", + "Name: response generation\nType: TASK_OR_PROBLEM", + "Name: rag system\nType: SOFTWARE", + "Name: rag\nType: METHOD_OR_TECHNIQUE", + "Name: qa\nType: TASK_OR_PROBLEM", + "Name: domain knowledge\nType: CONCEPT", + "Name: enterprise scenarios\nType: LOCATION", + "Name: multi level sections\nType: PRODUCT", + "Name: legal compliance\nType: TASK_OR_PROBLEM", + "Name: books\nType: PRODUCT", + "Name: scientific discovery\nType: TASK_OR_PROBLEM", + "Name: this paper\nType: BOOK", + "Name: operational guidebooks\nType: PRODUCT", + "Name: llms\nType: TECHNOLOGY", + "Name: nested chapters\nType: PRODUCT" + ], + "15": [ + "Name: rag\nType: TECHNOLOGY", + "Name: table 1\nType: TABLE", + "Name: document level qa\nType: TASK_OR_PROBLEM", + "Name: textual corpus\nType: DATASET_OR_CORPUS", + "Name: hierarchical clusters\nType: TASK_OR_PROBLEM", + "Name: summaries\nType: PRODUCT", + "Name: ocr\nType: TECHNOLOGY", + "Name: high level semantic information\nType: CONCEPT", + "Name: raptor\nType: PRODUCT", + "Name: graph based rag\nType: TECHNOLOGY", + "Name: text based rag method\nType: TECHNOLOGY", + "Name: leiden community detection algorithm\nType: METHOD_OR_TECHNIQUE", + "Name: recursive tree structure\nType: TASK_OR_PROBLEM", + "Name: document chunks\nType: DATASET_OR_CORPUS", + "Name: graph data\nType: DATASET_OR_CORPUS", + "Name: graphrag\nType: PRODUCT", + "Name: knowledge graph\nType: DATASET_OR_CORPUS", + "Name: plain text\nType: MATERIAL", + "Name: figure 1\nType: IMAGE", + "Name: fine grained semantic information\nType: CONCEPT" + ], + "16": [ + "Name: bookrag\nType: PRODUCT", + "Name: representative methods\nType: METHOD_OR_TECHNIQUE", + "Name: table 1\nType: TABLE" + ], + "17": [ + "Name: table: cref='#/texts/17'...\nType: TABLE", + "Name: texts reference\nType: SECTION_TITLE" + ], + "18": [ + "Name: relevant content\nType: CONCEPT", + "Name: multimodal retrieval\nType: METHOD_OR_TECHNIQUE", + "Name: fixed chunk size\nType: MEASUREMENT", + "Name: llm powered operations\nType: TASK_OR_PROBLEM", + "Name: figures\nType: TASK_OR_PROBLEM", + "Name: llm based processing pipelines\nType: TASK_OR_PROBLEM", + "Name: tables\nType: TASK_OR_PROBLEM", + "Name: declarative interface\nType: SOFTWARE", + "Name: processing pipelines\nType: TASK_OR_PROBLEM", + "Name: paragraphs\nType: TASK_OR_PROBLEM", + "Name: equations\nType: TASK_OR_PROBLEM", + "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "Name: first paradigm\nType: TASK_OR_PROBLEM", + "Name: task specific optimizations\nType: METHOD_OR_TECHNIQUE", + "Name: second paradigm\nType: TASK_OR_PROBLEM", + "Name: docetl\nType: SOFTWARE", + "Name: layout aware segmentation\nType: TASK_OR_PROBLEM", + "Name: queries\nType: TASK_OR_PROBLEM", + "Name: document native structural information\nType: CONCEPT" + ], + "19": [ + "Name: l2\nType: TASK_OR_PROBLEM", + "Name: hierarchical blocks\nType: CONCEPT", + "Name: text based approaches\nType: METHOD_OR_TECHNIQUE", + "Name: user queries\nType: TASK_OR_PROBLEM", + "Name: evidence\nType: CONCEPT", + "Name: tables\nType: TABLE", + "Name: simple queries\nType: UNKNOWN", + "Name: layout segmented methods\nType: METHOD_OR_TECHNIQUE", + "Name: section\nType: SECTION_TITLE", + "Name: l1\nType: TASK_OR_PROBLEM", + "Name: static or manually predefined workflows\nType: METHOD_OR_TECHNIQUE", + "Name: multi hop reasoning\nType: TASK_OR_PROBLEM", + "Name: complex queries\nType: UNKNOWN", + "Name: question decomposition\nType: METHOD_OR_TECHNIQUE", + "Name: multi hop questions\nType: TASK_OR_PROBLEM", + "Name: overall performance\nType: EVALUATION_METRIC", + "Name: keyword lookups\nType: TASK_OR_PROBLEM", + "Name: real world qa scenarios\nType: EVENT", + "Name: document\nType: PRODUCT" + ], + "20": [ + "Name: document qa tasks\nType: TASK_OR_PROBLEM", + "Name: table of contents\nType: PRODUCT", + "Name: parsed content blocks\nType: MATERIAL", + "Name: fine grained entities\nType: DATASET_OR_CORPUS", + "Name: tree nodes\nType: PRODUCT", + "Name: hierarchical tree structure\nType: METHOD_OR_TECHNIQUE", + "Name: kg\nType: TECHNOLOGY", + "Name: relation\nType: CONCEPT", + "Name: bookindex\nType: PRODUCT", + "Name: bookrag\nType: TECHNOLOGY" + ], + "21": [ + "Name: similarity distribution\nType: CONCEPT", + "Name: graph connectivity\nType: CONCEPT", + "Name: entity ambiguity\nType: TASK_OR_PROBLEM", + "Name: candidate entities\nType: CONCEPT", + "Name: large language model\nType: PRODUCT", + "Name: llm\nType: PRODUCT", + "Name: multi hop reasoning\nType: TASK_OR_PROBLEM", + "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE", + "Name: coreferent entities\nType: CONCEPT", + "Name: kg\nType: CONCEPT", + "Name: reasoning capabilities\nType: CONCEPT" + ], + "22": [ + "Name: selector\nType: SOFTWARE", + "Name: retrieval workflows\nType: TASK_OR_PROBLEM", + "Name: information scents\nType: CONCEPT", + "Name: reasoner\nType: SOFTWARE", + "Name: user queries\nType: TASK_OR_PROBLEM", + "Name: evidence\nType: CONCEPT", + "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "Name: search space\nType: TASK_OR_PROBLEM", + "Name: bookindex\nType: PRODUCT", + "Name: agent\nType: UNKNOWN" + ], + "23": [ + "Name: agent based retrieval mechanism\nType: METHOD_OR_TECHNIQUE", + "Name: retrieval recall\nType: EVALUATION_METRIC", + "Name: bookrag\nType: PRODUCT", + "Name: qa accuracy\nType: EVALUATION_METRIC", + "Name: kg\nType: PRODUCT", + "Name: three widely adopted datasets\nType: DATASET_OR_CORPUS", + "Name: state of the art baselines\nType: PRODUCT" + ], + "24": [ + "Name: our contributions\nType: TASK_OR_PROBLEM" + ], + "25": [ + "Name: kg\nType: SOFTWARE", + "Name: entity relations\nType: CONCEPT", + "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "Name: hierarchical tree\nType: MODEL_OR_ARCHITECTURE", + "Name: document layout blocks\nType: MATERIAL", + "Name: bookindex\nType: PRODUCT" + ], + "26": [ + "Name: evidence\nType: TASK_OR_PROBLEM", + "Name: retrieval workflows\nType: TASK_OR_PROBLEM", + "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "Name: queries\nType: TASK_OR_PROBLEM", + "Name: agent based retrieval\nType: TASK_OR_PROBLEM", + "Name: documents\nType: DATASET_OR_CORPUS" + ], + "27": [ + "Name: complex document qa tasks\nType: TASK_OR_PROBLEM", + "Name: state of the art performance\nType: EVALUATION_METRIC", + "Name: bookrag\nType: PRODUCT", + "Name: existing baselines\nType: PRODUCT", + "Name: multiple benchmarks\nType: BENCHMARK", + "Name: extensive experiments\nType: EVENT", + "Name: competitive efficiency\nType: EVALUATION_METRIC" + ], + "28": [ + "Name: 2\nType: NUMBER" + ], + "29": [ + "Name: experimental results\nType: UNKNOWN", + "Name: section 2\nType: SECTION_TITLE", + "Name: ift\nType: METHOD_OR_TECHNIQUE", + "Name: section 4\nType: SECTION_TITLE", + "Name: section 6\nType: SECTION_TITLE", + "Name: structured execution\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: PRODUCT", + "Name: conclusion\nType: UNKNOWN", + "Name: section 3\nType: SECTION_TITLE", + "Name: rag\nType: METHOD_OR_TECHNIQUE", + "Name: section 7\nType: SECTION_TITLE", + "Name: query classification\nType: METHOD_OR_TECHNIQUE", + "Name: related work\nType: UNKNOWN", + "Name: bookindex\nType: PRODUCT", + "Name: section 5\nType: SECTION_TITLE", + "Name: operators\nType: METHOD_OR_TECHNIQUE" + ], + "30": [ + "Name: hierarchical document structures\nType: TASK_OR_PROBLEM", + "Name: 2 related work\nType: SECTION_TITLE", + "Name: retrieval-augmented generation\nType: METHOD_OR_TECHNIQUE" + ], + "31": [ + "Name: related works\nType: SECTION_TITLE", + "Name: llm\nType: TECHNOLOGY", + "Name: rag approaches\nType: TECHNOLOGY", + "Name: document analysis\nType: RESEARCH_FIELD" + ], + "32": [ + "Name: join\nType: TECHNOLOGY", + "Name: web documents\nType: PRODUCT", + "Name: agentic framework\nType: METHOD_OR_TECHNIQUE", + "Name: lotus\nType: SOFTWARE", + "Name: filter\nType: TECHNOLOGY", + "Name: information extraction\nType: TASK_OR_PROBLEM", + "Name: semi structured web documents\nType: PRODUCT", + "Name: layout\nType: CONCEPT", + "Name: raw text\nType: FILE_TYPE", + "Name: llm\nType: TECHNOLOGY", + "Name: semantic operators\nType: TECHNOLOGY", + "Name: document pages\nType: IMAGE", + "Name: visual information\nType: CONCEPT", + "Name: html\nType: FILE_TYPE", + "Name: sql\nType: PROGRAMMING_LANGUAGE", + "Name: evaporate\nType: SOFTWARE", + "Name: relational tables\nType: PRODUCT", + "Name: docetl\nType: SOFTWARE", + "Name: pdf\nType: FILE_TYPE", + "Name: structured databases\nType: PRODUCT", + "Name: predicates\nType: TECHNOLOGY", + "Name: manual annotation\nType: TASK_OR_PROBLEM", + "Name: unstructured text corpora\nType: UNKNOWN" + ], + "33": [ + "Name: generation fidelity\nType: EVALUATION_METRIC", + "Name: sql rewrite\nType: TASK_OR_PROBLEM", + "Name: autonomous agents\nType: TECHNOLOGY", + "Name: open ended question answering\nType: TASK_OR_PROBLEM", + "Name: hallucination\nType: TASK_OR_PROBLEM", + "Name: recent survey of graph based rag methods\nType: PUBLICATION_VENUE", + "Name: graph structures\nType: TECHNOLOGY", + "Name: external knowledge bases\nType: TECHNOLOGY", + "Name: rag approaches\nType: METHOD_OR_TECHNIQUE", + "Name: agentic rag paradigm\nType: METHOD_OR_TECHNIQUE", + "Name: reasoning robustness\nType: EVALUATION_METRIC", + "Name: data cleaning\nType: TASK_OR_PROBLEM", + "Name: rag\nType: METHOD_OR_TECHNIQUE", + "Name: rag pipeline\nType: TASK_OR_PROBLEM", + "Name: overall retrieval performance\nType: EVALUATION_METRIC", + "Name: documents\nType: UNKNOWN", + "Name: programming context\nType: TASK_OR_PROBLEM", + "Name: naive rag technique\nType: METHOD_OR_TECHNIQUE", + "Name: llms\nType: TECHNOLOGY" + ], + "34": [ + "Name: 3 preliminaries\nType: SECTION_TITLE" + ], + "35": [ + "Name: complex document qa\nType: TASK_OR_PROBLEM", + "Name: ift\nType: SCIENTIFIC_THEORY", + "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "Name: rag systems\nType: TECHNOLOGY", + "Name: research problem\nType: TASK_OR_PROBLEM", + "Name: general workflow\nType: TASK_OR_PROBLEM", + "Name: section\nType: SECTION_TITLE" + ], + "36": [ + "Name: 3.1 problem formulation\nType: SECTION_TITLE", + "Name: complex document qa\nType: TASK_OR_PROBLEM" + ], + "37": [ + "Name: logical chapter hierarchy\nType: TASK_OR_PROBLEM", + "Name: n\nType: PARAMETER_OR_VARIABLE", + "Name: d\nType: PARAMETER_OR_VARIABLE", + "Name: a\nType: PARAMETER_OR_VARIABLE", + "Name: m\nType: PARAMETER_OR_VARIABLE", + "Name: method s\nType: METHOD_OR_TECHNIQUE", + "Name: content blocks\nType: DATASET_OR_CORPUS", + "Name: equation 1\nType: EQUATION_OR_FORMULA", + "Name: text segment\nType: DATASET_OR_CORPUS", + "Name: user query\nType: TASK_OR_PROBLEM", + "Name: references 5 11 33\nType: PUBLICATION_VENUE", + "Name: q\nType: PARAMETER_OR_VARIABLE", + "Name: section header\nType: DATASET_OR_CORPUS", + "Name: question answering\nType: TASK_OR_PROBLEM", + "Name: evidence blocks\nType: DATASET_OR_CORPUS", + "Name: table\nType: DATASET_OR_CORPUS", + "Name: pages\nType: MEASUREMENT", + "Name: b\nType: PARAMETER_OR_VARIABLE", + "Name: e\nType: PARAMETER_OR_VARIABLE", + "Name: document\nType: PRODUCT", + "Name: image\nType: DATASET_OR_CORPUS", + "Name: p\nType: PARAMETER_OR_VARIABLE", + "Name: answer\nType: TASK_OR_PROBLEM" + ], + "38": [ + "Name: 3\nType: MEASUREMENT" + ], + "39": [ + "Name: formula (1)\nType: EQUATION_OR_FORMULA" + ], + "40": [ + "Name: s\nType: PERSON", + "Name: d\nType: TASK_OR_PROBLEM" + ], + "41": [ + "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "Name: 3.2 information foraging theory\nType: SECTION_TITLE" + ], + "42": [ + "Name: information scent\nType: CONCEPT", + "Name: keywords\nType: CONCEPT", + "Name: sections\nType: CONCEPT", + "Name: animal foraging\nType: TASK_OR_PROBLEM", + "Name: icons\nType: CONCEPT", + "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "Name: handbooks\nType: PRODUCT", + "Name: reference 42\nType: PUBLICATION_VENUE", + "Name: information patches\nType: CONCEPT" + ], + "43": [ + "Name: information scent\nType: CONCEPT", + "Name: key terms\nType: CONCEPT", + "Name: large technical handbook\nType: BOOK", + "Name: experts\nType: PERSON", + "Name: precise knowledge\nType: CONCEPT", + "Name: problem\nType: TASK_OR_PROBLEM", + "Name: final answer\nType: CONCEPT", + "Name: information patches\nType: CONCEPT", + "Name: diverse content\nType: CONCEPT" + ], + "44": [ + "Name: 3.3 rag workflow\nType: SECTION_TITLE", + "Name: rag systems\nType: TECHNOLOGY" + ], + "45": [ + "Name: llm\nType: SOFTWARE", + "Name: user query\nType: TASK_OR_PROBLEM", + "Name: unstructured corpus data\nType: DATASET_OR_CORPUS", + "Name: kg\nType: SOFTWARE", + "Name: vector databases\nType: SOFTWARE", + "Name: retrieval augmented generation\nType: TASK_OR_PROBLEM", + "Name: offline indexing phase\nType: TASK_OR_PROBLEM", + "Name: online retrieval phase\nType: TASK_OR_PROBLEM", + "Name: document\nType: TASK_OR_PROBLEM", + "Name: document s native tree topology\nType: TASK_OR_PROBLEM", + "Name: text chunks\nType: DATASET_OR_CORPUS", + "Name: subgraphs\nType: DATASET_OR_CORPUS" + ], + "46": [ + "Name: bookindex\nType: MODEL_OR_ARCHITECTURE", + "Name: hierarchical tree\nType: METHOD_OR_TECHNIQUE", + "Name: graph\nType: TECHNOLOGY", + "Name: 4 bookindex\nType: SECTION_TITLE" + ], + "47": [ + "Name: document\nType: PRODUCT", + "Name: entity relations\nType: CONCEPT", + "Name: fine grained entity knowledge\nType: CONCEPT", + "Name: tree construction\nType: METHOD_OR_TECHNIQUE", + "Name: hierarchical nodes\nType: CONCEPT", + "Name: gradient based entity resolution method\nType: METHOD_OR_TECHNIQUE", + "Name: graph construction\nType: METHOD_OR_TECHNIQUE", + "Name: bookindex\nType: PRODUCT", + "Name: logical hierarchy\nType: CONCEPT" + ], + "48": [ + "Name: kg construction\nType: TASK_OR_PROBLEM", + "Name: gradient based entity resolution\nType: METHOD_OR_TECHNIQUE", + "Name: tree construction\nType: TASK_OR_PROBLEM", + "Name: layout parsing\nType: METHOD_OR_TECHNIQUE", + "Name: figure 2\nType: IMAGE", + "Name: graph construction\nType: TASK_OR_PROBLEM", + "Name: bookindex construction process\nType: TASK_OR_PROBLEM", + "Name: section filtering\nType: METHOD_OR_TECHNIQUE" + ], + "49": [ + "Name: tree construction\nType: TASK_OR_PROBLEM", + "Name: layout parsing\nType: METHOD_OR_TECHNIQUE", + "Name: level: 2 type: section\nType: PARAMETER_OR_VARIABLE", + "Name: bookindex construction\nType: IMAGE", + "Name: tree node\nType: HARDWARE", + "Name: title: moe layer\nType: SECTION_TITLE", + "Name: relation\nType: DATASET_OR_CORPUS", + "Name: section filtering\nType: METHOD_OR_TECHNIQUE", + "Name: merge\nType: TASK_OR_PROBLEM", + "Name: title: experiment\nType: SECTION_TITLE", + "Name: kg construction\nType: METHOD_OR_TECHNIQUE", + "Name: level: none type: text\nType: PARAMETER_OR_VARIABLE", + "Name: similarity\nType: EVALUATION_METRIC", + "Name: graph construction\nType: TASK_OR_PROBLEM", + "Name: bookindex\nType: PRODUCT", + "Name: entity\nType: DATASET_OR_CORPUS", + "Name: gradient-based entity resolution\nType: METHOD_OR_TECHNIQUE", + "Name: gt-link\nType: SOFTWARE", + "Name: image cref='#/texts/52'\nType: UNKNOWN", + "Name: title: method\nType: SECTION_TITLE" + ], + "50": [ + "Name: bookindex\nType: MODEL_OR_ARCHITECTURE", + "Name: graph construction\nType: METHOD_OR_TECHNIQUE", + "Name: 4.1 overview of bookindex\nType: SECTION_TITLE", + "Name: tree construction\nType: METHOD_OR_TECHNIQUE" + ], + "51": [ + "Name: information scent\nType: CONCEPT", + "Name: \nType: UNKNOWN", + "Name: knowledge graph\nType: SOFTWARE", + "Name: document\nType: PRODUCT", + "Name: m v\nType: PARAMETER_OR_VARIABLE", + "Name: graph tree link\nType: METHOD_OR_TECHNIQUE", + "Name: n\nType: PARAMETER_OR_VARIABLE", + "Name: e t\nType: PARAMETER_OR_VARIABLE", + "Name: p\nType: PARAMETER_OR_VARIABLE", + "Name: titles\nType: SECTION_TITLE", + "Name: tables\nType: TABLE", + "Name: e g\nType: PARAMETER_OR_VARIABLE", + "Name: navigation\nType: UNKNOWN", + "Name: v\nType: PARAMETER_OR_VARIABLE", + "Name: bookindex\nType: PRODUCT", + "Name: information patches\nType: CONCEPT", + "Name: tree structure\nType: TASK_OR_PROBLEM", + "Name: sections\nType: SECTION_TITLE" + ], + "52": [ + "Name: graph component\nType: SOFTWARE", + "Name: tree component\nType: SOFTWARE", + "Name: content blocks\nType: PRODUCT", + "Name: document\nType: PRODUCT", + "Name: leaf nodes\nType: PRODUCT", + "Name: gt link\nType: TECHNOLOGY", + "Name: tables\nType: PRODUCT", + "Name: images\nType: PRODUCT", + "Name: text\nType: PRODUCT", + "Name: figure 2\nType: IMAGE", + "Name: section nodes\nType: PRODUCT", + "Name: bookindex\nType: PRODUCT", + "Name: logical hierarchy\nType: CONCEPT", + "Name: semantic entities\nType: CONCEPT" + ], + "53": [ + "Name: 4.2 tree construction\nType: SECTION_TITLE", + "Name: tree construction\nType: METHOD_OR_TECHNIQUE" + ], + "54": [ + "Name: task or problem\nType: UNKNOWN", + "Name: t\nType: TASK_OR_PROBLEM", + "Name: robust layout parsing\nType: METHOD_OR_TECHNIQUE", + "Name: intelligent section filtering\nType: METHOD_OR_TECHNIQUE", + "Name: raw document\nType: PRODUCT" + ], + "55": [ + "Name: document d\nType: TASK_OR_PROBLEM", + "Name: 4.2.1 layout parsing\nType: SECTION_TITLE", + "Name: layout analysis\nType: METHOD_OR_TECHNIQUE", + "Name: content blocks\nType: DATASET_OR_CORPUS", + "Name: recognition models\nType: MODEL_OR_ARCHITECTURE" + ], + "56": [ + "Name: primitive\nType: CONCEPT", + "Name: the output\nType: TASK_OR_PROBLEM" + ], + "57": [ + "Name: title\nType: SECTION_TITLE", + "Name: text\nType: SECTION_TITLE", + "Name: b title\nType: DATASET_OR_CORPUS", + "Name: \nType: UNKNOWN", + "Name: layout parsing\nType: METHOD_OR_TECHNIQUE", + "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "Name: 4 2 2\nType: SECTION_TITLE", + "Name: table\nType: TABLE", + "Name: none\nType: SECTION_TITLE", + "Name: l\nType: PARAMETER_OR_VARIABLE", + "Name: image\nType: IMAGE", + "Name: f\nType: PARAMETER_OR_VARIABLE", + "Name: b\nType: DATASET_OR_CORPUS", + "Name: section filtering\nType: TASK_OR_PROBLEM", + "Name: c\nType: PARAMETER_OR_VARIABLE", + "Name: 1\nType: MEASUREMENT" + ], + "58": [ + "Name: parent child nesting relationships\nType: TASK_OR_PROBLEM", + "Name: re classification\nType: METHOD_OR_TECHNIQUE", + "Name: document order\nType: PARAMETER_OR_VARIABLE", + "Name: final node type\nType: PARAMETER_OR_VARIABLE", + "Name: content\nType: PARAMETER_OR_VARIABLE", + "Name: edge set\nType: TASK_OR_PROBLEM", + "Name: hierarchical levels\nType: PARAMETER_OR_VARIABLE", + "Name: text\nType: PRODUCT", + "Name: section\nType: PRODUCT", + "Name: table\nType: PRODUCT", + "Name: filtering\nType: METHOD_OR_TECHNIQUE", + "Name: node set\nType: TASK_OR_PROBLEM", + "Name: tree\nType: TASK_OR_PROBLEM", + "Name: image\nType: PRODUCT", + "Name: node\nType: UNKNOWN" + ], + "59": [ + "Name: section filtering phase\nType: TASK_OR_PROBLEM", + "Name: title text table\nType: PRODUCT", + "Name: 14\nType: MEASUREMENT", + "Name: level\nType: PARAMETER_OR_VARIABLE", + "Name: layout parsing phase\nType: TASK_OR_PROBLEM", + "Name: 20\nType: MEASUREMENT", + "Name: final tree structure\nType: TASK_OR_PROBLEM", + "Name: text node\nType: SECTION_TITLE", + "Name: document order\nType: PARAMETER_OR_VARIABLE", + "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "Name: fontsize\nType: PARAMETER_OR_VARIABLE", + "Name: none\nType: MEASUREMENT", + "Name: image\nType: IMAGE", + "Name: figure 2\nType: IMAGE", + "Name: section nodes\nType: SECTION_TITLE", + "Name: moe layer\nType: SECTION_TITLE", + "Name: 2\nType: MEASUREMENT", + "Name: method\nType: SECTION_TITLE", + "Name: experiment\nType: SECTION_TITLE" + ], + "60": [ + "Name: 4\nType: MEASUREMENT" + ], + "61": [ + "Name: 4.3 graph construction\nType: SECTION_TITLE", + "Name: graph construction\nType: METHOD_OR_TECHNIQUE", + "Name: gradient-based entity resolution\nType: METHOD_OR_TECHNIQUE" + ], + "62": [ + "Name: tree nodes\nType: TASK_OR_PROBLEM", + "Name: knowledge graph g\nType: TASK_OR_PROBLEM", + "Name: tree t\nType: TASK_OR_PROBLEM" + ], + "63": [ + "Name: llm\nType: SOFTWARE", + "Name: 4.3.1 kg construction\nType: SECTION_TITLE", + "Name: knowledge graph\nType: DATASET_OR_CORPUS", + "Name: tree t\nType: MODEL_OR_ARCHITECTURE", + "Name: mapping m\nType: EQUATION_OR_FORMULA", + "Name: image\nType: IMAGE", + "Name: vision language model\nType: SOFTWARE" + ], + "64": [ + "Name: v table\nType: PRODUCT", + "Name: logical types\nType: CONCEPT", + "Name: structural semantics\nType: CONCEPT", + "Name: formula\nType: PRODUCT", + "Name: header\nType: PRODUCT", + "Name: vertex\nType: CONCEPT", + "Name: row\nType: PRODUCT", + "Name: table\nType: PRODUCT", + "Name: column\nType: PRODUCT", + "Name: node\nType: CONCEPT", + "Name: containedin\nType: RELATIONSHIP_TYPE" + ], + "65": [ + "Name: 4.3.2 gradient-based entity resolution\nType: SECTION_TITLE", + "Name: entity resolution\nType: TASK_OR_PROBLEM", + "Name: gradient-based entity resolution\nType: METHOD_OR_TECHNIQUE" + ], + "66": [ + "Name: o n 2\nType: MEASUREMENT", + "Name: a c\nType: TASK_OR_PROBLEM", + "Name: b c\nType: TASK_OR_PROBLEM", + "Name: er methods\nType: TASK_OR_PROBLEM", + "Name: b\nType: TASK_OR_PROBLEM", + "Name: c\nType: TASK_OR_PROBLEM", + "Name: a b\nType: TASK_OR_PROBLEM", + "Name: a\nType: TASK_OR_PROBLEM", + "Name: 12\nType: PUBLICATION_VENUE", + "Name: dirty er\nType: TASK_OR_PROBLEM", + "Name: llms\nType: TECHNOLOGY" + ], + "67": [ + "Name: database\nType: SOFTWARE", + "Name: repeated lookup task\nType: TASK_OR_PROBLEM", + "Name: scoring patterns\nType: EVALUATION_METRIC", + "Name: entity\nType: PARAMETER_OR_VARIABLE", + "Name: clean er\nType: TASK_OR_PROBLEM", + "Name: incremental process\nType: UNKNOWN", + "Name: top k most relevant candidates\nType: EVALUATION_METRIC", + "Name: quadratic batch problem\nType: TASK_OR_PROBLEM", + "Name: gradient based er method\nType: TECHNOLOGY" + ], + "68": [ + "Name: 5\nType: MEASUREMENT" + ], + "69": [ + "Name: gradient based entity resolution\nType: METHOD_OR_TECHNIQUE", + "Name: algorithm 1\nType: TASK_OR_PROBLEM" + ], + "70": [ + "Name: v\nType: TASK_OR_PROBLEM", + "Name: r\nType: MODEL_OR_ARCHITECTURE", + "Name: g\nType: TASK_OR_PROBLEM", + "Name: top k\nType: PARAMETER_OR_VARIABLE", + "Name: db\nType: DATASET_OR_CORPUS", + "Name: threshold of gradient g\nType: PARAMETER_OR_VARIABLE", + "Name: g\nType: PARAMETER_OR_VARIABLE", + "Name: n\nType: TASK_OR_PROBLEM", + "Name: entity vector database db\nType: DATASET_OR_CORPUS", + "Name: vector search number top k\nType: PARAMETER_OR_VARIABLE", + "Name: kg g\nType: TASK_OR_PROBLEM", + "Name: rerank model r\nType: MODEL_OR_ARCHITECTURE", + "Name: kg\nType: TASK_OR_PROBLEM", + "Name: new entity v n\nType: TASK_OR_PROBLEM" + ], + "71": [ + "Name: score\nType: UNKNOWN", + "Name: r\nType: UNKNOWN", + "Name: e c\nType: UNKNOWN", + "Name: s 0\nType: UNKNOWN", + "Name: s\nType: UNKNOWN", + "Name: v cn\nType: UNKNOWN", + "Name: sort\nType: UNKNOWN", + "Name: gradient select\nType: UNKNOWN", + "Name: c\nType: UNKNOWN", + "Name: sel\nType: UNKNOWN", + "Name: search\nType: UNKNOWN", + "Name: db\nType: UNKNOWN", + "Name: v n\nType: UNKNOWN", + "Name: e\nType: UNKNOWN", + "Name: top k\nType: UNKNOWN", + "Name: vector search\nType: UNKNOWN" + ], + "72": [ + "Name: existing entities\nType: TASK_OR_PROBLEM", + "Name: new entity\nType: TASK_OR_PROBLEM", + "Name: discriminative pattern\nType: PARAMETER_OR_VARIABLE", + "Name: case a\nType: TASK_OR_PROBLEM", + "Name: gradient\nType: PARAMETER_OR_VARIABLE", + "Name: relevance scores\nType: EVALUATION_METRIC" + ], + "73": [ + "Name: irrelevant entities\nType: TASK_OR_PROBLEM", + "Name: gradient\nType: MEASUREMENT", + "Name: \nType: UNKNOWN", + "Name: alias\nType: CONCEPT", + "Name: reranker\nType: TECHNOLOGY", + "Name: existing entity\nType: TASK_OR_PROBLEM", + "Name: equivalent aliases\nType: CONCEPT", + "Name: true match\nType: CONCEPT", + "Name: case b\nType: TASK_OR_PROBLEM", + "Name: scores\nType: EVALUATION_METRIC" + ], + "74": [ + "Name: similar entities\nType: DATASET_OR_CORPUS", + "Name: high relevance set\nType: DATASET_OR_CORPUS", + "Name: case a\nType: TASK_OR_PROBLEM", + "Name: case b\nType: TASK_OR_PROBLEM", + "Name: gradient based er algorithm\nType: TECHNOLOGY", + "Name: llm\nType: TECHNOLOGY" + ], + "75": [ + "Name: lines 7 8\nType: SECTION_TITLE", + "Name: v sel\nType: TASK_OR_PROBLEM", + "Name: line 8\nType: SECTION_TITLE", + "Name: g\nType: PARAMETER_OR_VARIABLE", + "Name: lines 12 14\nType: SECTION_TITLE", + "Name: case b\nType: TASK_OR_PROBLEM", + "Name: sel\nType: TASK_OR_PROBLEM", + "Name: lines 9 14\nType: SECTION_TITLE", + "Name: score\nType: PARAMETER_OR_VARIABLE", + "Name: v c\nType: PARAMETER_OR_VARIABLE", + "Name: llm\nType: SOFTWARE", + "Name: g\nType: TASK_OR_PROBLEM", + "Name: case a\nType: TASK_OR_PROBLEM", + "Name: line 13\nType: SECTION_TITLE", + "Name: line 9 10\nType: SECTION_TITLE", + "Name: v n\nType: TASK_OR_PROBLEM", + "Name: lines 5 8\nType: SECTION_TITLE", + "Name: line 4\nType: SECTION_TITLE", + "Name: s\nType: TASK_OR_PROBLEM", + "Name: line 15\nType: SECTION_TITLE", + "Name: lines 1 3\nType: SECTION_TITLE", + "Name: db\nType: TASK_OR_PROBLEM", + "Name: e c\nType: TASK_OR_PROBLEM", + "Name: algorithm 1\nType: TASK_OR_PROBLEM", + "Name: r\nType: TASK_OR_PROBLEM" + ], + "76": [ + "Name: orange line\nType: IMAGE", + "Name: e 5\nType: TASK_OR_PROBLEM", + "Name: similarity curve\nType: IMAGE", + "Name: gradient based selection process\nType: METHOD_OR_TECHNIQUE", + "Name: e 6\nType: TASK_OR_PROBLEM", + "Name: e 7\nType: TASK_OR_PROBLEM", + "Name: figure 2\nType: IMAGE", + "Name: consolidated information\nType: CONCEPT", + "Name: unique high confidence match\nType: CONCEPT", + "Name: e 9\nType: TASK_OR_PROBLEM", + "Name: kg\nType: TASK_OR_PROBLEM", + "Name: e 8\nType: TASK_OR_PROBLEM" + ], + "77": [ + "Name: origin tree node\nType: HARDWARE", + "Name: entity resolution\nType: TASK_OR_PROBLEM", + "Name: canonical entity\nType: CONCEPT", + "Name: gt link\nType: TECHNOLOGY", + "Name: kg construction phase\nType: TASK_OR_PROBLEM", + "Name: g\nType: CONCEPT", + "Name: t\nType: CONCEPT", + "Name: n\nType: PARAMETER_OR_VARIABLE", + "Name: p n\nType: MATHEMATICAL_CONCEPT", + "Name: v n\nType: PARAMETER_OR_VARIABLE", + "Name: mapping m\nType: EQUATION_OR_FORMULA", + "Name: v sel\nType: PARAMETER_OR_VARIABLE", + "Name: v\nType: PARAMETER_OR_VARIABLE", + "Name: bookindex\nType: PRODUCT", + "Name: m\nType: UNKNOWN", + "Name: v i\nType: PARAMETER_OR_VARIABLE" + ], + "78": [ + "Name: 5 agent-based retrieval\nType: SECTION_TITLE", + "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "Name: agent-based query method\nType: METHOD_OR_TECHNIQUE" + ], + "79": [ + "Name: ift\nType: METHOD_OR_TECHNIQUE", + "Name: agent based planning\nType: METHOD_OR_TECHNIQUE", + "Name: modal type filtering\nType: METHOD_OR_TECHNIQUE", + "Name: bookindex\nType: DATABASE", + "Name: multi hop reasoning\nType: METHOD_OR_TECHNIQUE", + "Name: generation\nType: METHOD_OR_TECHNIQUE", + "Name: semantic selection\nType: METHOD_OR_TECHNIQUE", + "Name: structured execution\nType: METHOD_OR_TECHNIQUE", + "Name: real world document queries\nType: UNKNOWN", + "Name: bookrag\nType: SOFTWARE" + ], + "80": [ + "Name: 5.1 overall workflow\nType: SECTION_TITLE" + ], + "81": [ + "Name: three stage pipeline\nType: METHOD_OR_TECHNIQUE", + "Name: agent based retrieval\nType: TASK_OR_PROBLEM", + "Name: figure 3\nType: IMAGE" + ], + "82": [ + "Name: generation\nType: TASK_OR_PROBLEM", + "Name: rnns\nType: MODEL_OR_ARCHITECTURE", + "Name: bookindex\nType: DATASET_OR_CORPUS", + "Name: agent based planning\nType: TASK_OR_PROBLEM", + "Name: transformer\nType: MODEL_OR_ARCHITECTURE", + "Name: query classification\nType: METHOD_OR_TECHNIQUE", + "Name: operators plan\nType: TASK_OR_PROBLEM", + "Name: classification plan\nType: METHOD_OR_TECHNIQUE", + "Name: retrieval\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: SOFTWARE" + ], + "83": [ + "Name: generation processes\nType: TASK_OR_PROBLEM", + "Name: planning\nType: TASK_OR_PROBLEM", + "Name: generation\nType: TASK_OR_PROBLEM", + "Name: figure 3\nType: IMAGE", + "Name: agent based planning\nType: TASK_OR_PROBLEM", + "Name: workflow\nType: TASK_OR_PROBLEM", + "Name: agent based retrieval\nType: METHOD_OR_TECHNIQUE", + "Name: retrieval\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: SOFTWARE" + ], + "84": [ + "Name: cref='#/texts/89'\nType: IMAGE", + "Name: generation process\nType: METHOD_OR_TECHNIQUE", + "Name: retrieval process\nType: METHOD_OR_TECHNIQUE", + "Name: agent-based planning\nType: METHOD_OR_TECHNIQUE", + "Name: question\nType: TASK_OR_PROBLEM", + "Name: answer\nType: TASK_OR_PROBLEM" + ], + "85": [ + "Name: modal type\nType: PARAMETER_OR_VARIABLE", + "Name: information blocks\nType: DATASET_OR_CORPUS", + "Name: bookindex\nType: DATASET_OR_CORPUS", + "Name: operator plan\nType: TASK_OR_PROBLEM", + "Name: scent filter based retrieval\nType: METHOD_OR_TECHNIQUE", + "Name: m\nType: PARAMETER_OR_VARIABLE", + "Name: g\nType: PARAMETER_OR_VARIABLE", + "Name: relevant entities\nType: DATASET_OR_CORPUS", + "Name: t\nType: PARAMETER_OR_VARIABLE", + "Name: retrieval process\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: SOFTWARE" + ], + "86": [ + "Name: fragmented pieces of evidence\nType: DATASET_OR_CORPUS", + "Name: analysis merging\nType: TASK_OR_PROBLEM", + "Name: retrieved information\nType: DATASET_OR_CORPUS", + "Name: coherent response\nType: PRODUCT", + "Name: generation process\nType: TASK_OR_PROBLEM" + ], + "87": [ + "Name: 5.2 agent-based planning\nType: SECTION_TITLE", + "Name: agent-based planning\nType: METHOD_OR_TECHNIQUE" + ], + "88": [ + "Name: execution pipelines\nType: TASK_OR_PROBLEM", + "Name: bookindex\nType: DATASET_OR_CORPUS", + "Name: selector\nType: MODEL_OR_ARCHITECTURE", + "Name: bookrag\nType: PRODUCT", + "Name: formulator\nType: MODEL_OR_ARCHITECTURE", + "Name: synthesizer\nType: MODEL_OR_ARCHITECTURE", + "Name: agent\nType: TASK_OR_PROBLEM", + "Name: reasoner\nType: MODEL_OR_ARCHITECTURE", + "Name: g\nType: PARAMETER_OR_VARIABLE", + "Name: m\nType: PARAMETER_OR_VARIABLE", + "Name: query categories\nType: TASK_OR_PROBLEM", + "Name: adjustable parameters\nType: PARAMETER_OR_VARIABLE", + "Name: t\nType: PARAMETER_OR_VARIABLE" + ], + "89": [ + "Name: table 2\nType: TABLE", + "Name: bookrag\nType: PRODUCT" + ], + "90": [ + "Name: table: cref='#/texts/95'...\nType: TABLE" + ], + "91": [ + "Name: 6\nType: MEASUREMENT" + ], + "92": [ + "Name: operator set\nType: TASK_OR_PROBLEM" + ], + "93": [ + "Name: step by step operator execution\nType: METHOD_OR_TECHNIQUE", + "Name: execution trace\nType: TASK_OR_PROBLEM", + "Name: agent based planning\nType: METHOD_OR_TECHNIQUE", + "Name: selector\nType: MODEL_OR_ARCHITECTURE", + "Name: formulator\nType: MODEL_OR_ARCHITECTURE", + "Name: synthesizer\nType: MODEL_OR_ARCHITECTURE", + "Name: figure 4\nType: IMAGE", + "Name: reasoner\nType: MODEL_OR_ARCHITECTURE", + "Name: mmlongbench dataset\nType: DATASET_OR_CORPUS", + "Name: bookrag operator library\nType: SOFTWARE", + "Name: single hop\nType: TASK_OR_PROBLEM", + "Name: operator\nType: MODEL_OR_ARCHITECTURE" + ], + "94": [ + "Name: filter\nType: TASK_OR_PROBLEM", + "Name: selector\nType: SYSTEM_COMPONENT", + "Name: mercedes-benz e-class sedan\nType: VEHICLE", + "Name: select\nType: TASK_OR_PROBLEM", + "Name: method and its descendants\nType: SECTION_TITLE", + "Name: execution example\nType: SECTION_TITLE", + "Name: entities\nType: DATASET_OR_CORPUS", + "Name: simple query...\nType: TASK_OR_PROBLEM", + "Name: decompose\nType: METHOD_OR_TECHNIQUE", + "Name: graph\nType: DATA_STRUCTURE", + "Name: reasoner\nType: SYSTEM_COMPONENT", + "Name: method\nType: METHOD_OR_TECHNIQUE", + "Name: operator-set\nType: IMAGE", + "Name: sub-queries\nType: TASK_OR_PROBLEM", + "Name: q: what is the type of car in the ranking prompt example?\nType: TASK_OR_PROBLEM", + "Name: car\nType: PRODUCT", + "Name: image cref='#/texts/98'\nType: UNKNOWN", + "Name: planning\nType: TASK_OR_PROBLEM", + "Name: skyline\nType: TASK_OR_PROBLEM", + "Name: reduce\nType: TASK_OR_PROBLEM", + "Name: text\nType: DATA_STRUCTURE", + "Name: ranking prompt\nType: BOOK", + "Name: reason\nType: TASK_OR_PROBLEM", + "Name: map\nType: TASK_OR_PROBLEM", + "Name: formulator\nType: SYSTEM_COMPONENT", + "Name: s:\nType: PARAMETER_OR_VARIABLE", + "Name: operator plan\nType: TASK_OR_PROBLEM", + "Name: synthesizer\nType: SYSTEM_COMPONENT", + "Name: extract\nType: TASK_OR_PROBLEM", + "Name: a: based on the provided information...\nType: TASK_OR_PROBLEM" + ], + "95": [ + "Name: query classification\nType: TASK_OR_PROBLEM", + "Name: operator plan\nType: PRODUCT" + ], + "96": [ + "Name: query classification\nType: TASK_OR_PROBLEM", + "Name: solution strategy\nType: CONCEPT", + "Name: single hop\nType: EVENT", + "Name: scent based retrieval\nType: METHOD_OR_TECHNIQUE", + "Name: intrinsic complexity\nType: CONCEPT", + "Name: additional operators\nType: SOFTWARE", + "Name: multi hop\nType: EVENT", + "Name: global aggregation\nType: EVENT", + "Name: filter aggregation\nType: METHOD_OR_TECHNIQUE", + "Name: document\nType: OBJECT", + "Name: agent strategy selection\nType: TASK_OR_PROBLEM", + "Name: table 2\nType: TABLE", + "Name: filtering conditions\nType: CONCEPT", + "Name: operational demands\nType: CONCEPT", + "Name: bookrag\nType: SOFTWARE" + ], + "97": [ + "Name: table 3\nType: TABLE", + "Name: o\nType: TASK_OR_PROBLEM", + "Name: agent\nType: TASK_OR_PROBLEM", + "Name: figure 4\nType: IMAGE", + "Name: query categories\nType: TASK_OR_PROBLEM", + "Name: figure 4 a\nType: IMAGE", + "Name: bookindex operators\nType: TASK_OR_PROBLEM", + "Name: classification\nType: METHOD_OR_TECHNIQUE", + "Name: bookindex\nType: PRODUCT" + ], + "98": [ + "Name: formulator\nType: TASK_OR_PROBLEM", + "Name: kg\nType: SOFTWARE", + "Name: sub queries\nType: TASK_OR_PROBLEM", + "Name: query text\nType: TASK_OR_PROBLEM", + "Name: pdec\nType: PARAMETER_OR_VARIABLE", + "Name: extract\nType: METHOD_OR_TECHNIQUE", + "Name: eq\nType: TASK_OR_PROBLEM", + "Name: complex query\nType: TASK_OR_PROBLEM", + "Name: pext\nType: PARAMETER_OR_VARIABLE", + "Name: entities\nType: TASK_OR_PROBLEM", + "Name: llm\nType: TECHNOLOGY", + "Name: decompose\nType: METHOD_OR_TECHNIQUE", + "Name: qs\nType: TASK_OR_PROBLEM" + ], + "99": [ + "Name: formula (2)\nType: EQUATION_OR_FORMULA" + ], + "100": [ + "Name: formula (3)\nType: EQUATION_OR_FORMULA" + ], + "101": [ + "Name: prompt\nType: SOFTWARE", + "Name: q\nType: PARAMETER_OR_VARIABLE", + "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "Name: extraction\nType: TASK_OR_PROBLEM", + "Name: decomposition\nType: TASK_OR_PROBLEM", + "Name: p ext\nType: SOFTWARE", + "Name: p dec\nType: SOFTWARE" + ], + "102": [ + "Name: nodes\nType: PARAMETER_OR_VARIABLE", + "Name: n\nType: PARAMETER_OR_VARIABLE", + "Name: e t\nType: PARAMETER_OR_VARIABLE", + "Name: c n\nType: PARAMETER_OR_VARIABLE", + "Name: modal types\nType: CONCEPT", + "Name: page ranges\nType: CONCEPT", + "Name: n f\nType: PARAMETER_OR_VARIABLE", + "Name: plan\nType: TASK_OR_PROBLEM", + "Name: selector\nType: TECHNOLOGY", + "Name: filter range\nType: TECHNOLOGY", + "Name: edges\nType: PARAMETER_OR_VARIABLE", + "Name: filter modal\nType: TECHNOLOGY", + "Name: bookindex\nType: PRODUCT", + "Name: tree\nType: TASK_OR_PROBLEM", + "Name: c\nType: PARAMETER_OR_VARIABLE" + ], + "103": [ + "Name: formula (4)\nType: EQUATION_OR_FORMULA" + ], + "104": [ + "Name: descendant\nType: TASK_OR_PROBLEM", + "Name: gt link\nType: TECHNOLOGY", + "Name: subtree\nType: TASK_OR_PROBLEM", + "Name: document\nType: TASK_OR_PROBLEM", + "Name: n\nType: TASK_OR_PROBLEM", + "Name: e q\nType: TASK_OR_PROBLEM", + "Name: select by section\nType: TECHNOLOGY", + "Name: section node\nType: TASK_OR_PROBLEM", + "Name: depth\nType: MEASUREMENT", + "Name: select by entity\nType: TECHNOLOGY", + "Name: n s\nType: TASK_OR_PROBLEM", + "Name: llm\nType: TECHNOLOGY", + "Name: s target\nType: TASK_OR_PROBLEM" + ], + "105": [ + "Name: formula (5)\nType: EQUATION_OR_FORMULA" + ], + "106": [ + "Name: 20\nType: PUBLICATION_VENUE", + "Name: 7\nType: EQUATION_OR_FORMULA", + "Name: graph reasoning\nType: METHOD_OR_TECHNIQUE", + "Name: tree node importance scores vector\nType: PARAMETER_OR_VARIABLE", + "Name: 6\nType: EQUATION_OR_FORMULA", + "Name: entity importance vector\nType: PARAMETER_OR_VARIABLE", + "Name: selected tree nodes\nType: UNKNOWN", + "Name: reasoner\nType: TASK_OR_PROBLEM", + "Name: subgraph\nType: TASK_OR_PROBLEM", + "Name: selected nodes\nType: TASK_OR_PROBLEM", + "Name: entity\nType: TASK_OR_PROBLEM", + "Name: pagerank algorithm\nType: METHOD_OR_TECHNIQUE", + "Name: gt link matrix\nType: SOFTWARE" + ], + "107": [ + "Name: formula (6)\nType: EQUATION_OR_FORMULA" + ], + "108": [ + "Name: formula (7)\nType: EQUATION_OR_FORMULA" + ], + "109": [ + "Name: \nType: UNKNOWN", + "Name: tree node\nType: TASK_OR_PROBLEM", + "Name: nodes\nType: TASK_OR_PROBLEM", + "Name: text ranker\nType: SOFTWARE", + "Name: scoring dimensions\nType: PARAMETER_OR_VARIABLE", + "Name: skyline operator\nType: METHOD_OR_TECHNIQUE", + "Name: relevance score\nType: EVALUATION_METRIC", + "Name: skyline ranker\nType: SOFTWARE", + "Name: query\nType: TASK_OR_PROBLEM" + ], + "110": [ + "Name: 7\nType: NUMBER" + ], + "111": [ + "Name: partial answers\nType: PRODUCT", + "Name: reduce\nType: TASK_OR_PROBLEM", + "Name: analysis\nType: TASK_OR_PROBLEM", + "Name: retrieved information segments\nType: DATASET_OR_CORPUS", + "Name: synthesizer\nType: TASK_OR_PROBLEM", + "Name: retrieved evidence\nType: DATASET_OR_CORPUS", + "Name: multiple sources\nType: DATASET_OR_CORPUS", + "Name: partial responses\nType: PRODUCT", + "Name: content generation\nType: TASK_OR_PROBLEM", + "Name: map\nType: TASK_OR_PROBLEM", + "Name: final coherent answer\nType: PRODUCT" + ], + "112": [ + "Name: \nType: UNKNOWN", + "Name: equation 8\nType: EQUATION_OR_FORMULA", + "Name: operators\nType: TASK_OR_PROBLEM", + "Name: operator plan\nType: TASK_OR_PROBLEM", + "Name: category\nType: TASK_OR_PROBLEM", + "Name: library\nType: ORGANIZATION", + "Name: parameters\nType: PARAMETER_OR_VARIABLE", + "Name: agent plan\nType: METHOD_OR_TECHNIQUE", + "Name: 1\nType: TASK_OR_PROBLEM", + "Name: agent\nType: PERSON", + "Name: query\nType: TASK_OR_PROBLEM" + ], + "113": [ + "Name: formula (8)\nType: EQUATION_OR_FORMULA" + ], + "114": [ + "Name: category\nType: CONCEPT", + "Name: the plan\nType: TASK_OR_PROBLEM", + "Name: workflow\nType: METHOD_OR_TECHNIQUE" + ], + "115": [ + "Name: generation\nType: TASK_OR_PROBLEM", + "Name: standard reasoning\nType: TASK_OR_PROBLEM", + "Name: single hop\nType: TASK_OR_PROBLEM", + "Name: p std\nType: EQUATION_OR_FORMULA", + "Name: section based\nType: METHOD_OR_TECHNIQUE", + "Name: scent based\nType: METHOD_OR_TECHNIQUE", + "Name: entity\nType: TASK_OR_PROBLEM", + "Name: agent\nType: PERSON" + ], + "116": [ + "Name: formula (9)\nType: EQUATION_OR_FORMULA" + ], + "117": [ + "Name: formula (10)\nType: EQUATION_OR_FORMULA" + ], + "118": [ + "Name: ps\nType: MODEL_OR_ARCHITECTURE", + "Name: single hop workflow\nType: METHOD_OR_TECHNIQUE", + "Name: agent\nType: PERSON", + "Name: complex\nType: TASK_OR_PROBLEM" + ], + "119": [ + "Name: formula (11)\nType: EQUATION_OR_FORMULA" + ], + "120": [ + "Name: global aggregation\nType: TASK_OR_PROBLEM" + ], + "121": [ + "Name: formula (12)\nType: EQUATION_OR_FORMULA" + ], + "122": [ + "Name: modal filter\nType: TECHNOLOGY", + "Name: \nType: UNKNOWN", + "Name: nested composition\nType: TASK_OR_PROBLEM", + "Name: range filter\nType: TECHNOLOGY" + ], + "123": [ + "Name: retrieval process\nType: METHOD_OR_TECHNIQUE", + "Name: generation\nType: TASK_OR_PROBLEM", + "Name: 5.3 structured execution\nType: SECTION_TITLE", + "Name: ift principles\nType: METHOD_OR_TECHNIQUE" + ], + "124": [ + "Name: synthesizer\nType: SOFTWARE", + "Name: selector\nType: SOFTWARE", + "Name: information patches\nType: TASK_OR_PROBLEM", + "Name: reasoner\nType: SOFTWARE", + "Name: document space\nType: TASK_OR_PROBLEM", + "Name: sensemaking\nType: TASK_OR_PROBLEM", + "Name: answer\nType: TASK_OR_PROBLEM", + "Name: computational resources\nType: TASK_OR_PROBLEM", + "Name: relevant scopes\nType: TASK_OR_PROBLEM", + "Name: workflow\nType: TASK_OR_PROBLEM", + "Name: information foraging theory\nType: SCIENTIFIC_THEORY", + "Name: processed evidence\nType: TASK_OR_PROBLEM", + "Name: cost of attention\nType: TASK_OR_PROBLEM", + "Name: concrete operations\nType: TASK_OR_PROBLEM", + "Name: p\nType: TASK_OR_PROBLEM", + "Name: abstract textual queries\nType: TASK_OR_PROBLEM", + "Name: high value data patches\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: SOFTWARE" + ], + "125": [ + "Name: node set n\nType: DATASET_OR_CORPUS", + "Name: equation 13\nType: EQUATION_OR_FORMULA", + "Name: selector operators\nType: SOFTWARE", + "Name: ift\nType: METHOD_OR_TECHNIQUE", + "Name: focused node subset ns\nType: DATASET_OR_CORPUS", + "Name: information scents\nType: CONCEPT", + "Name: scent filter based retrieval\nType: TASK_OR_PROBLEM", + "Name: params sel\nType: PARAMETER_OR_VARIABLE", + "Name: patches\nType: PRODUCT", + "Name: question\nType: TASK_OR_PROBLEM", + "Name: explicit filter constraints\nType: METHOD_OR_TECHNIQUE" + ], + "126": [ + "Name: formula (13)\nType: EQUATION_OR_FORMULA" + ], + "127": [ + "Name: foraging cost\nType: MEASUREMENT", + "Name: skyline operator\nType: TASK_OR_PROBLEM", + "Name: reasoner operators\nType: TASK_OR_PROBLEM", + "Name: fixed top retrieval\nType: METHOD_OR_TECHNIQUE", + "Name: pre selection\nType: METHOD_OR_TECHNIQUE", + "Name: nodes\nType: UNKNOWN", + "Name: n r\nType: PARAMETER_OR_VARIABLE", + "Name: n s\nType: PARAMETER_OR_VARIABLE", + "Name: equation 14\nType: EQUATION_OR_FORMULA", + "Name: graph topology\nType: PARAMETER_OR_VARIABLE", + "Name: semantic relevance\nType: PARAMETER_OR_VARIABLE", + "Name: noise\nType: CONCEPT", + "Name: final retrieval set\nType: UNKNOWN", + "Name: pareto frontier\nType: CONCEPT", + "Name: t n\nType: PARAMETER_OR_VARIABLE", + "Name: s g n s\nType: PARAMETER_OR_VARIABLE", + "Name: skyline ranker\nType: TASK_OR_PROBLEM" + ], + "128": [ + "Name: formula (14)\nType: EQUATION_OR_FORMULA" + ], + "129": [ + "Name: synthesizer\nType: SOFTWARE", + "Name: analysis merging generation\nType: TASK_OR_PROBLEM", + "Name: q\nType: PARAMETER_OR_VARIABLE", + "Name: a\nType: PARAMETER_OR_VARIABLE", + "Name: n\nType: PARAMETER_OR_VARIABLE", + "Name: 15\nType: EQUATION_OR_FORMULA" + ], + "130": [ + "Name: formula (15)\nType: EQUATION_OR_FORMULA" + ], + "131": [ + "Name: bookrag\nType: PRODUCT", + "Name: table 3\nType: TABLE" + ], + "132": [ + "Name: table: cref='#/texts/136'...\nType: TABLE", + "Name: cref\nType: EQUATION_OR_FORMULA" + ], + "133": [ + "Name: 8\nType: MEASUREMENT" + ], + "134": [ + "Name: global filter\nType: TASK_OR_PROBLEM", + "Name: sub problems\nType: TASK_OR_PROBLEM", + "Name: intermediate insights\nType: TASK_OR_PROBLEM", + "Name: evidence blocks\nType: TASK_OR_PROBLEM", + "Name: statistical counts\nType: TASK_OR_PROBLEM", + "Name: partial results\nType: TASK_OR_PROBLEM", + "Name: detailed content extraction\nType: TASK_OR_PROBLEM", + "Name: final response\nType: TASK_OR_PROBLEM", + "Name: answers to decomposed sub queries\nType: TASK_OR_PROBLEM", + "Name: reduce operator\nType: TASK_OR_PROBLEM", + "Name: map operator\nType: TASK_OR_PROBLEM", + "Name: high level reasoning synthesis\nType: TASK_OR_PROBLEM", + "Name: decompose\nType: TASK_OR_PROBLEM" + ], + "135": [ + "Name: figure 4 b\nType: IMAGE", + "Name: select by entity\nType: METHOD_OR_TECHNIQUE", + "Name: reduce\nType: METHOD_OR_TECHNIQUE", + "Name: agent\nType: PERSON", + "Name: extract\nType: METHOD_OR_TECHNIQUE", + "Name: planning phase\nType: TASK_OR_PROBLEM", + "Name: single hop\nType: TASK_OR_PROBLEM", + "Name: skyline filtering\nType: METHOD_OR_TECHNIQUE", + "Name: car\nType: PRODUCT", + "Name: reasoning\nType: METHOD_OR_TECHNIQUE", + "Name: answer\nType: TASK_OR_PROBLEM", + "Name: ranking prompt example\nType: TASK_OR_PROBLEM" + ], + "136": [ + "Name: 6 experiments\nType: SECTION_TITLE", + "Name: experiments\nType: TASK_OR_PROBLEM" + ], + "137": [ + "Name: efficiency\nType: EVALUATION_METRIC", + "Name: bookrag\nType: PRODUCT", + "Name: baseline methods\nType: METHOD_OR_TECHNIQUE", + "Name: document qa tasks\nType: TASK_OR_PROBLEM", + "Name: accuracy\nType: EVALUATION_METRIC" + ], + "138": [ + "Name: 6.1 setup\nType: SECTION_TITLE" + ], + "139": [ + "Name: experiments\nType: TASK_OR_PROBLEM", + "Name: datasets\nType: DATASET_OR_CORPUS", + "Name: exact match\nType: EVALUATION_METRIC", + "Name: f1 score\nType: EVALUATION_METRIC", + "Name: em\nType: EVALUATION_METRIC", + "Name: table 4\nType: TABLE", + "Name: our\nType: ORGANIZATION", + "Name: f1\nType: EVALUATION_METRIC" + ], + "140": [ + "Name: texts/143\nType: SECTION_TITLE", + "Name: table: cref='#/texts/143'...\nType: TABLE" + ], + "141": [ + "Name: guidebooks\nType: PRODUCT", + "Name: scientific papers\nType: PRODUCT", + "Name: figures\nType: IMAGE", + "Name: tables\nType: TABLE", + "Name: qasper\nType: DATASET_OR_CORPUS", + "Name: financial reports\nType: PRODUCT", + "Name: rag systems\nType: SOFTWARE", + "Name: qa pairs\nType: TASK_OR_PROBLEM", + "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "Name: industry files\nType: PRODUCT", + "Name: global level questions\nType: TASK_OR_PROBLEM", + "Name: wikipedia pages\nType: LOCATION", + "Name: human annotators\nType: PERSON", + "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "Name: table 4\nType: TABLE", + "Name: html type documents\nType: PRODUCT", + "Name: 20\nType: PERCENTAGE", + "Name: m3docvqa\nType: DATASET_OR_CORPUS", + "Name: complex document qa tasks\nType: TASK_OR_PROBLEM" + ], + "142": [ + "Name: wikipedia\nType: ORGANIZATION", + "Name: https www wikipedia org\nType: LOCATION" + ], + "144": [ + "Name: exact match\nType: EVALUATION_METRIC", + "Name: titles\nType: TABLE", + "Name: ground truth\nType: CONCEPT", + "Name: tables\nType: TABLE", + "Name: qasper\nType: DATASET_OR_CORPUS", + "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "Name: accuracy\nType: EVALUATION_METRIC", + "Name: query\nType: TASK_OR_PROBLEM", + "Name: page numbers\nType: UNKNOWN", + "Name: token usage\nType: EVALUATION_METRIC", + "Name: metadata\nType: CONCEPT", + "Name: token based f1 score\nType: EVALUATION_METRIC", + "Name: evidence statements\nType: UNKNOWN", + "Name: retrieval recall\nType: EVALUATION_METRIC", + "Name: modality\nType: CONCEPT", + "Name: images\nType: TABLE", + "Name: qa\nType: TASK_OR_PROBLEM", + "Name: candidate blocks\nType: TABLE", + "Name: pdf blocks\nType: TABLE", + "Name: pdf parsing\nType: METHOD_OR_TECHNIQUE", + "Name: texts\nType: TABLE", + "Name: time cost\nType: EVALUATION_METRIC", + "Name: response phase\nType: TIME", + "Name: formulas\nType: TABLE" + ], + "145": [ + "Name: our experiments\nType: EVENT", + "Name: three model configurations\nType: MODEL_OR_ARCHITECTURE", + "Name: baselines\nType: TASK_OR_PROBLEM" + ], + "146": [ + "Name: bm25\nType: MODEL_OR_ARCHITECTURE", + "Name: semantic chunking\nType: METHOD_OR_TECHNIQUE", + "Name: document analysis\nType: TASK_OR_PROBLEM", + "Name: raw text\nType: MATERIAL", + "Name: conventional rag\nType: TASK_OR_PROBLEM", + "Name: layout vanilla\nType: MODEL_OR_ARCHITECTURE", + "Name: vanilla rag\nType: MODEL_OR_ARCHITECTURE", + "Name: document layout analysis\nType: METHOD_OR_TECHNIQUE", + "Name: segments\nType: MEASUREMENT" + ], + "147": [ + "Name: graph based rag\nType: TECHNOLOGY", + "Name: local search methods\nType: METHOD_OR_TECHNIQUE", + "Name: retrieval\nType: TASK_OR_PROBLEM", + "Name: graphrag local\nType: TECHNOLOGY", + "Name: graph data\nType: TECHNOLOGY", + "Name: global search methods\nType: METHOD_OR_TECHNIQUE", + "Name: raptor\nType: TECHNOLOGY", + "Name: graphrag global\nType: TECHNOLOGY", + "Name: graphrag\nType: TECHNOLOGY", + "Name: documents\nType: PRODUCT" + ], + "148": [ + "Name: treetraverse\nType: METHOD_OR_TECHNIQUE", + "Name: mm vanilla\nType: PRODUCT", + "Name: page 19\nType: PUBLICATION_VENUE", + "Name: personalized pagerank\nType: METHOD_OR_TECHNIQUE", + "Name: layoutsegmentedrag\nType: METHOD_OR_TECHNIQUE", + "Name: pageindex\nType: PRODUCT", + "Name: page 47\nType: PUBLICATION_VENUE", + "Name: page 39\nType: PUBLICATION_VENUE", + "Name: page 20\nType: PUBLICATION_VENUE", + "Name: hipporag\nType: METHOD_OR_ARCHITECTURE", + "Name: graphranker\nType: METHOD_OR_TECHNIQUE", + "Name: llm\nType: TECHNOLOGY", + "Name: docetl\nType: SOFTWARE" + ], + "149": [ + "Name: detailed configurations\nType: TASK_OR_PROBLEM", + "Name: github com sam234990 bookrag\nType: LOCATION", + "Name: baseline methods\nType: UNKNOWN", + "Name: state of theart\nType: METHOD_OR_TECHNIQUE", + "Name: robust document layout parsing\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: PRODUCT", + "Name: fair comparison\nType: TASK_OR_PROBLEM", + "Name: implementation details\nType: UNKNOWN", + "Name: mineru\nType: SOFTWARE", + "Name: technical report\nType: PUBLICATION_VENUE", + "Name: prompts\nType: TASK_OR_PROBLEM", + "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "Name: appendix\nType: SECTION_TITLE", + "Name: 0 6\nType: MEASUREMENT", + "Name: gradient g\nType: PARAMETER_OR_VARIABLE" + ], + "150": [ + "Name: 6.2 overall results\nType: SECTION_TITLE" + ], + "151": [ + "Name: query efficiency\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: PRODUCT", + "Name: state of the art baselines\nType: PRODUCT", + "Name: qa\nType: TASK_OR_PROBLEM", + "Name: evaluation\nType: EVENT", + "Name: retrieval\nType: TASK_OR_PROBLEM" + ], + "152": [ + "Name: generation\nType: TASK_OR_PROBLEM", + "Name: vanilla rag\nType: PRODUCT", + "Name: tree graph bookindex\nType: PRODUCT", + "Name: exact match\nType: EVALUATION_METRIC", + "Name: queries\nType: CONCEPT", + "Name: tree traverse\nType: PRODUCT", + "Name: static query workflow\nType: TASK_OR_PROBLEM", + "Name: hierarchical navigation\nType: METHOD_OR_TECHNIQUE", + "Name: top performing baseline\nType: PRODUCT", + "Name: bookrag\nType: PRODUCT", + "Name: graphranker\nType: PRODUCT", + "Name: irrelevant scopes\nType: CONCEPT", + "Name: existing baselines\nType: PRODUCT", + "Name: baselines\nType: PRODUCT", + "Name: graph based reasoning\nType: METHOD_OR_TECHNIQUE", + "Name: context fragmentation\nType: TASK_OR_PROBLEM", + "Name: layout vanilla\nType: PRODUCT", + "Name: qa performance\nType: TASK_OR_PROBLEM", + "Name: agent based planning\nType: PRODUCT", + "Name: m3docvqa\nType: DATASET_OR_CORPUS", + "Name: 18 0\nType: PERCENTAGE", + "Name: table 5\nType: TABLE", + "Name: cross sectional context\nType: CONCEPT", + "Name: retrieval\nType: TASK_OR_PROBLEM", + "Name: workflows\nType: CONCEPT" + ], + "153": [ + "Name: different methods\nType: METHOD_OR_TECHNIQUE", + "Name: bold\nType: COLOR", + "Name: complex document qa tasks\nType: TASK_OR_PROBLEM", + "Name: underlined\nType: SHAPE", + "Name: second best results\nType: EVALUATION_METRIC", + "Name: table 5\nType: TABLE", + "Name: best results\nType: EVALUATION_METRIC", + "Name: performance comparison\nType: TASK_OR_PROBLEM", + "Name: datasets\nType: DATASET_OR_CORPUS" + ], + "154": [ + "Name: cref\nType: PARAMETER_OR_VARIABLE", + "Name: table: cref='#/texts/156'...\nType: TABLE" + ], + "155": [ + "Name: table 6\nType: TABLE", + "Name: retrieval recall\nType: EVALUATION_METRIC", + "Name: layout based methods\nType: METHOD_OR_TECHNIQUE" + ], + "156": [ + "Name: cref='#/texts/158'\nType: TABLE" + ], + "157": [ + "Name: 9 87\nType: MEASUREMENT", + "Name: reasoner\nType: SOFTWARE", + "Name: 44 5\nType: PERCENTAGE", + "Name: ift inspired selector reasoner workflow\nType: METHOD_OR_TECHNIQUE", + "Name: layout based baselines\nType: PRODUCT", + "Name: skyline ranker\nType: SOFTWARE", + "Name: 10\nType: MEASUREMENT", + "Name: query\nType: TASK_OR_PROBLEM", + "Name: selector\nType: SOFTWARE", + "Name: bookrag\nType: PRODUCT", + "Name: three datasets\nType: DATASET_OR_CORPUS", + "Name: graphranker\nType: PRODUCT", + "Name: 71 2\nType: PERCENTAGE", + "Name: 6 86\nType: MEASUREMENT", + "Name: retrieval recall\nType: EVALUATION_METRIC", + "Name: retrieval performance\nType: TASK_OR_PROBLEM", + "Name: ground truth layout blocks\nType: DATASET_OR_CORPUS", + "Name: information patch\nType: TASK_OR_PROBLEM", + "Name: m3docvqa\nType: DATASET_OR_CORPUS", + "Name: standard top k setting\nType: METHOD_OR_TECHNIQUE", + "Name: candidate size\nType: PARAMETER_OR_VARIABLE", + "Name: agent based planning\nType: METHOD_OR_TECHNIQUE", + "Name: 8 6\nType: MEASUREMENT" + ], + "158": [ + "Name: query efficiency\nType: EVALUATION_METRIC", + "Name: figure 5\nType: IMAGE" + ], + "159": [ + "Name: mm-vanilla\nType: METHOD_OR_TECHNIQUE", + "Name: query time\nType: EVALUATION_METRIC", + "Name: bookrag\nType: METHOD_OR_TECHNIQUE", + "Name: token (m)\nType: MEASUREMENT", + "Name: qasper\nType: DATASET_OR_CORPUS", + "Name: graphranker\nType: METHOD_OR_TECHNIQUE", + "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "Name: time (s)\nType: MEASUREMENT", + "Name: raptor\nType: METHOD_OR_TECHNIQUE", + "Name: token cost\nType: EVALUATION_METRIC", + "Name: tree-traverse\nType: METHOD_OR_TECHNIQUE", + "Name: layout + vanilla\nType: METHOD_OR_TECHNIQUE", + "Name: figure 5\nType: IMAGE", + "Name: graphrag-global\nType: METHOD_OR_TECHNIQUE", + "Name: vanilla rag\nType: METHOD_OR_TECHNIQUE", + "Name: image cref='#/texts/161'\nType: UNKNOWN", + "Name: bm25\nType: METHOD_OR_TECHNIQUE", + "Name: docetl\nType: SOFTWARE", + "Name: m3docvqa\nType: DATASET_OR_CORPUS", + "Name: graphrag-local\nType: METHOD_OR_TECHNIQUE" + ], + "160": [ + "Name: vlm\nType: TECHNOLOGY", + "Name: 5 million\nType: MEASUREMENT", + "Name: order of magnitude\nType: MEASUREMENT", + "Name: bookrag\nType: PRODUCT", + "Name: text based rag approaches\nType: TECHNOLOGY", + "Name: graph based rag methods\nType: TECHNOLOGY", + "Name: 53 million tokens\nType: MEASUREMENT", + "Name: figure 5\nType: IMAGE", + "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "Name: docetl\nType: PRODUCT", + "Name: 2\nType: MEASUREMENT" + ], + "161": [ + "Name: 10\nType: MEASUREMENT" + ], + "162": [ + "Name: 6.3 detailed analysis\nType: SECTION_TITLE" + ], + "163": [ + "Name: case study\nType: TASK_OR_PROBLEM", + "Name: entity resolution method\nType: METHOD_OR_TECHNIQUE", + "Name: bookrag\nType: PRODUCT", + "Name: error analysis\nType: METHOD_OR_TECHNIQUE", + "Name: qa performance\nType: EVALUATION_METRIC", + "Name: gradient based er\nType: METHOD_OR_TECHNIQUE", + "Name: ablation study\nType: METHOD_OR_TECHNIQUE", + "Name: query types\nType: TASK_OR_PROBLEM" + ], + "164": [ + "Name: bookrag\nType: PRODUCT", + "Name: ablation study\nType: TASK_OR_PROBLEM" + ], + "165": [ + "Name: same name entities\nType: TASK_OR_PROBLEM", + "Name: gradient er\nType: METHOD_OR_TECHNIQUE", + "Name: w o gradient er\nType: TASK_OR_PROBLEM", + "Name: basic er\nType: METHOD_OR_TECHNIQUE" + ], + "166": [ + "Name: static standard workflow\nType: TASK_OR_PROBLEM", + "Name: planning\nType: TASK_OR_PROBLEM", + "Name: queries\nType: TASK_OR_PROBLEM", + "Name: agent based planning\nType: METHOD_OR_TECHNIQUE" + ], + "167": [ + "Name: candidate nodes\nType: TASK_OR_PROBLEM", + "Name: reasoners\nType: TECHNOLOGY", + "Name: selector\nType: TECHNOLOGY", + "Name: selector operators\nType: TECHNOLOGY" + ], + "168": [ + "Name: skyline ranker\nType: SOFTWARE", + "Name: graph reasoning\nType: TECHNOLOGY" + ], + "169": [ + "Name: text reasoning\nType: TASK_OR_PROBLEM", + "Name: skyline ranker\nType: SOFTWARE" + ], + "170": [ + "Name: exact match\nType: EVALUATION_METRIC", + "Name: bookrag\nType: PRODUCT", + "Name: f1 score\nType: EVALUATION_METRIC", + "Name: table 7\nType: TABLE", + "Name: em\nType: EVALUATION_METRIC", + "Name: qa\nType: TASK_OR_PROBLEM", + "Name: f1\nType: EVALUATION_METRIC" + ], + "171": [ + "Name: table: cref='#/texts/220'...\nType: TABLE", + "Name: cref\nType: PARAMETER_OR_VARIABLE" + ], + "172": [ + "Name: performance loss\nType: EVALUATION_METRIC", + "Name: selector\nType: METHOD_OR_TECHNIQUE", + "Name: w o selector variant\nType: TASK_OR_PROBLEM", + "Name: static workflow\nType: METHOD_OR_TECHNIQUE", + "Name: dynamic skyline filtering strategy\nType: METHOD_OR_TECHNIQUE", + "Name: qasper\nType: DATASET_OR_CORPUS", + "Name: tokens\nType: MEASUREMENT", + "Name: accuracy\nType: EVALUATION_METRIC", + "Name: bookrag\nType: PRODUCT", + "Name: table 7\nType: TABLE", + "Name: narrow then reason strategy\nType: METHOD_OR_TECHNIQUE", + "Name: w o gradient er variant\nType: TASK_OR_PROBLEM", + "Name: multi dimensional reasoning\nType: METHOD_OR_TECHNIQUE", + "Name: planning mechanism\nType: METHOD_OR_TECHNIQUE", + "Name: retrieval performance\nType: EVALUATION_METRIC", + "Name: performance degradation\nType: EVALUATION_METRIC", + "Name: computational cost\nType: MEASUREMENT", + "Name: gradient er\nType: METHOD_OR_TECHNIQUE", + "Name: agent based planning\nType: METHOD_OR_TECHNIQUE", + "Name: kg\nType: DATASET_OR_CORPUS", + "Name: queries\nType: TASK_OR_PROBLEM", + "Name: ift inspired selection mechanism\nType: METHOD_OR_TECHNIQUE" + ], + "173": [ + "Name: 11\nType: NUMBER" + ], + "174": [ + "Name: 3 6e 3\nType: MEASUREMENT", + "Name: absolute values\nType: MEASUREMENT", + "Name: figure 6\nType: IMAGE", + "Name: density values\nType: MEASUREMENT", + "Name: graph statistics\nType: TASK_OR_PROBLEM", + "Name: basic setting\nType: TASK_OR_PROBLEM" + ], + "175": [ + "Name: diameter\nType: PARAMETER_OR_VARIABLE", + "Name: basic\nType: MODEL_OR_ARCHITECTURE", + "Name: 3.6e-3\nType: MEASUREMENT", + "Name: qasper\nType: DATASET_OR_CORPUS", + "Name: cref='#/texts/224'\nType: IMAGE", + "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "Name: 15.0\nType: MEASUREMENT", + "Name: density\nType: PARAMETER_OR_VARIABLE", + "Name: # cc\nType: PARAMETER_OR_VARIABLE", + "Name: 169\nType: MEASUREMENT", + "Name: 531\nType: MEASUREMENT", + "Name: ratio\nType: EVALUATION_METRIC", + "Name: 5.4e-3\nType: MEASUREMENT", + "Name: figure (b)\nType: SECTION_TITLE", + "Name: 1327\nType: MEASUREMENT", + "Name: gradient-based er\nType: MODEL_OR_ARCHITECTURE", + "Name: 106\nType: MEASUREMENT", + "Name: figure (a)\nType: SECTION_TITLE", + "Name: # entity\nType: PARAMETER_OR_VARIABLE", + "Name: 14.8\nType: MEASUREMENT" + ], + "176": [ + "Name: gradient based entity resolution\nType: TASK_OR_PROBLEM", + "Name: basic kg construction\nType: TASK_OR_PROBLEM", + "Name: number of connected components\nType: EVALUATION_METRIC", + "Name: datasets\nType: DATASET_OR_CORPUS", + "Name: figure 6\nType: IMAGE", + "Name: basic baseline\nType: BENCHMARK", + "Name: many graph based methods\nType: ORGANIZATION", + "Name: graph reasoning\nType: TASK_OR_PROBLEM", + "Name: entity count\nType: EVALUATION_METRIC", + "Name: diameter of the largest connected component\nType: EVALUATION_METRIC", + "Name: er module\nType: METHOD_OR_TECHNIQUE", + "Name: 20\nType: PERCENTAGE", + "Name: 12\nType: PERCENTAGE", + "Name: density\nType: EVALUATION_METRIC" + ], + "177": [ + "Name: figure 7\nType: IMAGE", + "Name: global\nType: TASK_OR_PROBLEM", + "Name: blue bars\nType: IMAGE", + "Name: red bars\nType: IMAGE", + "Name: exact match\nType: EVALUATION_METRIC", + "Name: multi hop\nType: TASK_OR_PROBLEM", + "Name: f1 score\nType: EVALUATION_METRIC", + "Name: single hop\nType: TASK_OR_PROBLEM", + "Name: qa\nType: TASK_OR_PROBLEM", + "Name: qasper\nType: DATASET_OR_CORPUS", + "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "Name: accuracy\nType: EVALUATION_METRIC", + "Name: query types\nType: TASK_OR_PROBLEM" + ], + "178": [ + "Name: (a) mmlongbench\nType: DATASET_OR_CORPUS", + "Name: global\nType: TASK_OR_PROBLEM", + "Name: multi\nType: TASK_OR_PROBLEM", + "Name: f1-score\nType: EVALUATION_METRIC", + "Name: (b) qasper\nType: DATASET_OR_CORPUS", + "Name: em / accuracy\nType: EVALUATION_METRIC", + "Name: single\nType: TASK_OR_PROBLEM", + "Name: cref='#/texts/259'\nType: IMAGE", + "Name: score\nType: PARAMETER_OR_VARIABLE" + ], + "179": [ + "Name: figure 7\nType: IMAGE", + "Name: global aggregation\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: PRODUCT", + "Name: retrieving\nType: METHOD_OR_TECHNIQUE", + "Name: single hop\nType: TASK_OR_PROBLEM", + "Name: multihop\nType: TASK_OR_PROBLEM", + "Name: reasoning\nType: METHOD_OR_TECHNIQUE", + "Name: disjoint pieces of evidence\nType: DATASET_OR_CORPUS", + "Name: agent based planning strategy\nType: METHOD_OR_TECHNIQUE", + "Name: qa performance\nType: TASK_OR_PROBLEM", + "Name: query types\nType: TASK_OR_PROBLEM" + ], + "180": [ + "Name: four types\nType: MEASUREMENT", + "Name: 200 sampled queries\nType: MEASUREMENT", + "Name: error response analysis\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: PRODUCT", + "Name: figure 9\nType: IMAGE" + ], + "181": [ + "Name: gray text\nType: COLOR", + "Name: case study\nType: EVENT", + "Name: cyan text\nType: COLOR", + "Name: query types\nType: TASK_OR_PROBLEM", + "Name: figure 8\nType: IMAGE", + "Name: internal process\nType: TASK_OR_PROBLEM", + "Name: qasper\nType: DATASET_OR_CORPUS", + "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "Name: bookrag\nType: SOFTWARE" + ], + "182": [ + "Name: cross-entropy\nType: EVALUATION_METRIC", + "Name: single-hop case from qasper\nType: SECTION_TITLE", + "Name: lstm with elmo system\nType: MODEL_OR_ARCHITECTURE", + "Name: agent-based planning\nType: METHOD_OR_TECHNIQUE", + "Name: table 1\nType: TABLE", + "Name: reduce\nType: SOFTWARE", + "Name: qasper\nType: DATASET_OR_CORPUS", + "Name: decompose operator\nType: SOFTWARE", + "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "Name: graph_reasoning\nType: TASK_OR_PROBLEM", + "Name: bookrag response of different query types\nType: IMAGE", + "Name: discount factor\nType: PARAMETER_OR_VARIABLE", + "Name: text_reasoning\nType: TASK_OR_PROBLEM", + "Name: skyline_ranker\nType: SOFTWARE", + "Name: global aggregation case from mmlongbench\nType: SECTION_TITLE", + "Name: diacritic swapping\nType: METHOD_OR_TECHNIQUE", + "Name: multi-hop case from qasper\nType: SECTION_TITLE", + "Name: interpretable system\nType: MODEL_OR_ARCHITECTURE", + "Name: select_by_entity operator\nType: SOFTWARE", + "Name: filter_range\nType: SOFTWARE", + "Name: filter operators\nType: SOFTWARE", + "Name: image cref='#/texts/282'\nType: UNKNOWN", + "Name: binary reward system\nType: TECHNOLOGY", + "Name: lstm-elmo net\nType: MODEL_OR_ARCHITECTURE", + "Name: filter_modal\nType: SOFTWARE" + ], + "183": [ + "Name: qasper\nType: DATASET_OR_CORPUS", + "Name: mmlongbench\nType: DATASET_OR_CORPUS", + "Name: 200\nType: MEASUREMENT", + "Name: error analysis\nType: TASK_OR_PROBLEM", + "Name: figure 9\nType: IMAGE" + ], + "184": [ + "Name: (a) mmlongbench\nType: DATASET_OR_CORPUS", + "Name: correct (79)\nType: EVALUATION_METRIC", + "Name: plan error (27)\nType: TASK_OR_PROBLEM", + "Name: all queries (200)\nType: MEASUREMENT", + "Name: correct (117)\nType: EVALUATION_METRIC", + "Name: cref='#/texts/348'\nType: IMAGE", + "Name: successful parsing (194)\nType: MEASUREMENT", + "Name: retrieval error (26)\nType: TASK_OR_PROBLEM", + "Name: (b) qasper\nType: DATASET_OR_CORPUS", + "Name: successful parsing (193)\nType: MEASUREMENT", + "Name: generation error (30)\nType: TASK_OR_PROBLEM", + "Name: plan error (20)\nType: TASK_OR_PROBLEM", + "Name: parsing error (6)\nType: TASK_OR_PROBLEM", + "Name: retrieval error (52)\nType: TASK_OR_PROBLEM", + "Name: generation error (36)\nType: TASK_OR_PROBLEM", + "Name: parsing error (7)\nType: TASK_OR_PROBLEM" + ], + "185": [ + "Name: cohesive final answer\nType: TASK_OR_PROBLEM", + "Name: generation\nType: TASK_OR_PROBLEM", + "Name: pdf parsing\nType: TASK_OR_PROBLEM", + "Name: multimodal evidence\nType: TASK_OR_PROBLEM", + "Name: retrieval error\nType: TASK_OR_PROBLEM", + "Name: single hop queries\nType: TASK_OR_PROBLEM", + "Name: multi hop sub tasks\nType: TASK_OR_PROBLEM", + "Name: qualitative analysis\nType: METHOD_OR_TECHNIQUE", + "Name: model\nType: TASK_OR_PROBLEM", + "Name: fragmentation\nType: TASK_OR_PROBLEM", + "Name: generation error\nType: TASK_OR_PROBLEM", + "Name: plan\nType: TASK_OR_PROBLEM", + "Name: planner\nType: TASK_OR_PROBLEM", + "Name: disjointed retrieval paths\nType: TASK_OR_PROBLEM", + "Name: plan error\nType: TASK_OR_PROBLEM", + "Name: results\nType: TASK_OR_PROBLEM", + "Name: scattered sub responses\nType: TASK_OR_PROBLEM", + "Name: retrieval\nType: TASK_OR_PROBLEM" + ], + "186": [ + "Name: 24\nType: MEASUREMENT", + "Name: case study\nType: TASK_OR_PROBLEM", + "Name: search spaces\nType: TASK_OR_PROBLEM", + "Name: relevant evidence\nType: TASK_OR_PROBLEM", + "Name: multi hop\nType: TASK_OR_PROBLEM", + "Name: figure 8\nType: IMAGE", + "Name: bookrag\nType: PRODUCT", + "Name: noise\nType: TASK_OR_PROBLEM", + "Name: precise answer generation\nType: TASK_OR_PROBLEM", + "Name: single hop\nType: TASK_OR_PROBLEM", + "Name: answering workflow\nType: TASK_OR_PROBLEM", + "Name: filter\nType: METHOD_OR_TECHNIQUE", + "Name: 134\nType: MEASUREMENT", + "Name: select\nType: METHOD_OR_TECHNIQUE", + "Name: global queries\nType: TASK_OR_PROBLEM", + "Name: decompose\nType: METHOD_OR_TECHNIQUE" + ], + "187": [ + "Name: 7 conclusion\nType: SECTION_TITLE" + ], + "188": [ + "Name: reasoning operators\nType: SOFTWARE", + "Name: agent based method\nType: METHOD_OR_TECHNIQUE", + "Name: answer accuracy\nType: EVALUATION_METRIC", + "Name: paper\nType: PUBLICATION_VENUE", + "Name: knowledge extraction\nType: TASK_OR_PROBLEM", + "Name: retrieval operators\nType: SOFTWARE", + "Name: intelligent querying\nType: TASK_OR_PROBLEM", + "Name: bookrag\nType: PRODUCT", + "Name: benchmarks\nType: BENCHMARK", + "Name: tree graph index\nType: TECHNOLOGY", + "Name: existing baselines\nType: PRODUCT", + "Name: document native database system\nType: PRODUCT", + "Name: book index\nType: PRODUCT", + "Name: data formatting\nType: TASK_OR_PROBLEM", + "Name: retrieval precision\nType: EVALUATION_METRIC" + ], + "189": [ + "Name: 12\nType: MEASUREMENT" + ], + "190": [ + "Name: references\nType: SECTION_TITLE" + ], + "191": [ + "Name: christopher r\nType: PERSON", + "Name: simran arora\nType: PERSON", + "Name: heterogeneous data lakes\nType: DATASET_OR_CORPUS", + "Name: structured views\nType: PRODUCT", + "Name: 92 105\nType: MEASUREMENT", + "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "Name: 2023\nType: DATE", + "Name: andrew hojel\nType: PERSON", + "Name: language models\nType: TECHNOLOGY", + "Name: 17\nType: MEASUREMENT", + "Name: sabri eyuboglu\nType: PERSON", + "Name: avanika narayan\nType: PERSON", + "Name: simple systems\nType: PRODUCT", + "Name: brandon yang\nType: PERSON", + "Name: immanuel trummer\nType: PERSON", + "Name: 2\nType: MEASUREMENT", + "Name: vldb endowment\nType: ORGANIZATION" + ], + "192": [ + "Name: 2024\nType: DATE", + "Name: yizhong wang\nType: PERSON", + "Name: international conference on learning representations\nType: PUBLICATION_VENUE", + "Name: self rag\nType: MODEL_OR_ARCHITECTURE", + "Name: et al\nType: PERSON", + "Name: iclr\nType: PUBLICATION_VENUE", + "Name: zeqiu wu\nType: PERSON", + "Name: akari asai\nType: PERSON" + ], + "193": [ + "Name: learning to retrieve generate and critique through self reflection\nType: METHOD_OR_TECHNIQUE", + "Name: arxiv preprint arxiv 2310 11511\nType: PUBLICATION_VENUE", + "Name: 2023\nType: DATE", + "Name: yizhong wang\nType: PERSON", + "Name: self rag\nType: MODEL_OR_ARCHITECTURE", + "Name: zeqiu wu\nType: PERSON", + "Name: arxiv\nType: ORGANIZATION", + "Name: akari asai\nType: PERSON", + "Name: avirup sil\nType: PERSON", + "Name: hannaneh hajishirzi\nType: PERSON" + ], + "194": [ + "Name: preprint\nType: FILE_TYPE", + "Name: keqin chen\nType: PERSON", + "Name: qwen2 5 vl\nType: MODEL_OR_ARCHITECTURE", + "Name: shijie wang\nType: PERSON", + "Name: sibo song\nType: PERSON", + "Name: peng wang\nType: PERSON", + "Name: et al\nType: PERSON", + "Name: jun tang\nType: PERSON", + "Name: technical report\nType: PUBLICATION_VENUE", + "Name: jialin wang\nType: PERSON", + "Name: wenbin ge\nType: PERSON", + "Name: xuejing liu\nType: PERSON", + "Name: 2025\nType: DATE", + "Name: shuai bai\nType: PERSON", + "Name: arxiv 2502 13923\nType: FILE_TYPE", + "Name: qwen2 5 vl technical report\nType: PUBLICATION_VENUE", + "Name: arxiv\nType: PUBLICATION_VENUE", + "Name: kai dang\nType: PERSON" + ], + "195": [ + "Name: challenges\nType: TASK_OR_PROBLEM", + "Name: preprint\nType: FILE_TYPE", + "Name: question answering\nType: TASK_OR_PROBLEM", + "Name: yoan chabot\nType: PERSON", + "Name: survey on question answering over visually rich documents methods challenges and trends\nType: BOOK", + "Name: methods\nType: METHOD_OR_TECHNIQUE", + "Name: arxiv 2501 02235\nType: FILE_TYPE", + "Name: camille barboule\nType: PERSON", + "Name: benjamin piwowarski\nType: PERSON", + "Name: 2025\nType: DATE", + "Name: visually rich documents\nType: DATASET_OR_CORPUS", + "Name: trends\nType: RESEARCH_FIELD", + "Name: arxiv\nType: PUBLICATION_VENUE" + ], + "196": [ + "Name: zengyi gao\nType: PERSON", + "Name: jianliang xu\nType: PERSON", + "Name: xike xie\nType: PERSON", + "Name: proc vldb endow\nType: PUBLICATION_VENUE", + "Name: 10\nType: MEASUREMENT", + "Name: modularizing\nType: METHOD_OR_TECHNIQUE", + "Name: graph based retrieval augmented generation\nType: METHOD_OR_TECHNIQUE", + "Name: https doi org 10 14778 3748191 3748194\nType: URL", + "Name: 18\nType: MEASUREMENT", + "Name: design space exploration\nType: TASK_OR_PROBLEM", + "Name: yukun cao\nType: PERSON", + "Name: june 2025\nType: DATE", + "Name: 2025\nType: DATE", + "Name: lego graphrag\nType: PRODUCT", + "Name: 3269 3283\nType: MEASUREMENT", + "Name: zhiyang li\nType: PERSON", + "Name: s kevin zhou\nType: PERSON" + ], + "197": [ + "Name: 11\nType: MEASUREMENT", + "Name: jiajun li\nType: PERSON", + "Name: lei cao\nType: PERSON", + "Name: guoren wang\nType: PERSON", + "Name: proceedings of the vldb endowment\nType: PUBLICATION_VENUE", + "Name: 3695 3707\nType: MEASUREMENT", + "Name: budget aware structural table extraction\nType: TASK_OR_PROBLEM", + "Name: chengliang chai\nType: PERSON", + "Name: 18\nType: MEASUREMENT", + "Name: unstructured documents\nType: DATASET_OR_CORPUS", + "Name: yuhao deng\nType: PERSON", + "Name: yuanhao zhong\nType: PERSON", + "Name: 2025\nType: DATE", + "Name: doctopus\nType: PRODUCT", + "Name: ye yuan\nType: PERSON" + ], + "198": [ + "Name: arxiv preprint arxiv 2010 02559\nType: PUBLICATION_VENUE", + "Name: ilias chalkidis\nType: PERSON", + "Name: legal bert\nType: MODEL_OR_ARCHITECTURE", + "Name: 2020\nType: DATE", + "Name: law school\nType: LOCATION", + "Name: ion androutsopoulos\nType: PERSON", + "Name: manos fergadiotis\nType: PERSON", + "Name: prodromos malakasiotis\nType: PERSON", + "Name: muppets\nType: PRODUCT", + "Name: nikolaos aletras\nType: PERSON" + ], + "199": [ + "Name: 3\nType: MEASUREMENT", + "Name: yeye he\nType: PERSON", + "Name: 2024\nType: DATE", + "Name: haidong zhang\nType: PERSON", + "Name: sibei chen\nType: PERSON", + "Name: dongmei zhang\nType: PERSON", + "Name: auto formula\nType: PRODUCT", + "Name: contrastive learning\nType: METHOD_OR_TECHNIQUE", + "Name: 1 27\nType: MEASUREMENT", + "Name: surajit chaudhuri\nType: PERSON", + "Name: spreadsheets\nType: PRODUCT", + "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE", + "Name: table representations\nType: DATASET_OR_CORPUS", + "Name: ju fan\nType: PERSON", + "Name: formulas\nType: PRODUCT", + "Name: song ge\nType: PERSON", + "Name: weiwei cui\nType: PERSON", + "Name: 2\nType: MEASUREMENT" + ], + "200": [ + "Name: data preparation\nType: TASK_OR_PROBLEM", + "Name: human generated pipelines\nType: METHOD_OR_TECHNIQUE", + "Name: xiaoyong du\nType: PERSON", + "Name: 2023\nType: DATE", + "Name: haipipe\nType: PRODUCT", + "Name: chengliang chai\nType: PERSON", + "Name: sibei chen\nType: PERSON", + "Name: 1 26\nType: MEASUREMENT", + "Name: acm\nType: ORGANIZATION", + "Name: guoliang li\nType: PERSON", + "Name: proceedings of the acm on management of data\nType: PUBLICATION_VENUE", + "Name: ju fan\nType: PERSON", + "Name: xuemi yan\nType: PERSON", + "Name: machine generated pipelines\nType: METHOD_OR_TECHNIQUE", + "Name: 1\nType: MEASUREMENT", + "Name: nan tang\nType: PERSON" + ], + "201": [ + "Name: jaemin cho\nType: PERSON", + "Name: multi modal retrieval\nType: METHOD_OR_TECHNIQUE", + "Name: arxiv 2411 04952\nType: FILE_TYPE", + "Name: yujie he\nType: PERSON", + "Name: 2024\nType: DATE", + "Name: multi page multidocument understanding\nType: TASK_OR_PROBLEM", + "Name: ozan irsoy\nType: PERSON", + "Name: debanjan mahata\nType: PERSON", + "Name: m3docrag\nType: PRODUCT", + "Name: arxiv preprint\nType: PUBLICATION_VENUE", + "Name: arxiv\nType: PUBLICATION_VENUE", + "Name: mohit bansal\nType: PERSON" + ], + "202": [ + "Name: 6\nType: MEASUREMENT", + "Name: vassilis christophides\nType: PERSON", + "Name: george papadakis\nType: PERSON", + "Name: vasilis efthymiou\nType: PERSON", + "Name: 53\nType: MEASUREMENT", + "Name: an overview of end to end entity resolution for big data\nType: BOOK", + "Name: 2020\nType: DATE", + "Name: 1 42\nType: MEASUREMENT", + "Name: end to end entity resolution\nType: TASK_OR_PROBLEM", + "Name: csur\nType: PUBLICATION_VENUE", + "Name: big data\nType: DATASET_OR_CORPUS", + "Name: kostas stefanidis\nType: PERSON", + "Name: themis palpanas\nType: PERSON", + "Name: acm computing surveys\nType: PUBLICATION_VENUE" + ], + "203": [ + "Name: evan rosen\nType: PERSON", + "Name: inderjit dhillon\nType: PERSON", + "Name: eric bieber\nType: PERSON", + "Name: gemini 2 5 pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities\nType: BOOK", + "Name: marcel blistein\nType: PERSON", + "Name: arxiv\nType: PUBLICATION_VENUE", + "Name: next generation agentic capabilities\nType: TASK_OR_PROBLEM", + "Name: ori ram\nType: PERSON", + "Name: 2025\nType: DATE", + "Name: multimodality\nType: TASK_OR_PROBLEM", + "Name: arxiv 2507 06261\nType: FILE_TYPE", + "Name: mike schaekermann\nType: PERSON", + "Name: noveen sachdeva\nType: PERSON", + "Name: ice pasupat\nType: PERSON", + "Name: gemini 2 5\nType: PRODUCT", + "Name: et al\nType: PERSON", + "Name: long context\nType: TASK_OR_PROBLEM", + "Name: arxiv preprint\nType: FILE_TYPE", + "Name: advanced reasoning\nType: TASK_OR_PROBLEM", + "Name: dan zhang\nType: PERSON", + "Name: gheorghe comanici\nType: PERSON" + ], + "204": [ + "Name: noah a smith\nType: PERSON", + "Name: pradeep dasigi\nType: PERSON", + "Name: kyle lo\nType: PERSON", + "Name: matt gardner\nType: PERSON", + "Name: arxiv preprint arxiv 2105 03011\nType: PUBLICATION_VENUE", + "Name: 2021\nType: DATE", + "Name: research papers\nType: DATASET_OR_CORPUS", + "Name: a dataset of information seeking questions and answers anchored in research papers\nType: PRODUCT", + "Name: arman cohan\nType: PERSON", + "Name: iz beltagy\nType: PERSON", + "Name: answers\nType: TASK_OR_PROBLEM", + "Name: information seeking questions\nType: TASK_OR_PROBLEM" + ], + "205": [ + "Name: arxiv preprint arxiv 2302 09051\nType: PUBLICATION_VENUE", + "Name: emmanuel bruno\nType: PERSON", + "Name: elisabeth murisasco\nType: PERSON", + "Name: xavier daull\nType: PERSON", + "Name: 2023\nType: DATE", + "Name: patrice bellot\nType: PERSON", + "Name: arxiv\nType: ORGANIZATION", + "Name: complex qa and language models hybrid architectures survey\nType: BOOK", + "Name: 2302 09051\nType: FILE_TYPE", + "Name: vincent martin\nType: PERSON" + ], + "206": [ + "Name: jonathan larson\nType: PERSON", + "Name: from local to global a graph rag approach to query focused summarization\nType: BOOK", + "Name: ha trinh\nType: PERSON", + "Name: apurva mody\nType: PERSON", + "Name: global\nType: CONCEPT", + "Name: 2024\nType: DATE", + "Name: query focused summarization\nType: TASK_OR_PROBLEM", + "Name: darren edge\nType: PERSON", + "Name: steven truitt\nType: PERSON", + "Name: arxiv 2404 16130\nType: PUBLICATION_VENUE", + "Name: alex chao\nType: PERSON", + "Name: joshua bradley\nType: PERSON", + "Name: newman cheng\nType: PERSON", + "Name: local\nType: CONCEPT", + "Name: graph rag\nType: TECHNOLOGY", + "Name: arxiv\nType: PUBLICATION_VENUE" + ], + "207": [ + "Name: xinyu gao\nType: PERSON", + "Name: jinliu pan\nType: PERSON", + "Name: jiawei sun\nType: PERSON", + "Name: yunfan gao\nType: PERSON", + "Name: 2023\nType: DATE", + "Name: retrieval augmented generation\nType: TECHNOLOGY", + "Name: kangxiang jia\nType: PERSON", + "Name: haofen wang\nType: PERSON", + "Name: yuxi bi\nType: PERSON", + "Name: yun xiong\nType: PERSON", + "Name: large language models\nType: TECHNOLOGY", + "Name: arxiv\nType: ORGANIZATION", + "Name: retrieval augmented generation for large language models a survey\nType: BOOK", + "Name: 2312 10997\nType: FILE_TYPE", + "Name: arxiv preprint arxiv 2312 10997\nType: PUBLICATION_VENUE", + "Name: yi dai\nType: PERSON" + ], + "208": [ + "Name: simple\nType: CONCEPT", + "Name: lightrag\nType: PRODUCT", + "Name: 2024\nType: DATE", + "Name: chao huang\nType: PERSON", + "Name: fast\nType: CONCEPT", + "Name: retrieval augmented generation\nType: TECHNOLOGY", + "Name: tu ao\nType: PERSON", + "Name: zirui guo\nType: PERSON", + "Name: lianghao xia\nType: PERSON", + "Name: yanhua yu\nType: PERSON", + "Name: arxiv e prints\nType: PUBLICATION_VENUE", + "Name: arxiv2410\nType: FILE_TYPE" + ], + "209": [ + "Name: arxiv 2405 14831\nType: FILE_TYPE", + "Name: neurobiologically inspired long term memory\nType: TASK_OR_PROBLEM", + "Name: yu su\nType: PERSON", + "Name: 2024\nType: DATE", + "Name: michihiro yasunaga\nType: PERSON", + "Name: yu gu\nType: PERSON", + "Name: bernal jim nez guti rrez\nType: PERSON", + "Name: hipporag\nType: MODEL_OR_ARCHITECTURE", + "Name: large language models\nType: PRODUCT", + "Name: yiheng shu\nType: PERSON", + "Name: arxiv\nType: PUBLICATION_VENUE" + ], + "210": [ + "Name: topic sensitive pagerank\nType: TECHNOLOGY", + "Name: 517 526\nType: MEASUREMENT", + "Name: world wide web\nType: TECHNOLOGY", + "Name: taher h haveliwala\nType: PERSON", + "Name: 11th international conference on world wide web\nType: EVENT", + "Name: 2002\nType: DATE" + ], + "211": [ + "Name: yann lecun\nType: PERSON", + "Name: retrieval augmented generation\nType: METHOD_OR_TECHNIQUE", + "Name: 2024\nType: DATE", + "Name: question answering\nType: TASK_OR_PROBLEM", + "Name: arxiv preprint\nType: FILE_TYPE", + "Name: xiaoxin he\nType: PERSON", + "Name: yijun tian\nType: PERSON", + "Name: xavier bresson\nType: PERSON", + "Name: textual graph understanding\nType: TASK_OR_PROBLEM", + "Name: g retriever\nType: MODEL_OR_ARCHITECTURE", + "Name: yifei sun\nType: PERSON", + "Name: arxiv 2402 07630\nType: PUBLICATION_VENUE", + "Name: nitesh v chawla\nType: PERSON", + "Name: arxiv\nType: PUBLICATION_VENUE", + "Name: bryan hooi\nType: PERSON", + "Name: thomas laurent\nType: PERSON" + ], + "212": [ + "Name: retrieval augmented language model\nType: MODEL_OR_ARCHITECTURE", + "Name: natural language processing\nType: RESEARCH_FIELD", + "Name: arxiv 2404 19543\nType: PRODUCT", + "Name: 2024\nType: DATE", + "Name: rag and rau a survey on retrieval augmented language model in natural language processing\nType: BOOK", + "Name: yucheng hu\nType: PERSON", + "Name: yuxing lu\nType: PERSON", + "Name: arxiv\nType: PUBLICATION_VENUE" + ], + "213": [ + "Name: retrieval augmented large language models\nType: MODEL_OR_ARCHITECTURE", + "Name: soyeong jeong\nType: PERSON", + "Name: 2024\nType: DATE", + "Name: et al\nType: PERSON", + "Name: adaptive rag\nType: MODEL_OR_ARCHITECTURE", + "Name: arxiv 2403 14403\nType: PUBLICATION_VENUE", + "Name: learning\nType: METHOD_OR_TECHNIQUE", + "Name: question complexity\nType: TASK_OR_PROBLEM", + "Name: arxiv\nType: PUBLICATION_VENUE", + "Name: jinheon baek\nType: PERSON" + ], + "214": [ + "Name: 13\nType: NUMBER" + ], + "215": [ + "Name: table: node 215...\nType: TABLE" + ], + "216": [ + "Name: maria lomeli\nType: PERSON", + "Name: timo schick\nType: PERSON", + "Name: nicola cancedda\nType: PERSON", + "Name: 2024\nType: DATE", + "Name: roberto dess\nType: PERSON", + "Name: luke zettlemoyer\nType: PERSON", + "Name: eric hambro\nType: PERSON", + "Name: jane dwivedi yu\nType: PERSON", + "Name: roberta raileanu\nType: PERSON", + "Name: thomas scialom\nType: PERSON" + ], + "217": [ + "Name: table: node 217...\nType: TABLE" + ], + "218": [ + "Name: table: node 218...\nType: TABLE" + ], + "219": [ + "Name: 14\nType: MEASUREMENT" + ], + "220": [ + "Name: a experimental details\nType: SECTION_TITLE" + ], + "221": [ + "Name: accuracy\nType: EVALUATION_METRIC", + "Name: a.1 evaluation metrics\nType: SECTION_TITLE" + ], + "222": [ + "Name: calculation procedures\nType: METHOD_OR_TECHNIQUE", + "Name: definitions\nType: CONCEPT", + "Name: main experiments\nType: EVENT", + "Name: metrics\nType: EVALUATION_METRIC" + ], + "223": [ + "Name: ground truth labels\nType: PRODUCT", + "Name: natural language responses\nType: PRODUCT", + "Name: the answer is\nType: PRODUCT", + "Name: a 1 1 answer extraction and normalization\nType: SECTION_TITLE", + "Name: standard rag models\nType: TECHNOLOGY", + "Name: 12 5\nType: MEASUREMENT", + "Name: option a\nType: PRODUCT" + ], + "224": [ + "Name: key information\nType: CONCEPT", + "Name: y hat\nType: PARAMETER_OR_VARIABLE", + "Name: span extraction\nType: TASK_OR_PROBLEM", + "Name: removing punctuation\nType: METHOD_OR_TECHNIQUE", + "Name: ground truth\nType: CONCEPT", + "Name: official evaluation protocols\nType: TASK_OR_PROBLEM", + "Name: lowercasing\nType: METHOD_OR_TECHNIQUE", + "Name: y gold\nType: PARAMETER_OR_VARIABLE", + "Name: n\nType: METHOD_OR_TECHNIQUE", + "Name: equation 16\nType: EQUATION_OR_FORMULA", + "Name: llm based extraction step\nType: METHOD_OR_TECHNIQUE", + "Name: y raw\nType: PARAMETER_OR_VARIABLE", + "Name: instruction\nType: PARAMETER_OR_VARIABLE", + "Name: key entity\nType: CONCEPT", + "Name: llmextract\nType: SOFTWARE", + "Name: rag system\nType: SYSTEM" + ], + "225": [ + "Name: formula (16)\nType: EQUATION_OR_FORMULA" + ], + "226": [ + "Name: ground truth (y_gold)\nType: PARAMETER_OR_VARIABLE", + "Name: substring inclusion relation\nType: METHOD_OR_TECHNIQUE", + "Name: qa performance metrics\nType: EVALUATION_METRIC", + "Name: a.1.2 qa performance metrics\nType: SECTION_TITLE", + "Name: model response (y_raw)\nType: PARAMETER_OR_VARIABLE", + "Name: accuracy\nType: EVALUATION_METRIC" + ], + "227": [ + "Name: 3\nType: PUBLICATION_VENUE", + "Name: 34\nType: PUBLICATION_VENUE", + "Name: model s generated response\nType: PRODUCT", + "Name: prior works\nType: PUBLICATION_VENUE", + "Name: normalized gold answer\nType: DATASET_OR_CORPUS", + "Name: strict exact match\nType: EVALUATION_METRIC", + "Name: soft match metric\nType: EVALUATION_METRIC", + "Name: accuracy inclusion based\nType: EVALUATION_METRIC", + "Name: 46\nType: PUBLICATION_VENUE", + "Name: llm\nType: TECHNOLOGY" + ], + "228": [ + "Name: formula (17)\nType: EQUATION_OR_FORMULA" + ], + "229": [ + "Name: accuracy\nType: EVALUATION_METRIC", + "Name: exact match\nType: EVALUATION_METRIC" + ], + "230": [ + "Name: formula (18)\nType: EQUATION_OR_FORMULA" + ], + "231": [ + "Name: token level f1 score\nType: EVALUATION_METRIC", + "Name: p\nType: PARAMETER_OR_VARIABLE", + "Name: f1 score\nType: EVALUATION_METRIC", + "Name: equation 19\nType: EQUATION_OR_FORMULA", + "Name: f1\nType: PARAMETER_OR_VARIABLE", + "Name: r\nType: PARAMETER_OR_VARIABLE" + ], + "232": [ + "Name: formula (19)\nType: EQUATION_OR_FORMULA" + ], + "233": [ + "Name: 15\nType: MEASUREMENT" + ], + "234": [ + "Name: retrieval quality\nType: EVALUATION_METRIC", + "Name: a.1.3 retrieval recall\nType: SECTION_TITLE", + "Name: b_ret\nType: PARAMETER_OR_VARIABLE", + "Name: recall_ret\nType: EVALUATION_METRIC", + "Name: pdf blocks\nType: DATASET_OR_CORPUS", + "Name: query q\nType: PARAMETER_OR_VARIABLE", + "Name: b_gold\nType: PARAMETER_OR_VARIABLE" + ], + "235": [ + "Name: formula (20)\nType: EQUATION_OR_FORMULA" + ], + "236": [ + "Name: recall\nType: EVALUATION_METRIC", + "Name: ground truth block\nType: TASK_OR_PROBLEM", + "Name: 0\nType: NUMBER", + "Name: candidate pool\nType: DATASET_OR_CORPUS", + "Name: pdf\nType: FILE_TYPE" + ], + "237": [ + "Name: a.2 implementation details\nType: SECTION_TITLE" + ], + "238": [ + "Name: robust document layout parsing\nType: TASK_OR_PROBLEM", + "Name: 1024gb\nType: MEASUREMENT", + "Name: fair comparison\nType: CONCEPT", + "Name: sam234990\nType: PERSON", + "Name: source code\nType: PRODUCT", + "Name: qwen family\nType: MODEL_OR_ARCHITECTURE", + "Name: ground truth images\nType: IMAGE", + "Name: https github com sam234990 bookrag\nType: LOCATION", + "Name: vlm\nType: MODEL_OR_ARCHITECTURE", + "Name: reference 63\nType: PUBLICATION_VENUE", + "Name: 10\nType: MEASUREMENT", + "Name: 500 tokens\nType: MEASUREMENT", + "Name: gme qwen2 vl 2b instruct\nType: MODEL_OR_ARCHITECTURE", + "Name: 24 gb\nType: MEASUREMENT", + "Name: python\nType: PROGRAMMING_LANGUAGE", + "Name: baseline methods\nType: TASK_OR_PROBLEM", + "Name: linux\nType: SOFTWARE", + "Name: performance deficits\nType: CONCEPT", + "Name: bookrag\nType: PRODUCT", + "Name: retrieval ranking\nType: METHOD_OR_TECHNIQUE", + "Name: reranking\nType: TASK_OR_PROBLEM", + "Name: reference 52\nType: PUBLICATION_VENUE", + "Name: github repository\nType: LOCATION", + "Name: candidate pool\nType: TASK_OR_PROBLEM", + "Name: document chunking\nType: METHOD_OR_TECHNIQUE", + "Name: multi modal embedding\nType: TASK_OR_PROBLEM", + "Name: reference 4\nType: PUBLICATION_VENUE", + "Name: 8b counterpart\nType: MEASUREMENT", + "Name: intel xeon 2 0ghz cpu\nType: HARDWARE", + "Name: llm\nType: MODEL_OR_ARCHITECTURE", + "Name: qwen3 embedding 0 6b\nType: MODEL_OR_ARCHITECTURE", + "Name: high performance server\nType: LOCATION", + "Name: implementation configurations\nType: PRODUCT", + "Name: qwen3 reranker 4b\nType: MODEL_OR_ARCHITECTURE", + "Name: nvidia geforce rtx a5000\nType: HARDWARE", + "Name: reference 64\nType: PUBLICATION_VENUE", + "Name: mineru\nType: SOFTWARE", + "Name: text embedding\nType: TASK_OR_PROBLEM", + "Name: efficiency\nType: CONCEPT", + "Name: effectiveness\nType: CONCEPT", + "Name: reproducibility\nType: CONCEPT", + "Name: embedding models\nType: MODEL_OR_ARCHITECTURE", + "Name: qwen2 5vl 30b\nType: MODEL_OR_ARCHITECTURE", + "Name: 10b parameter scale\nType: MEASUREMENT", + "Name: reference 60\nType: PUBLICATION_VENUE", + "Name: qwen3 8b\nType: MODEL_OR_ARCHITECTURE", + "Name: 30b version\nType: MEASUREMENT", + "Name: sequential processing mode\nType: TASK_OR_PROBLEM" + ], + "239": [ + "Name: prompts\nType: METHOD_OR_TECHNIQUE", + "Name: a.3 prompts\nType: SECTION_TITLE" + ], + "240": [ + "Name: agent based query classification\nType: TASK_OR_PROBLEM", + "Name: figure 10\nType: IMAGE", + "Name: figure 11\nType: IMAGE", + "Name: prompts\nType: PRODUCT", + "Name: figure 12\nType: IMAGE", + "Name: filter operator generation\nType: TASK_OR_PROBLEM", + "Name: question decomposition\nType: TASK_OR_PROBLEM", + "Name: graph construction phase\nType: TASK_OR_PROBLEM", + "Name: figure 13\nType: IMAGE", + "Name: entity resolution judgment\nType: TASK_OR_PROBLEM" + ], + "241": [ + "Name: complex\nType: TASK_OR_PROBLEM", + "Name: global\nType: TASK_OR_PROBLEM", + "Name: simple\nType: TASK_OR_PROBLEM", + "Name: json object\nType: FILE_TYPE", + "Name: expert query analyzer\nType: PERSON", + "Name: user\nType: PERSON" + ], + "242": [ + "Name: category definitions\nType: SECTION_TITLE" + ], + "243": [ + "Name: table\nType: SECTION_TITLE", + "Name: contiguous location\nType: UNKNOWN", + "Name: single hop\nType: TASK_OR_PROBLEM", + "Name: single\nType: UNKNOWN", + "Name: information\nType: CONCEPT", + "Name: document\nType: CONCEPT", + "Name: question\nType: TASK_OR_PROBLEM", + "Name: paragraph\nType: SECTION_TITLE", + "Name: figure\nType: SECTION_TITLE" + ], + "245": [ + "Name: figure 2\nType: IMAGE" + ], + "246": [ + "Name: latinos\nType: NATIONALITY", + "Name: economic upward mobility\nType: TASK_OR_PROBLEM", + "Name: children\nType: PERSON", + "Name: 5\nType: PERCENTAGE" + ], + "247": [ + "Name: multi hop\nType: TASK_OR_PROBLEM" + ], + "249": [ + "Name: personality vector\nType: TASK_OR_PROBLEM" + ], + "250": [ + "Name: aggregation operation\nType: UNKNOWN", + "Name: global\nType: TASK_OR_PROBLEM", + "Name: items\nType: UNKNOWN", + "Name: structural filter\nType: METHOD_OR_TECHNIQUE", + "Name: counting\nType: METHOD_OR_TECHNIQUE", + "Name: listing\nType: METHOD_OR_TECHNIQUE", + "Name: summarizing\nType: METHOD_OR_TECHNIQUE" + ], + "251": [ + "Name: example\nType: TASK_OR_PROBLEM", + "Name: table\nType: PRODUCT", + "Name: global\nType: CONCEPT" + ], + "252": [ + "Name: user query\nType: TASK_OR_PROBLEM" + ], + "253": [ + "Name: figure 10\nType: IMAGE", + "Name: query classification\nType: TASK_OR_PROBLEM" + ], + "254": [ + "Name: 16\nType: MEASUREMENT" + ], + "255": [ + "Name: user a2gbifl43u1lkj\nType: PERSON", + "Name: type\nType: SECTION_TITLE", + "Name: personality vector\nType: PRODUCT", + "Name: complex question\nType: TASK_OR_PROBLEM", + "Name: sub questions\nType: SECTION_TITLE", + "Name: example 2\nType: EVENT", + "Name: retrieval sub question\nType: TASK_OR_PROBLEM", + "Name: json object\nType: FILE_TYPE", + "Name: color\nType: COLOR", + "Name: soft labeled personality embedding matrix\nType: PRODUCT", + "Name: user query\nType: TASK_OR_PROBLEM", + "Name: query decomposition expert\nType: PROFESSION", + "Name: synthesis question\nType: TASK_OR_PROBLEM", + "Name: report\nType: BOOK", + "Name: population\nType: MEASUREMENT", + "Name: latinos interviewed by cellphone\nType: PERSON", + "Name: question\nType: SECTION_TITLE", + "Name: receptiviti score\nType: EVALUATION_METRIC", + "Name: example 1\nType: EVENT", + "Name: survey\nType: EVENT", + "Name: foreign born latinos\nType: PERSON", + "Name: simple atomic sub questions\nType: TASK_OR_PROBLEM" + ], + "256": [ + "Name: figure 11\nType: IMAGE", + "Name: query decomposition\nType: TASK_OR_PROBLEM" + ], + "257": [ + "Name: 17\nType: NUMBER" + ], + "258": [ + "Name: 3\nType: MEASUREMENT", + "Name: data augmentation\nType: METHOD_OR_TECHNIQUE", + "Name: methodology\nType: SECTION_TITLE", + "Name: figures\nType: IMAGE", + "Name: user\nType: PERSON", + "Name: appendices\nType: SECTION_TITLE", + "Name: count\nType: TASK_OR_PROBLEM", + "Name: 10\nType: MEASUREMENT", + "Name: assistant\nType: PERSON", + "Name: summarize\nType: TASK_OR_PROBLEM", + "Name: section\nType: SECTION_TITLE", + "Name: null\nType: TASK_OR_PROBLEM", + "Name: json object\nType: FILE_TYPE", + "Name: filters\nType: TASK_OR_PROBLEM", + "Name: table\nType: TABLE", + "Name: chapter\nType: SECTION_TITLE", + "Name: 3 10\nType: MEASUREMENT", + "Name: list\nType: TASK_OR_PROBLEM", + "Name: global query\nType: TASK_OR_PROBLEM", + "Name: page\nType: MEASUREMENT", + "Name: discussion\nType: TASK_OR_PROBLEM", + "Name: ai assistant\nType: PERSON", + "Name: image\nType: IMAGE", + "Name: report\nType: BOOK", + "Name: references\nType: SECTION_TITLE", + "Name: operation\nType: TASK_OR_PROBLEM", + "Name: paper\nType: BOOK", + "Name: analyze\nType: TASK_OR_PROBLEM" + ], + "259": [ + "Name: figure 12\nType: IMAGE", + "Name: filter operator generation\nType: TASK_OR_PROBLEM" + ], + "260": [ + "Name: 18\nType: NUMBER" + ], + "262": [ + "Name: id\nType: PARAMETER_OR_VARIABLE", + "Name: candidate entities\nType: TASK_OR_PROBLEM", + "Name: new entity\nType: TASK_OR_PROBLEM", + "Name: knowledge graph\nType: TASK_OR_PROBLEM", + "Name: 1\nType: VALUE", + "Name: json object\nType: FILE_TYPE", + "Name: knowledge base\nType: TASK_OR_PROBLEM", + "Name: entity resolution adjudicator\nType: PERSON", + "Name: text\nType: DATASET_OR_CORPUS", + "Name: explanation\nType: TASK_OR_PROBLEM" + ], + "265": [ + "Name: new entity\nType: TASK_OR_PROBLEM" + ], + "266": [ + "Name: field by field adjudication\nType: TASK_OR_PROBLEM" + ], + "267": [ + "Name: large language model\nType: TECHNOLOGY", + "Name: distinct concepts\nType: CONCEPT", + "Name: alias\nType: CONCEPT", + "Name: high importance\nType: CONCEPT", + "Name: event detection\nType: TASK_OR_PROBLEM", + "Name: entity name\nType: TASK_OR_PROBLEM", + "Name: llm\nType: TECHNOLOGY", + "Name: named entity recognition\nType: TASK_OR_PROBLEM" + ], + "268": [ + "Name: entity type\nType: TASK_OR_PROBLEM" + ], + "269": [ + "Name: contextual importance\nType: CONCEPT", + "Name: description\nType: CONCEPT" + ], + "270": [ + "Name: be strict and conservative\nType: TASK_OR_PROBLEM" + ], + "272": [ + "Name: apple inc\nType: ORGANIZATION", + "Name: apple\nType: PRODUCT" + ], + "273": [ + "Name: when in doubt\nType: TASK_OR_PROBLEM", + "Name: 1\nType: UNKNOWN" + ], + "274": [ + "Name: new entity\nType: TASK_OR_PROBLEM" + ], + "275": [ + "Name: output\nType: UNKNOWN", + "Name: json\nType: FILE_TYPE" + ], + "276": [ + "Name: id\nType: PARAMETER_OR_VARIABLE", + "Name: exact match\nType: TASK_OR_PROBLEM", + "Name: select id\nType: PARAMETER_OR_VARIABLE", + "Name: 1\nType: MONEY", + "Name: integer\nType: MEASUREMENT", + "Name: candidate\nType: TASK_OR_PROBLEM" + ], + "277": [ + "Name: explanation\nType: TASK_OR_PROBLEM" + ], + "281": [ + "Name: select id\nType: PARAMETER_OR_VARIABLE", + "Name: example 2\nType: TASK_OR_PROBLEM", + "Name: example 1\nType: TASK_OR_PROBLEM", + "Name: explanation\nType: PARAMETER_OR_VARIABLE" + ], + "282": [ + "Name: integer\nType: MEASUREMENT", + "Name: selection task\nType: TASK_OR_PROBLEM" + ], + "284": [ + "Name: figure 13\nType: IMAGE", + "Name: examples\nType: DATASET_OR_CORPUS", + "Name: entity resolution\nType: TASK_OR_PROBLEM", + "Name: prompt\nType: SOFTWARE" + ], + "285": [ + "Name: 19\nType: NUMBER" + ] + }, + "variant": "basic" +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_1.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_1.json new file mode 100644 index 0000000..40079dc --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_1.json @@ -0,0 +1,87 @@ +{ + "entities": [ + { + "entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "entity_type": "SECTION_TITLE", + "description": "As the primary title of the document, this section introduces BookRAG, a novel approach designed to handle complex documents by utilizing hierarchical structure awareness and index-based mechanisms within a Retrieval-Augmented Generation framework.", + "source_ids": [ + 1 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The specific name of the proposed model or architecture introduced in the document.", + "source_ids": [ + 1 + ] + }, + { + "entity_name": "hierarchical structure-aware index-based approach", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The core methodology employed by BookRAG, focusing on leveraging document hierarchy and indexing strategies.", + "source_ids": [ + 1 + ] + }, + { + "entity_name": "retrieval-augmented generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "The broader AI task domain addressed by the proposed approach, involving combining retrieval systems with generative models.", + "source_ids": [ + 1 + ] + }, + { + "entity_name": "complex documents", + "entity_type": "DATASET_OR_CORPUS", + "description": "The target data type or corpus category that the system is specifically designed to process.", + "source_ids": [ + 1 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'BookRAG' is the primary subject defined in the main title.", + "source_ids": [ + 1 + ] + }, + { + "src_entity_name": "hierarchical structure-aware index-based approach", + "tgt_entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "relation_name": "", + "weight": 10.0, + "description": "The methodological approach is a key component described in the main title.", + "source_ids": [ + 1 + ] + }, + { + "src_entity_name": "retrieval-augmented generation", + "tgt_entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "relation_name": "", + "weight": 10.0, + "description": "The application domain or task is a central theme of the main title.", + "source_ids": [ + 1 + ] + }, + { + "src_entity_name": "complex documents", + "tgt_entity_name": "bookrag: a hierarchical structure-aware index-based approach for retrieval-augmented generation on complex documents", + "relation_name": "", + "weight": 10.0, + "description": "The target data scope is explicitly mentioned as a focus area in the main title.", + "source_ids": [ + 1 + ] + } + ], + "node_idx": 1 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_10.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_10.json new file mode 100644 index 0000000..930f4c0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_10.json @@ -0,0 +1,87 @@ +{ + "entities": [ + { + "entity_name": "creative commons by nc nd 4 0 international license", + "entity_type": "LAW", + "description": "creative commons by nc nd 4 0 international license is the specific license under which this work is distributed", + "source_ids": [ + 10 + ] + }, + { + "entity_name": "vldb endowment", + "entity_type": "ORGANIZATION", + "description": "vldb endowment is the organization that holds the publication rights for this work", + "source_ids": [ + 10 + ] + }, + { + "entity_name": "info vldb org", + "entity_type": "EMAIL", + "description": "info vldb org is the email address provided for obtaining permission for uses beyond the license", + "source_ids": [ + 10 + ] + }, + { + "entity_name": "creative commons", + "entity_type": "ORGANIZATION", + "description": "creative commons is the organization that created the by nc nd 4 0 international license", + "source_ids": [ + 10 + ] + }, + { + "entity_name": "owner author s", + "entity_type": "PERSON", + "description": "owner author s refers to the individuals or entities holding the copyright for the work", + "source_ids": [ + 10 + ] + } + ], + "relations": [ + { + "src_entity_name": "creative commons by nc nd 4 0 international license", + "tgt_entity_name": "vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "the work licensed under the creative commons by nc nd 4 0 international license has its publication rights licensed to the vldb endowment", + "source_ids": [ + 10 + ] + }, + { + "src_entity_name": "creative commons", + "tgt_entity_name": "creative commons by nc nd 4 0 international license", + "relation_name": "", + "weight": 9.0, + "description": "creative commons is the creator of the by nc nd 4 0 international license", + "source_ids": [ + 10 + ] + }, + { + "src_entity_name": "owner author s", + "tgt_entity_name": "creative commons by nc nd 4 0 international license", + "relation_name": "", + "weight": 8.0, + "description": "the owner author s hold the copyright for the work which is licensed under the creative commons by nc nd 4 0 international license", + "source_ids": [ + 10 + ] + }, + { + "src_entity_name": "owner author s", + "tgt_entity_name": "vldb endowment", + "relation_name": "", + "weight": 7.0, + "description": "the owner author s hold the copyright while the vldb endowment is licensed the publication rights", + "source_ids": [ + 10 + ] + } + ], + "node_idx": 10 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_100.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_100.json new file mode 100644 index 0000000..0c16f6f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_100.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (3)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the output of an LLM function as a set of elements. LaTeX: 𝐸 𝑞 = LLM ( 𝑃 𝐸𝑥𝑡 , 𝑞 ) = { 𝑒 1 , 𝑒 2 , . . . , 𝑒 𝑚 } (3)", + "source_ids": [ + 100 + ] + } + ], + "relations": [], + "node_idx": 100 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_101.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_101.json new file mode 100644 index 0000000..ee92740 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_101.json @@ -0,0 +1,143 @@ +{ + "entities": [ + { + "entity_name": "q", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "q is the original user query mentioned in the text", + "source_ids": [ + 101 + ] + }, + { + "entity_name": "p dec", + "entity_type": "SOFTWARE", + "description": "p dec represents a prompt used to guide the llm for the decomposition task", + "source_ids": [ + 101 + ] + }, + { + "entity_name": "p ext", + "entity_type": "SOFTWARE", + "description": "p ext represents a prompt used to guide the llm for the extraction task", + "source_ids": [ + 101 + ] + }, + { + "entity_name": "llm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "llm is the model being guided by the prompts for decomposition and extraction tasks", + "source_ids": [ + 101 + ] + }, + { + "entity_name": "decomposition", + "entity_type": "TASK_OR_PROBLEM", + "description": "decomposition is a task for which the prompt p dec is used to guide the llm", + "source_ids": [ + 101 + ] + }, + { + "entity_name": "extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "extraction is a task for which the prompt p ext is used to guide the llm", + "source_ids": [ + 101 + ] + }, + { + "entity_name": "prompt", + "entity_type": "SOFTWARE", + "description": "prompts are instructions used to guide the llm for specific tasks", + "source_ids": [ + 101 + ] + } + ], + "relations": [ + { + "src_entity_name": "p dec", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "p dec is used to guide the llm for the decomposition task", + "source_ids": [ + 101 + ] + }, + { + "src_entity_name": "p ext", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "p ext is used to guide the llm for the extraction task", + "source_ids": [ + 101 + ] + }, + { + "src_entity_name": "q", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 7.0, + "description": "q is the original user query that the llm processes", + "source_ids": [ + 101 + ] + }, + { + "src_entity_name": "p dec", + "tgt_entity_name": "decomposition", + "relation_name": "", + "weight": 10.0, + "description": "p dec is the specific prompt used to guide the llm for the decomposition task", + "source_ids": [ + 101 + ] + }, + { + "src_entity_name": "p ext", + "tgt_entity_name": "extraction", + "relation_name": "", + "weight": 10.0, + "description": "p ext is the specific prompt used to guide the llm for the extraction task", + "source_ids": [ + 101 + ] + }, + { + "src_entity_name": "prompt", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "prompts are used to guide the llm", + "source_ids": [ + 101 + ] + }, + { + "src_entity_name": "decomposition", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the llm performs the decomposition task", + "source_ids": [ + 101 + ] + }, + { + "src_entity_name": "extraction", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the llm performs the extraction task", + "source_ids": [ + 101 + ] + } + ], + "node_idx": 101 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_102.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_102.json new file mode 100644 index 0000000..2a3b92e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_102.json @@ -0,0 +1,297 @@ +{ + "entities": [ + { + "entity_name": "selector", + "entity_type": "TECHNOLOGY", + "description": "selector is an operator that filters or selects specific content ranges from the bookindex", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is the source of content ranges that the selector operators filter", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "filter modal", + "entity_type": "TECHNOLOGY", + "description": "filter modal is an operator that applies explicit constraints to the bookindex", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "filter range", + "entity_type": "TECHNOLOGY", + "description": "filter range is an operator that applies explicit constraints to the bookindex", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "c", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "c represents explicit constraints such as modal types and page ranges generated during a plan", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "tree", + "entity_type": "TASK_OR_PROBLEM", + "description": "tree is the data structure t n e t on which the operators operate", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n represents the set of nodes in the tree", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "e t", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "e t represents the set of edges in the tree", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "n f", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n f is the filtered subset of nodes produced by the operators", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "c n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "c n is a predicate that holds true for each node in the filtered subset", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "modal types", + "entity_type": "CONCEPT", + "description": "modal types are a specific type of explicit constraint c mentioned in the text", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "page ranges", + "entity_type": "CONCEPT", + "description": "page ranges are a specific type of explicit constraint c mentioned in the text", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "the plan is the process during which explicit constraints c are generated", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "nodes", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "nodes are the individual elements within the tree t that are evaluated by the predicate", + "source_ids": [ + 102 + ] + }, + { + "entity_name": "edges", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "edges are the connections within the tree t denoted as e t", + "source_ids": [ + 102 + ] + } + ], + "relations": [ + { + "src_entity_name": "selector", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "selector operators filter content ranges directly from the bookindex", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "filter modal", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 8.0, + "description": "filter modal applies the explicit constraints c generated during the plan", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "filter range", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 8.0, + "description": "filter range applies the explicit constraints c generated during the plan", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 9.0, + "description": "the selector operators operate on the tree t n e t to produce a filtered subset", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "filter modal", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 8.0, + "description": "filter modal operates on the tree to produce a filtered subset", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "filter range", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 8.0, + "description": "filter range operates on the tree to produce a filtered subset", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "n f", + "relation_name": "", + "weight": 9.0, + "description": "the selector operators produce the filtered subset n f", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "filter modal", + "tgt_entity_name": "n f", + "relation_name": "", + "weight": 8.0, + "description": "filter modal contributes to the production of the filtered subset n f", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "filter range", + "tgt_entity_name": "n f", + "relation_name": "", + "weight": 8.0, + "description": "filter range contributes to the production of the filtered subset n f", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "n f", + "tgt_entity_name": "c n", + "relation_name": "", + "weight": 9.0, + "description": "the filtered subset n f consists of nodes where the predicate c n holds true", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "c", + "tgt_entity_name": "modal types", + "relation_name": "", + "weight": 10.0, + "description": "modal types are examples of the explicit constraints c", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "c", + "tgt_entity_name": "page ranges", + "relation_name": "", + "weight": 10.0, + "description": "page ranges are examples of the explicit constraints c", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "c", + "tgt_entity_name": "plan", + "relation_name": "", + "weight": 9.0, + "description": "the constraints c are generated during the plan", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 10.0, + "description": "the tree t is composed of the set of nodes n", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "edges", + "relation_name": "", + "weight": 10.0, + "description": "the tree t is composed of the set of edges e t", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "n f", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "the filtered subset n f is a subset of the nodes n", + "source_ids": [ + 102 + ] + }, + { + "src_entity_name": "c n", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "the predicate c n is evaluated for each node in the set", + "source_ids": [ + 102 + ] + } + ], + "node_idx": 102 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_103.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_103.json new file mode 100644 index 0000000..f5e08a2 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_103.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (4)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the set N_f as a subset of N based on condition C. LaTeX: 𝑁 𝑓 = { 𝑛 ∈ 𝑁 | 𝐶 𝑛 ( )} (4)", + "source_ids": [ + 103 + ] + } + ], + "relations": [], + "node_idx": 103 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_104.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_104.json new file mode 100644 index 0000000..8c88080 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_104.json @@ -0,0 +1,251 @@ +{ + "entities": [ + { + "entity_name": "select by entity", + "entity_type": "TECHNOLOGY", + "description": "select by entity is a method that targets contiguous document segments by retrieving subtrees rooted at specific section nodes", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "select by section", + "entity_type": "TECHNOLOGY", + "description": "select by section is a method that targets contiguous document segments by retrieving subtrees rooted at specific section nodes", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "gt link", + "entity_type": "TECHNOLOGY", + "description": "gt link is a mechanism used to link sections to entities", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "llm", + "entity_type": "TECHNOLOGY", + "description": "llm is a system used to select sections in the described process", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "s target", + "entity_type": "TASK_OR_PROBLEM", + "description": "s target represents a set of target section nodes at a specified depth", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "n", + "entity_type": "TASK_OR_PROBLEM", + "description": "n represents the set of nodes in the document structure", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "e q", + "entity_type": "TASK_OR_PROBLEM", + "description": "e q represents the entities linked to sections via gt link", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "n s", + "entity_type": "TASK_OR_PROBLEM", + "description": "n s represents the selected node set formed by retrieving descendants of target sections", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "document", + "entity_type": "TASK_OR_PROBLEM", + "description": "document is the text being processed by the select by entity and select by section methods", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "subtree", + "entity_type": "TASK_OR_PROBLEM", + "description": "subtree refers to the data structure rooted at specific section nodes that is retrieved by the methods", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "section node", + "entity_type": "TASK_OR_PROBLEM", + "description": "section node is a specific node within the document structure that serves as a root for subtrees", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "depth", + "entity_type": "MEASUREMENT", + "description": "depth is a specified parameter determining the level of the target section nodes", + "source_ids": [ + 104 + ] + }, + { + "entity_name": "descendant", + "entity_type": "TASK_OR_PROBLEM", + "description": "descendant refers to the nodes below the target section nodes that are retrieved to form the selected node set", + "source_ids": [ + 104 + ] + } + ], + "relations": [ + { + "src_entity_name": "select by entity", + "tgt_entity_name": "s target", + "relation_name": "", + "weight": 9.0, + "description": "select by entity identifies a set of target section nodes s target as part of its process", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "select by section", + "tgt_entity_name": "s target", + "relation_name": "", + "weight": 9.0, + "description": "select by section identifies a set of target section nodes s target as part of its process", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "e q", + "relation_name": "", + "weight": 8.0, + "description": "s target consists of sections linked to entities e q via gt link", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "s target includes sections selected by the llm", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "n s", + "relation_name": "", + "weight": 9.0, + "description": "n s is formed by retrieving all descendants of the target section nodes s target", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "e q", + "relation_name": "", + "weight": 9.0, + "description": "gt link is the mechanism used to link sections to entities e q", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "select by entity", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "select by entity targets contiguous segments within the document", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "select by section", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "select by section targets contiguous segments within the document", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "select by entity", + "tgt_entity_name": "subtree", + "relation_name": "", + "weight": 9.0, + "description": "select by entity retrieves subtrees rooted at specific section nodes", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "select by section", + "tgt_entity_name": "subtree", + "relation_name": "", + "weight": 9.0, + "description": "select by section retrieves subtrees rooted at specific section nodes", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "section node", + "relation_name": "", + "weight": 10.0, + "description": "s target consists of specific section nodes", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "s target", + "tgt_entity_name": "depth", + "relation_name": "", + "weight": 8.0, + "description": "s target is defined at a specified depth", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "n s", + "tgt_entity_name": "descendant", + "relation_name": "", + "weight": 9.0, + "description": "n s is formed by retrieving all descendants of the target sections", + "source_ids": [ + 104 + ] + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "section node", + "relation_name": "", + "weight": 8.0, + "description": "gt link links sections nodes to entities", + "source_ids": [ + 104 + ] + } + ], + "node_idx": 104 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_105.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_105.json new file mode 100644 index 0000000..6a7911d --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_105.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (5)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable N_s as a glyph value for an element s in set S within a target subtree. LaTeX: 𝑁 𝑠 = GLYPH<216> 𝑠 ∈ 𝑆 target Subtree ( 𝑠 ) (5)", + "source_ids": [ + 105 + ] + } + ], + "relations": [], + "node_idx": 105 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_106.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_106.json new file mode 100644 index 0000000..240a5ce --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_106.json @@ -0,0 +1,191 @@ +{ + "entities": [ + { + "entity_name": "reasoner", + "entity_type": "TASK_OR_PROBLEM", + "description": "reasoner is described as a component that analyzes and refines selected tree nodes", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "graph reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graph reasoning is a method that performs multi hop inference on a subgraph starting from an entity", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "pagerank algorithm", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "pagerank algorithm is used to compute an entity importance vector over a subgraph", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "gt link matrix", + "entity_type": "SOFTWARE", + "description": "gt link matrix is a matrix used to map entity scores to tree nodes to derive importance scores", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "entity importance vector", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "entity importance vector is a vector computed over a subgraph representing the importance of entities", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "tree node importance scores vector", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "tree node importance scores vector is the final vector derived by mapping entity scores to tree nodes", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "subgraph", + "entity_type": "TASK_OR_PROBLEM", + "description": "subgraph is a portion of a graph extracted from selected nodes on which inference is performed", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity is the starting point for the multi hop inference process in graph reasoning", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "selected nodes", + "entity_type": "TASK_OR_PROBLEM", + "description": "selected nodes are the nodes from which a subgraph is extracted for graph reasoning", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "20", + "entity_type": "PUBLICATION_VENUE", + "description": "20 is a citation reference associated with the pagerank algorithm", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "6", + "entity_type": "EQUATION_OR_FORMULA", + "description": "6 is the label for the equation defining the entity importance vector", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "7", + "entity_type": "EQUATION_OR_FORMULA", + "description": "7 is the label for the equation defining the tree node importance scores vector", + "source_ids": [ + 106 + ] + }, + { + "entity_name": "selected tree nodes", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 106 + ] + } + ], + "relations": [ + { + "src_entity_name": "reasoner", + "tgt_entity_name": "selected tree nodes", + "relation_name": "", + "weight": 9.0, + "description": "reasoner analyzes and refines selected tree nodes", + "source_ids": [ + 106 + ] + }, + { + "src_entity_name": "graph reasoning", + "tgt_entity_name": "subgraph", + "relation_name": "", + "weight": 10.0, + "description": "graph reasoning performs multi hop inference on a subgraph", + "source_ids": [ + 106 + ] + }, + { + "src_entity_name": "graph reasoning", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 9.0, + "description": "graph reasoning starts its inference process from an entity", + "source_ids": [ + 106 + ] + }, + { + "src_entity_name": "graph reasoning", + "tgt_entity_name": "pagerank algorithm", + "relation_name": "", + "weight": 10.0, + "description": "graph reasoning uses the pagerank algorithm to compute the entity importance vector", + "source_ids": [ + 106 + ] + }, + { + "src_entity_name": "pagerank algorithm", + "tgt_entity_name": "entity importance vector", + "relation_name": "", + "weight": 10.0, + "description": "the pagerank algorithm computes the entity importance vector", + "source_ids": [ + 106 + ] + }, + { + "src_entity_name": "entity importance vector", + "tgt_entity_name": "gt link matrix", + "relation_name": "", + "weight": 9.0, + "description": "the entity importance vector is mapped to tree nodes via the gt link matrix", + "source_ids": [ + 106 + ] + }, + { + "src_entity_name": "gt link matrix", + "tgt_entity_name": "tree node importance scores vector", + "relation_name": "", + "weight": 9.0, + "description": "the gt link matrix is used to derive the tree node importance scores vector", + "source_ids": [ + 106 + ] + }, + { + "src_entity_name": "subgraph", + "tgt_entity_name": "selected nodes", + "relation_name": "", + "weight": 10.0, + "description": "the subgraph is extracted from selected nodes", + "source_ids": [ + 106 + ] + } + ], + "node_idx": 106 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_107.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_107.json new file mode 100644 index 0000000..b72d060 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_107.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (6)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the PageRank of a graph G with respect to a vector e'. LaTeX: 𝐼 𝐺 = PageRank ( 𝐺 , 𝑒 ' ) (6)", + "source_ids": [ + 107 + ] + } + ], + "relations": [], + "node_idx": 107 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_108.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_108.json new file mode 100644 index 0000000..188f06a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_108.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (7)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the product of S and G as equal to the product of I, G, and M. LaTeX: 𝑆 𝐺 = 𝐼 𝐺 × 𝑀 (7)", + "source_ids": [ + 108 + ] + } + ], + "relations": [], + "node_idx": 108 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_109.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_109.json new file mode 100644 index 0000000..64dfab0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_109.json @@ -0,0 +1,209 @@ +{ + "entities": [ + { + "entity_name": "text ranker", + "entity_type": "SOFTWARE", + "description": "text ranker is a system that evaluates the semantic relevance of a tree node s content to a query", + "source_ids": [ + 109 + ] + }, + { + "entity_name": "skyline ranker", + "entity_type": "SOFTWARE", + "description": "skyline ranker is a system that employs the skyline operator to filter nodes based on multiple criteria", + "source_ids": [ + 109 + ] + }, + { + "entity_name": "skyline operator", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the skyline operator is a method used by skyline ranker to filter nodes based on scoring dimensions", + "source_ids": [ + 109 + ] + }, + { + "entity_name": "query", + "entity_type": "TASK_OR_PROBLEM", + "description": "the query is the input for which semantic relevance is evaluated by text ranker", + "source_ids": [ + 109 + ] + }, + { + "entity_name": "relevance score", + "entity_type": "EVALUATION_METRIC", + "description": "the relevance score is a metric assigned to each node to indicate its semantic relevance to the query", + "source_ids": [ + 109 + ] + }, + { + "entity_name": "tree node", + "entity_type": "TASK_OR_PROBLEM", + "description": "the tree node is the content unit being evaluated for relevance and filtered based on scoring dimensions", + "source_ids": [ + 109 + ] + }, + { + "entity_name": "nodes", + "entity_type": "TASK_OR_PROBLEM", + "description": "nodes are the data elements being evaluated for relevance and filtered by the ranking systems", + "source_ids": [ + 109 + ] + }, + { + "entity_name": "scoring dimensions", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "scoring dimensions are the specified criteria used to determine if nodes are dominated by others", + "source_ids": [ + 109 + ] + }, + { + "entity_name": "", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 109 + ] + } + ], + "relations": [ + { + "src_entity_name": "text ranker", + "tgt_entity_name": "query", + "relation_name": "", + "weight": 9.0, + "description": "text ranker evaluates the relevance of content specifically to the query", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "text ranker", + "tgt_entity_name": "relevance score", + "relation_name": "", + "weight": 10.0, + "description": "text ranker assigns a relevance score to each tree node", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "text ranker", + "tgt_entity_name": "tree node", + "relation_name": "", + "weight": 9.0, + "description": "text ranker evaluates the content of the tree node", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "skyline operator", + "relation_name": "", + "weight": 10.0, + "description": "skyline ranker employs the skyline operator to perform its filtering function", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "tree node", + "relation_name": "", + "weight": 9.0, + "description": "skyline ranker filters tree nodes based on scoring dimensions", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "relevance score", + "relation_name": "", + "weight": 8.0, + "description": "skyline ranker uses relevance scores along with others to filter nodes", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "tree node", + "relation_name": "", + "weight": 8.0, + "description": "the skyline operator is used to filter tree nodes", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "text ranker", + "tgt_entity_name": "", + "relation_name": "", + "weight": 9.0, + "description": "text ranker uses the query to evaluate semantic relevance", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "text ranker", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "text ranker evaluates the content of the nodes", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "", + "relation_name": "", + "weight": 9.0, + "description": "skyline ranker uses the criterion to filter nodes", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 10.0, + "description": "skyline ranker filters the nodes based on the specified scoring dimensions", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "", + "relation_name": "", + "weight": 8.0, + "description": "the skyline operator utilizes as a scoring dimension", + "source_ids": [ + 109 + ] + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "the skyline operator filters the nodes", + "source_ids": [ + 109 + ] + } + ], + "node_idx": 109 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_11.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_11.json new file mode 100644 index 0000000..7cb4b93 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_11.json @@ -0,0 +1,87 @@ +{ + "entities": [ + { + "entity_name": "proceedings of the vldb endowment", + "entity_type": "PUBLICATION_VENUE", + "description": "proceedings of the vldb endowment is the name of the publication venue mentioned in the text", + "source_ids": [ + 11 + ] + }, + { + "entity_name": "vol 19", + "entity_type": "MEASUREMENT", + "description": "vol 19 refers to the volume number of the publication", + "source_ids": [ + 11 + ] + }, + { + "entity_name": "no 1", + "entity_type": "MEASUREMENT", + "description": "no 1 refers to the issue number of the publication", + "source_ids": [ + 11 + ] + }, + { + "entity_name": "issn 2150 8097", + "entity_type": "MEASUREMENT", + "description": "issn 2150 8097 is the international standard serial number assigned to the publication", + "source_ids": [ + 11 + ] + }, + { + "entity_name": "doi xx xx xxx xx", + "entity_type": "MEASUREMENT", + "description": "doi xx xx xxx xx is the digital object identifier assigned to the document", + "source_ids": [ + 11 + ] + } + ], + "relations": [ + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "vol 19", + "relation_name": "", + "weight": 9.0, + "description": "vol 19 is the volume associated with the proceedings of the vldb endowment", + "source_ids": [ + 11 + ] + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "no 1", + "relation_name": "", + "weight": 9.0, + "description": "no 1 is the issue number associated with the proceedings of the vldb endowment", + "source_ids": [ + 11 + ] + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "issn 2150 8097", + "relation_name": "", + "weight": 10.0, + "description": "issn 2150 8097 is the identifier for the proceedings of the vldb endowment", + "source_ids": [ + 11 + ] + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "doi xx xx xxx xx", + "relation_name": "", + "weight": 9.0, + "description": "doi xx xx xxx xx is the identifier for the specific article within the proceedings of the vldb endowment", + "source_ids": [ + 11 + ] + } + ], + "node_idx": 11 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_110.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_110.json new file mode 100644 index 0000000..064b720 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_110.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "7", + "entity_type": "NUMBER", + "description": "7 is a number mentioned in the text", + "source_ids": [ + 110 + ] + } + ], + "relations": [], + "node_idx": 110 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_111.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_111.json new file mode 100644 index 0000000..e793697 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_111.json @@ -0,0 +1,215 @@ +{ + "entities": [ + { + "entity_name": "synthesizer", + "entity_type": "TASK_OR_PROBLEM", + "description": "synthesizer is described as an operator responsible for content generation", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "map", + "entity_type": "TASK_OR_PROBLEM", + "description": "map is an operator that performs analysis on specific retrieved information segments to generate partial responses", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "reduce", + "entity_type": "TASK_OR_PROBLEM", + "description": "reduce is an operator that synthesizes a final coherent answer by aggregating information from multiple sources", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "content generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "content generation is the primary responsibility of the synthesizer operators mentioned in the text", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "analysis", + "entity_type": "TASK_OR_PROBLEM", + "description": "analysis is the specific action performed by the map operator on retrieved information segments", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "partial responses", + "entity_type": "PRODUCT", + "description": "partial responses are the output generated by the map operator from specific retrieved information segments", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "final coherent answer", + "entity_type": "PRODUCT", + "description": "a final coherent answer is the result synthesized by the reduce operator by aggregating information from multiple sources", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "retrieved information segments", + "entity_type": "DATASET_OR_CORPUS", + "description": "retrieved information segments are the specific data parts that the map operator analyzes", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "multiple sources", + "entity_type": "DATASET_OR_CORPUS", + "description": "multiple sources refer to the various origins of information such as partial answers or retrieved evidence that the reduce operator aggregates", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "partial answers", + "entity_type": "PRODUCT", + "description": "partial answers are one of the types of information collected from multiple sources by the reduce operator", + "source_ids": [ + 111 + ] + }, + { + "entity_name": "retrieved evidence", + "entity_type": "DATASET_OR_CORPUS", + "description": "retrieved evidence is one of the types of information collected from multiple sources by the reduce operator", + "source_ids": [ + 111 + ] + } + ], + "relations": [ + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "map", + "relation_name": "", + "weight": 8.0, + "description": "map is a specific type of operator within the broader category of synthesizer operators responsible for content generation", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 8.0, + "description": "reduce is a specific type of operator within the broader category of synthesizer operators responsible for content generation", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "map", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 9.0, + "description": "map and reduce are sequential or related steps in the process of generating a final coherent answer with map generating partial responses and reduce aggregating them", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "content generation", + "relation_name": "", + "weight": 10.0, + "description": "synthesizer operators are responsible for the task of content generation", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "map", + "tgt_entity_name": "analysis", + "relation_name": "", + "weight": 10.0, + "description": "the map operator performs the task of analysis on retrieved information segments", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "map", + "tgt_entity_name": "partial responses", + "relation_name": "", + "weight": 10.0, + "description": "map generates partial responses as its output", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "map", + "tgt_entity_name": "retrieved information segments", + "relation_name": "", + "weight": 10.0, + "description": "map performs analysis specifically on retrieved information segments", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "final coherent answer", + "relation_name": "", + "weight": 10.0, + "description": "reduce synthesizes a final coherent answer as its output", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "multiple sources", + "relation_name": "", + "weight": 10.0, + "description": "reduce aggregates information from multiple sources to create its output", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "partial answers", + "relation_name": "", + "weight": 9.0, + "description": "reduce aggregates partial answers as part of its synthesis process", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "retrieved evidence", + "relation_name": "", + "weight": 9.0, + "description": "reduce aggregates retrieved evidence as part of its synthesis process", + "source_ids": [ + 111 + ] + }, + { + "src_entity_name": "partial responses", + "tgt_entity_name": "final coherent answer", + "relation_name": "", + "weight": 9.0, + "description": "partial responses generated by map are aggregated by reduce to form the final coherent answer", + "source_ids": [ + 111 + ] + } + ], + "node_idx": 111 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_112.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_112.json new file mode 100644 index 0000000..4173e4d --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_112.json @@ -0,0 +1,225 @@ +{ + "entities": [ + { + "entity_name": "operator plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "operator plan is the final task of an agent to generate an executable plan after classifying a query", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "agent", + "entity_type": "PERSON", + "description": "the agent is an entity that classifies queries and generates executable plans based on the classification", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "query", + "entity_type": "TASK_OR_PROBLEM", + "description": "the query is the input that the agent classifies into a category to generate a plan", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "category", + "entity_type": "TASK_OR_PROBLEM", + "description": "the category is the classification result of the query used by the agent", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "library", + "entity_type": "ORGANIZATION", + "description": "the library is a collection of operators from which the agent selects a sequence", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "operators", + "entity_type": "TASK_OR_PROBLEM", + "description": "operators are the specific sequence elements selected from the library to form the plan", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "parameters", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "parameters are dynamically instantiated based on the query to configure the operators", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "1", + "entity_type": "TASK_OR_PROBLEM", + "description": "1 represents the specific sequence of operators selected for the plan", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "agent plan", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "agent plan is the specific formulation or function used to generate the plan from the query category and library", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "equation 8", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 8 is the mathematical formulation agent plan describing the plan generation process", + "source_ids": [ + 112 + ] + }, + { + "entity_name": "", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 112 + ] + } + ], + "relations": [ + { + "src_entity_name": "agent", + "tgt_entity_name": "operator plan", + "relation_name": "", + "weight": 10.0, + "description": "the agent s final task is to generate the operator plan", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "query", + "relation_name": "", + "weight": 9.0, + "description": "the agent classifies the query into a category", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "category", + "relation_name": "", + "weight": 9.0, + "description": "the agent uses the category derived from the query to generate the plan", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "library", + "relation_name": "", + "weight": 8.0, + "description": "the agent selects operators from the library to form the plan", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "operators", + "relation_name": "", + "weight": 9.0, + "description": "the agent selects a specific sequence of operators to create the plan", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "query", + "tgt_entity_name": "parameters", + "relation_name": "", + "weight": 8.0, + "description": "parameters are dynamically instantiated based on the query", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "operators", + "tgt_entity_name": "parameters", + "relation_name": "", + "weight": 8.0, + "description": "operators are configured with parameters dynamically instantiated based on the query", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "", + "tgt_entity_name": "", + "relation_name": "", + "weight": 10.0, + "description": "the query is classified into the category", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 10.0, + "description": "the sequence 1 is selected from the library", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "agent plan", + "tgt_entity_name": "", + "relation_name": "", + "weight": 10.0, + "description": "the agent plan method defines the generation of the plan", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "equation 8", + "tgt_entity_name": "", + "relation_name": "", + "weight": 10.0, + "description": "equation 8 defines the variable", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "equation 8", + "tgt_entity_name": "agent plan", + "relation_name": "", + "weight": 10.0, + "description": "equation 8 utilizes the agent plan function", + "source_ids": [ + 112 + ] + }, + { + "src_entity_name": "parameters", + "tgt_entity_name": "operators", + "relation_name": "", + "weight": 8.0, + "description": "parameters are dynamically instantiated for the operators", + "source_ids": [ + 112 + ] + } + ], + "node_idx": 112 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_113.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_113.json new file mode 100644 index 0000000..b177c3c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_113.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (8)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable P as a function of Agent Plan with inputs q, c, and O. LaTeX: 𝑃 = Agent Plan ( 𝑞, 𝑐, O) (8)", + "source_ids": [ + 113 + ] + } + ], + "relations": [], + "node_idx": 113 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_114.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_114.json new file mode 100644 index 0000000..51854d7 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_114.json @@ -0,0 +1,51 @@ +{ + "entities": [ + { + "entity_name": "the plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "the plan is a structured workflow tailored to each category", + "source_ids": [ + 114 + ] + }, + { + "entity_name": "workflow", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the workflow is a structured process followed by the plan", + "source_ids": [ + 114 + ] + }, + { + "entity_name": "category", + "entity_type": "CONCEPT", + "description": "category refers to the classifications to which the plan s workflow is tailored", + "source_ids": [ + 114 + ] + } + ], + "relations": [ + { + "src_entity_name": "the plan", + "tgt_entity_name": "workflow", + "relation_name": "", + "weight": 9.0, + "description": "the plan follows a structured workflow", + "source_ids": [ + 114 + ] + }, + { + "src_entity_name": "the plan", + "tgt_entity_name": "category", + "relation_name": "", + "weight": 8.0, + "description": "the plan s workflow is tailored to each category", + "source_ids": [ + 114 + ] + } + ], + "node_idx": 114 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_115.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_115.json new file mode 100644 index 0000000..006f7f1 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_115.json @@ -0,0 +1,171 @@ +{ + "entities": [ + { + "entity_name": "single hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "single hop is a task where an agent first attempts to extract an entity", + "source_ids": [ + 115 + ] + }, + { + "entity_name": "agent", + "entity_type": "PERSON", + "description": "the agent is an entity that attempts to extract an entity and executes selection strategies", + "source_ids": [ + 115 + ] + }, + { + "entity_name": "scent based", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "scent based is a selection strategy used by the agent if entity extraction is successful", + "source_ids": [ + 115 + ] + }, + { + "entity_name": "section based", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "section based is a fallback strategy used by the agent if entity extraction fails", + "source_ids": [ + 115 + ] + }, + { + "entity_name": "standard reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "standard reasoning is a process that both selection paths proceed to", + "source_ids": [ + 115 + ] + }, + { + "entity_name": "generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation is a process that both selection paths proceed to", + "source_ids": [ + 115 + ] + }, + { + "entity_name": "p std", + "entity_type": "EQUATION_OR_FORMULA", + "description": "p std denotes the standard reasoning and generation process", + "source_ids": [ + 115 + ] + }, + { + "entity_name": "entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity is the object that the agent attempts to extract in the single hop process", + "source_ids": [ + 115 + ] + } + ], + "relations": [ + { + "src_entity_name": "agent", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "the agent performs the single hop task by attempting to extract an entity", + "source_ids": [ + 115 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "scent based", + "relation_name": "", + "weight": 8.0, + "description": "the agent executes the scent based selection strategy if entity extraction is successful", + "source_ids": [ + 115 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "section based", + "relation_name": "", + "weight": 8.0, + "description": "the agent falls back to the section based strategy if entity extraction fails", + "source_ids": [ + 115 + ] + }, + { + "src_entity_name": "scent based", + "tgt_entity_name": "standard reasoning", + "relation_name": "", + "weight": 7.0, + "description": "the scent based path proceeds to standard reasoning and generation", + "source_ids": [ + 115 + ] + }, + { + "src_entity_name": "section based", + "tgt_entity_name": "standard reasoning", + "relation_name": "", + "weight": 7.0, + "description": "the section based path proceeds to standard reasoning and generation", + "source_ids": [ + 115 + ] + }, + { + "src_entity_name": "standard reasoning", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 8.0, + "description": "standard reasoning and generation are linked processes denoted as p std", + "source_ids": [ + 115 + ] + }, + { + "src_entity_name": "scent based", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 7.0, + "description": "the scent based path proceeds to generation as part of p std", + "source_ids": [ + 115 + ] + }, + { + "src_entity_name": "section based", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 7.0, + "description": "the section based path proceeds to generation as part of p std", + "source_ids": [ + 115 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 9.0, + "description": "the agent attempts to extract the entity as the first step of the single hop process", + "source_ids": [ + 115 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 8.0, + "description": "the single hop task involves the extraction of an entity", + "source_ids": [ + 115 + ] + } + ], + "node_idx": 115 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_116.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_116.json new file mode 100644 index 0000000..26759db --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_116.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (9)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable P_s based on extraction success or failure conditions. LaTeX: 𝑃 s = ( Extract success - - - - -→ Select_by_Entity → 𝑃 std Extract fail - -→ Select_by_Section → 𝑃 std (9)", + "source_ids": [ + 116 + ] + } + ], + "relations": [], + "node_idx": 116 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_117.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_117.json new file mode 100644 index 0000000..10ea4da --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_117.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (10)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the standard probability P as a process involving graph and text inputs leading to a skyline reduction. LaTeX: 𝑃 std = ( Graph ∥ Text ) → Skyline → Reduce (10)", + "source_ids": [ + 117 + ] + } + ], + "relations": [], + "node_idx": 117 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_118.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_118.json new file mode 100644 index 0000000..8c9e74f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_118.json @@ -0,0 +1,69 @@ +{ + "entities": [ + { + "entity_name": "single hop workflow", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "single hop workflow is a method denoted as ps used to solve sub problems", + "source_ids": [ + 118 + ] + }, + { + "entity_name": "ps", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "ps is the specific notation or identifier for the single hop workflow applied to sub problems", + "source_ids": [ + 118 + ] + }, + { + "entity_name": "agent", + "entity_type": "PERSON", + "description": "the agent is the entity performing the decomposition of the problem and the synthesis of results", + "source_ids": [ + 118 + ] + }, + { + "entity_name": "complex", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex refers to the problem being decomposed by the agent", + "source_ids": [ + 118 + ] + } + ], + "relations": [ + { + "src_entity_name": "single hop workflow", + "tgt_entity_name": "ps", + "relation_name": "", + "weight": 10.0, + "description": "the single hop workflow is identified by the notation ps in the text", + "source_ids": [ + 118 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "complex", + "relation_name": "", + "weight": 9.0, + "description": "the agent decomposes the complex problem into sub problems", + "source_ids": [ + 118 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "single hop workflow", + "relation_name": "", + "weight": 10.0, + "description": "the agent applies the single hop workflow to each sub problem", + "source_ids": [ + 118 + ] + } + ], + "node_idx": 118 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_119.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_119.json new file mode 100644 index 0000000..dc7f650 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_119.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (11)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation describing a decomposition process involving mapping and reduction. LaTeX: 𝑃 complex = Decompose → 𝑃 s → Map → Reduce (11)", + "source_ids": [ + 119 + ] + } + ], + "relations": [], + "node_idx": 119 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_12.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_12.json new file mode 100644 index 0000000..cb7ae98 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_12.json @@ -0,0 +1,79 @@ +{ + "entities": [ + { + "entity_name": "figure 1", + "entity_type": "IMAGE", + "description": "figure 1 is an image that presents a comparison of existing methods and bookrag for complex document qa", + "source_ids": [ + 12 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a product or method being compared against existing methods for complex document qa", + "source_ids": [ + 12 + ] + }, + { + "entity_name": "existing methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "existing methods refers to current techniques used for complex document qa which are being compared to bookrag", + "source_ids": [ + 12 + ] + }, + { + "entity_name": "complex document qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex document qa is the specific task or problem domain where the comparison between methods and bookrag is taking place", + "source_ids": [ + 12 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 1", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "figure 1 displays a comparison involving bookrag", + "source_ids": [ + 12 + ] + }, + { + "src_entity_name": "figure 1", + "tgt_entity_name": "existing methods", + "relation_name": "", + "weight": 9.0, + "description": "figure 1 displays a comparison involving existing methods", + "source_ids": [ + 12 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "complex document qa", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is a solution or method applied to the task of complex document qa", + "source_ids": [ + 12 + ] + }, + { + "src_entity_name": "existing methods", + "tgt_entity_name": "complex document qa", + "relation_name": "", + "weight": 8.0, + "description": "existing methods are techniques used for the task of complex document qa", + "source_ids": [ + 12 + ] + } + ], + "node_idx": 12 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_120.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_120.json new file mode 100644 index 0000000..5c95d0f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_120.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "global aggregation", + "entity_type": "TASK_OR_PROBLEM", + "description": "global aggregation is a workflow involving a sequence of filters followed by synthesis", + "source_ids": [ + 120 + ] + } + ], + "relations": [], + "node_idx": 120 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_121.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_121.json new file mode 100644 index 0000000..b7dbfeb --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_121.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (12)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the global probability P as a composition of filtering and mapping operations. LaTeX: 𝑃 global = GLYPH<214> ( Filter_Modal | Filter_Range ) → Map → Reduce (12)", + "source_ids": [ + 121 + ] + } + ], + "relations": [], + "node_idx": 121 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_122.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_122.json new file mode 100644 index 0000000..f97330e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_122.json @@ -0,0 +1,99 @@ +{ + "entities": [ + { + "entity_name": "modal filter", + "entity_type": "TECHNOLOGY", + "description": "modal filter is a type of filter applied at each step of the nested composition", + "source_ids": [ + 122 + ] + }, + { + "entity_name": "range filter", + "entity_type": "TECHNOLOGY", + "description": "range filter is a type of filter applied at each step of the nested composition", + "source_ids": [ + 122 + ] + }, + { + "entity_name": "nested composition", + "entity_type": "TASK_OR_PROBLEM", + "description": "nested composition refers to the process of applying filters at each step", + "source_ids": [ + 122 + ] + }, + { + "entity_name": "", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 122 + ] + } + ], + "relations": [ + { + "src_entity_name": "", + "tgt_entity_name": "", + "relation_name": "", + "weight": 10.0, + "description": "the symbol denotes the nested composition of filters applying either a modal or range filter at each step", + "source_ids": [ + 122 + ] + }, + { + "src_entity_name": "", + "tgt_entity_name": "modal filter", + "relation_name": "", + "weight": 9.0, + "description": "the symbol denotes the application of a modal filter at each step", + "source_ids": [ + 122 + ] + }, + { + "src_entity_name": "", + "tgt_entity_name": "range filter", + "relation_name": "", + "weight": 9.0, + "description": "the symbol denotes the application of a range filter at each step", + "source_ids": [ + 122 + ] + }, + { + "src_entity_name": "", + "tgt_entity_name": "nested composition", + "relation_name": "", + "weight": 10.0, + "description": "the symbol represents the nested composition of filters", + "source_ids": [ + 122 + ] + }, + { + "src_entity_name": "modal filter", + "tgt_entity_name": "nested composition", + "relation_name": "", + "weight": 8.0, + "description": "modal filters are applied as part of the nested composition process", + "source_ids": [ + 122 + ] + }, + { + "src_entity_name": "range filter", + "tgt_entity_name": "nested composition", + "relation_name": "", + "weight": 8.0, + "description": "range filters are applied as part of the nested composition process", + "source_ids": [ + 122 + ] + } + ], + "node_idx": 122 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_123.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_123.json new file mode 100644 index 0000000..035b8a3 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_123.json @@ -0,0 +1,69 @@ +{ + "entities": [ + { + "entity_name": "5.3 structured execution", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Agent-Based Retrieval', this section details the retrieval process within the BookRAG framework, specifically focusing on operations executed under the principles of In-Context Few-Shot Training (IFT) and generation.", + "source_ids": [ + 123 + ] + }, + { + "entity_name": "retrieval process", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the specific mechanism for retrieving information from the BookIndex as described in section 5.3.", + "source_ids": [ + 123 + ] + }, + { + "entity_name": "ift principles", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the In-Context Few-Shot Training principles that guide the execution logic detailed in section 5.3.", + "source_ids": [ + 123 + ] + }, + { + "entity_name": "generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "Refers to the generative component integrated into the structured execution workflow mentioned in section 5.3.", + "source_ids": [ + 123 + ] + } + ], + "relations": [ + { + "src_entity_name": "retrieval process", + "tgt_entity_name": "5.3 structured execution", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Retrieval Process' is a primary topic of section 5.3.", + "source_ids": [ + 123 + ] + }, + { + "src_entity_name": "ift principles", + "tgt_entity_name": "5.3 structured execution", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'IFT Principles' is a primary topic of section 5.3.", + "source_ids": [ + 123 + ] + }, + { + "src_entity_name": "generation", + "tgt_entity_name": "5.3 structured execution", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Generation' is a primary topic of section 5.3.", + "source_ids": [ + 123 + ] + } + ], + "node_idx": 123 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_124.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_124.json new file mode 100644 index 0000000..3e99acf --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_124.json @@ -0,0 +1,391 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "SOFTWARE", + "description": "bookrag is a system that executes a generated workflow and embodies cognitive principles of information foraging theory", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "information foraging theory", + "entity_type": "SCIENTIFIC_THEORY", + "description": "information foraging theory ift is the cognitive principle embodied by bookrag s execution phase", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "selector", + "entity_type": "SOFTWARE", + "description": "selector is an operator in bookrag that navigates to information patches", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "reasoner", + "entity_type": "SOFTWARE", + "description": "reasoner is an operator in bookrag that performs sensemaking within information patches", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "synthesizer", + "entity_type": "SOFTWARE", + "description": "synthesizer is an operator in bookrag that generates the final answer based on processed evidence", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "workflow is the generated sequence of operations executed by bookrag", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "p", + "entity_type": "TASK_OR_PROBLEM", + "description": "p represents the specific generated workflow executed by bookrag", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "abstract textual queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "abstract textual queries are the input that bookrag translates into concrete operations", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "concrete operations", + "entity_type": "TASK_OR_PROBLEM", + "description": "concrete operations are the result of translating abstract textual queries within bookrag", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "information patches", + "entity_type": "TASK_OR_PROBLEM", + "description": "information patches are specific scopes within the document space that the selector navigates to", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "document space", + "entity_type": "TASK_OR_PROBLEM", + "description": "document space is the vast area of documents that is narrowed down by the selector", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "relevant scopes", + "entity_type": "TASK_OR_PROBLEM", + "description": "relevant scopes are the focused areas within the document space identified by the selector", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "sensemaking", + "entity_type": "TASK_OR_PROBLEM", + "description": "sensemaking is the process performed by the reasoner to analyze and refine information", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "processed evidence", + "entity_type": "TASK_OR_PROBLEM", + "description": "processed evidence is the refined information used by the synthesizer to generate the answer", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "answer", + "entity_type": "TASK_OR_PROBLEM", + "description": "answer is the final output generated by the synthesizer", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "cost of attention", + "entity_type": "TASK_OR_PROBLEM", + "description": "cost of attention is a metric minimized by bookrag s design to focus computational resources", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "computational resources", + "entity_type": "TASK_OR_PROBLEM", + "description": "computational resources are the assets focused by bookrag on high value data patches", + "source_ids": [ + 124 + ] + }, + { + "entity_name": "high value data patches", + "entity_type": "TASK_OR_PROBLEM", + "description": "high value data patches are the specific data areas where bookrag focuses its computational resources", + "source_ids": [ + 124 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "information foraging theory", + "relation_name": "", + "weight": 10.0, + "description": "bookrag embodies the cognitive principles of information foraging theory during its execution phase", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes the selector operator to navigate to information patches", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes the reasoner operator to perform sensemaking within information patches", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes the synthesizer operator to generate the final answer", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 8.0, + "description": "the selector operator narrows the document space which is subsequently analyzed by the reasoner operator", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 8.0, + "description": "the reasoner operator refines information that is then used by the synthesizer to generate the answer", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "workflow", + "relation_name": "", + "weight": 10.0, + "description": "bookrag executes the generated workflow p", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "p", + "relation_name": "", + "weight": 10.0, + "description": "p is the specific workflow executed by bookrag", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "abstract textual queries", + "relation_name": "", + "weight": 9.0, + "description": "bookrag translates abstract textual queries into concrete operations", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "concrete operations", + "relation_name": "", + "weight": 9.0, + "description": "bookrag produces concrete operations from abstract queries", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "cost of attention", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s design minimizes the cost of attention", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "computational resources", + "relation_name": "", + "weight": 9.0, + "description": "bookrag ensures computational resources are focused on high value data", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "high value data patches", + "relation_name": "", + "weight": 9.0, + "description": "bookrag focuses computational resources solely on high value data patches", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 10.0, + "description": "the selector operator navigates to information patches", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "document space", + "relation_name": "", + "weight": 9.0, + "description": "the selector narrows the vast document space down to relevant scopes", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "relevant scopes", + "relation_name": "", + "weight": 9.0, + "description": "the selector narrows the document space down to relevant scopes", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "the reasoner performs sensemaking within the information patches identified by the selector", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "processed evidence", + "relation_name": "", + "weight": 9.0, + "description": "the reasoner analyzes and refines information to create processed evidence", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "processed evidence", + "relation_name": "", + "weight": 10.0, + "description": "the synthesizer generates the answer based on the processed evidence", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 10.0, + "description": "the synthesizer generates the answer", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "abstract textual queries", + "tgt_entity_name": "concrete operations", + "relation_name": "", + "weight": 8.0, + "description": "abstract textual queries are translated into concrete operations", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "information patches", + "tgt_entity_name": "sensemaking", + "relation_name": "", + "weight": 8.0, + "description": "sensemaking is performed within the information patches", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "processed evidence", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 8.0, + "description": "processed evidence is used to generate the answer", + "source_ids": [ + 124 + ] + }, + { + "src_entity_name": "computational resources", + "tgt_entity_name": "high value data patches", + "relation_name": "", + "weight": 8.0, + "description": "computational resources are focused on high value data patches", + "source_ids": [ + 124 + ] + } + ], + "node_idx": 124 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_125.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_125.json new file mode 100644 index 0000000..1c43a46 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_125.json @@ -0,0 +1,195 @@ +{ + "entities": [ + { + "entity_name": "scent filter based retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "scent filter based retrieval is a process described as the execution that begins by narrowing the scope", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "ift", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "ift is a method or technique with which the execution aligns", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "selector operators", + "entity_type": "SOFTWARE", + "description": "selector operators are components that identify relevant patches by following information scents or applying explicit filter constraints", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "information scents", + "entity_type": "CONCEPT", + "description": "information scents are described as cues such as key entities in a question followed by selector operators", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "node set n", + "entity_type": "DATASET_OR_CORPUS", + "description": "node set n represents the full set of nodes that is reduced by the process", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "focused node subset ns", + "entity_type": "DATASET_OR_CORPUS", + "description": "focused node subset ns is the result of the reduction process applied to the full node set n", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "params sel", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "params sel are parameters used in the selector function to define the focused node subset", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "patches", + "entity_type": "PRODUCT", + "description": "patches are relevant units identified by selector operators within the retrieval process", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "question", + "entity_type": "TASK_OR_PROBLEM", + "description": "a question is mentioned as a source of key entities used to identify information scents", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "explicit filter constraints", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "explicit filter constraints are rules applied by selector operators to identify relevant patches", + "source_ids": [ + 125 + ] + }, + { + "entity_name": "equation 13", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 13 defines the mathematical relationship for the selector function reducing the node set", + "source_ids": [ + 125 + ] + } + ], + "relations": [ + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "ift", + "relation_name": "", + "weight": 9.0, + "description": "the scent filter based retrieval process aligns with ift", + "source_ids": [ + 125 + ] + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "selector operators", + "relation_name": "", + "weight": 10.0, + "description": "selector operators are the mechanism used within the scent filter based retrieval process to identify relevant patches", + "source_ids": [ + 125 + ] + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "information scents", + "relation_name": "", + "weight": 9.0, + "description": "selector operators identify relevant patches by following information scents", + "source_ids": [ + 125 + ] + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "node set n", + "relation_name": "", + "weight": 10.0, + "description": "the process reduces the full node set n to a focused subset", + "source_ids": [ + 125 + ] + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "focused node subset ns", + "relation_name": "", + "weight": 10.0, + "description": "the process results in the creation of the focused node subset ns", + "source_ids": [ + 125 + ] + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "params sel", + "relation_name": "", + "weight": 8.0, + "description": "selector operators utilize params sel in their function to reduce the node set", + "source_ids": [ + 125 + ] + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "patches", + "relation_name": "", + "weight": 9.0, + "description": "selector operators identify relevant patches", + "source_ids": [ + 125 + ] + }, + { + "src_entity_name": "information scents", + "tgt_entity_name": "question", + "relation_name": "", + "weight": 8.0, + "description": "information scents include key entities found in a question", + "source_ids": [ + 125 + ] + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "explicit filter constraints", + "relation_name": "", + "weight": 9.0, + "description": "selector operators apply explicit filter constraints to identify patches", + "source_ids": [ + 125 + ] + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "equation 13", + "relation_name": "", + "weight": 10.0, + "description": "equation 13 describes the execution of the scent filter based retrieval process", + "source_ids": [ + 125 + ] + } + ], + "node_idx": 125 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_126.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_126.json new file mode 100644 index 0000000..351e7e3 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_126.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (13)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable Ns as a selector function applied to N and parameters. LaTeX: 𝑁 𝑠 = Selector ( 𝑁, params sel ) (13)", + "source_ids": [ + 126 + ] + } + ], + "relations": [], + "node_idx": 126 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_127.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_127.json new file mode 100644 index 0000000..df655fe --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_127.json @@ -0,0 +1,293 @@ +{ + "entities": [ + { + "entity_name": "reasoner operators", + "entity_type": "TASK_OR_PROBLEM", + "description": "reasoner operators are components that evaluate nodes using multiple dimensions such as graph topology and semantic relevance", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "skyline ranker", + "entity_type": "TASK_OR_PROBLEM", + "description": "skyline ranker is a method employed to obtain the final retrieval set by retaining the pareto frontier of nodes", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "skyline operator", + "entity_type": "TASK_OR_PROBLEM", + "description": "the skyline operator is a mechanism that retains valuable nodes in at least one dimension while discarding dominated ones", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "n r", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n r represents the final retrieval set derived from the skyline ranker process", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "s g n s", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "s g n s is a function or metric used within the skyline ranker equation to evaluate nodes", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "t n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "t n is a function or metric used within the skyline ranker equation to evaluate nodes", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "n s", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n s represents the set of nodes from which the final retrieval set is derived", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "equation 14", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 14 defines the mathematical relationship for calculating the final retrieval set n r using the skyline ranker", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "graph topology", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "graph topology is a dimension used by reasoner operators to evaluate nodes", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "semantic relevance", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "semantic relevance is a dimension used by reasoner operators to evaluate nodes", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "pareto frontier", + "entity_type": "CONCEPT", + "description": "the pareto frontier is the set of nodes retained by the skyline operator that are valuable in at least one dimension", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "fixed top retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "fixed top retrieval is a method contrasted with the skyline operator for its inability to retain the pareto frontier", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "noise", + "entity_type": "CONCEPT", + "description": "noise is a factor minimized by the pre selection process to optimize foraging cost", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "foraging cost", + "entity_type": "MEASUREMENT", + "description": "foraging cost is the metric optimized by minimizing noise and focusing on relevant contexts", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "pre selection", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "pre selection is a process that minimizes noise and ensures reasoning is applied only to highly relevant contexts", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "nodes", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 127 + ] + }, + { + "entity_name": "final retrieval set", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 127 + ] + } + ], + "relations": [ + { + "src_entity_name": "reasoner operators", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "reasoner operators evaluate nodes using multiple dimensions like graph topology and semantic relevance", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "final retrieval set", + "relation_name": "", + "weight": 10.0, + "description": "the skyline ranker is employed to generate the final retrieval set", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "the skyline operator retains nodes that are valuable in at least one dimension and discards dominated ones", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "equation 14", + "relation_name": "", + "weight": 10.0, + "description": "equation 14 mathematically defines the operation of the skyline ranker", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "n r", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 10.0, + "description": "n r is the output variable resulting from the skyline ranker operation", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "s g n s", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 8.0, + "description": "s g n s is an input component used within the skyline ranker equation", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "t n", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 8.0, + "description": "t n is an input component used within the skyline ranker equation", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "n s", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 8.0, + "description": "n s is the set of nodes provided as input to the skyline ranker equation", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "reasoner operators", + "tgt_entity_name": "graph topology", + "relation_name": "", + "weight": 9.0, + "description": "reasoner operators use graph topology as a dimension for evaluation", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "reasoner operators", + "tgt_entity_name": "semantic relevance", + "relation_name": "", + "weight": 9.0, + "description": "reasoner operators use semantic relevance as a dimension for evaluation", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "pareto frontier", + "relation_name": "", + "weight": 10.0, + "description": "the skyline operator retains the pareto frontier of nodes", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "skyline operator", + "tgt_entity_name": "fixed top retrieval", + "relation_name": "", + "weight": 7.0, + "description": "the skyline operator is contrasted with fixed top retrieval in the text", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "pre selection", + "tgt_entity_name": "noise", + "relation_name": "", + "weight": 9.0, + "description": "pre selection minimizes noise", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "pre selection", + "tgt_entity_name": "foraging cost", + "relation_name": "", + "weight": 8.0, + "description": "pre selection optimizes the foraging cost", + "source_ids": [ + 127 + ] + }, + { + "src_entity_name": "n r", + "tgt_entity_name": "nodes", + "relation_name": "", + "weight": 9.0, + "description": "n r represents the set of retained nodes", + "source_ids": [ + 127 + ] + } + ], + "node_idx": 127 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_128.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_128.json new file mode 100644 index 0000000..0ecbb36 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_128.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (14)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable NR as a Skyline Ranker applied to a set of SG and T values. LaTeX: 𝑁 𝑅 = Skyline_Ranker ({ 𝑆 𝐺 ( 𝑛 , 𝑆 ) 𝑇 ( 𝑛 ) | 𝑛 ∈ 𝑁 𝑠 }) (14)", + "source_ids": [ + 128 + ] + } + ], + "relations": [], + "node_idx": 128 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_129.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_129.json new file mode 100644 index 0000000..43a820e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_129.json @@ -0,0 +1,125 @@ +{ + "entities": [ + { + "entity_name": "synthesizer", + "entity_type": "SOFTWARE", + "description": "the synthesizer is an operator that generates a coherent answer by aggregating refined evidence", + "source_ids": [ + 129 + ] + }, + { + "entity_name": "analysis merging generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "analysis merging generation is described as the final stage of a process involving the synthesizer operator", + "source_ids": [ + 129 + ] + }, + { + "entity_name": "q", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "q is a variable representing a query or input used by the synthesizer operator", + "source_ids": [ + 129 + ] + }, + { + "entity_name": "n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n is a variable representing refined evidence used by the synthesizer operator", + "source_ids": [ + 129 + ] + }, + { + "entity_name": "a", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "a is the variable representing the coherent answer generated by the synthesizer operator", + "source_ids": [ + 129 + ] + }, + { + "entity_name": "15", + "entity_type": "EQUATION_OR_FORMULA", + "description": "15 is the label or identifier for the equation describing the synthesizer operator s function", + "source_ids": [ + 129 + ] + } + ], + "relations": [ + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "analysis merging generation", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator is the key component used in the final stage of analysis merging generation", + "source_ids": [ + 129 + ] + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "q", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator takes q as an input parameter to generate the answer", + "source_ids": [ + 129 + ] + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "n", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator takes n as an input parameter to generate the answer", + "source_ids": [ + 129 + ] + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "a", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator produces a as its output", + "source_ids": [ + 129 + ] + }, + { + "src_entity_name": "a", + "tgt_entity_name": "15", + "relation_name": "", + "weight": 8.0, + "description": "a is the subject of the equation labeled 15", + "source_ids": [ + 129 + ] + }, + { + "src_entity_name": "q", + "tgt_entity_name": "15", + "relation_name": "", + "weight": 8.0, + "description": "q is a component of the equation labeled 15", + "source_ids": [ + 129 + ] + }, + { + "src_entity_name": "n", + "tgt_entity_name": "15", + "relation_name": "", + "weight": 8.0, + "description": "n is a component of the equation labeled 15", + "source_ids": [ + 129 + ] + } + ], + "node_idx": 129 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_13.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_13.json new file mode 100644 index 0000000..942d85a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_13.json @@ -0,0 +1,375 @@ +{ + "entities": [ + { + "entity_name": "cref='#/texts/14'", + "entity_type": "IMAGE", + "description": "A diagram comparing three RAG (Retrieval-Augmented Generation) architectures: Text-Only RAG, Layout Segmented RAG, and BookRAG.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "complex query", + "entity_type": "TASK_OR_PROBLEM", + "description": "The input task represented by a user icon with a question mark, initiating the process.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "complex multi-page document", + "entity_type": "PRODUCT", + "description": "The source document containing multiple pages that serves as the input data.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "text-only rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Section (a) of the diagram illustrating a Retrieval-Augmented Generation approach using plain text extraction.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "plain text extraction (ocr)", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The first step in Text-Only RAG where text is extracted from the document images.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "unstructured chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "The output of OCR processing, representing fragmented text segments without structural context.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "text index (vector/graph/tree)", + "entity_type": "SYSTEM_COMPONENT", + "description": "The indexing structure created to store and organize the unstructured chunks for retrieval.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "fixed/ graph retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The retrieval mechanism used to find relevant information from the index.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "llm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "Large Language Model depicted as a robot head, which generates the final answer based on retrieved information.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "fails on structural dependencies", + "entity_type": "TASK_OR_PROBLEM", + "description": "A limitation identified in the Text-Only RAG approach regarding its inability to handle complex structures.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "layout segmented rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Section (b) of the diagram illustrating a RAG approach that segments content based on layout analysis.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "layout analysis & parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The initial step in this section where the document's visual layout is analyzed and parsed.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "flattened chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "Chunks derived from layout analysis but flattened, losing some hierarchical relationships.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "flattened vector index", + "entity_type": "SYSTEM_COMPONENT", + "description": "An index built upon the flattened chunks.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "fixed retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The retrieval method used in the Layout Segmented RAG pipeline.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "loses complex relationships", + "entity_type": "TASK_OR_PROBLEM", + "description": "A drawback noted for the Layout Segmented RAG approach due to flattening the data.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "bookrag (natively structure-aware)", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Section (c) of the diagram presenting the proposed solution, a structure-aware RAG architecture.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "hierarchical chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "Chunks that preserve the hierarchical structure of the document.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "SYSTEM_COMPONENT", + "description": "A graph-based index representing the hierarchical relationships between chunks.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "agent-based retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A retrieval strategy utilizing an agent to navigate the BookIndex graph effectively.", + "source_ids": [ + 13 + ] + }, + { + "entity_name": "accurate, structured-grounded", + "entity_type": "EVALUATION_METRIC", + "description": "The positive outcome achieved by the BookRAG system, indicating high accuracy and structural awareness.", + "source_ids": [ + 13 + ] + } + ], + "relations": [ + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "complex query", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Complex Query", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "complex multi-page document", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Complex Multi-page Document", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "text-only rag", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Text-Only RAG", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "plain text extraction (ocr)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Plain Text Extraction (OCR)", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "unstructured chunks", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Unstructured Chunks", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "text index (vector/graph/tree)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Text Index (Vector/Graph/Tree)", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "fixed/ graph retrieval", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Fixed/ Graph Retrieval", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to LLM", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "fails on structural dependencies", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Fails on Structural dependencies", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "layout segmented rag", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Layout Segmented RAG", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "layout analysis & parsing", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Layout Analysis & Parsing", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "flattened chunks", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Flattened Chunks", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "flattened vector index", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Flattened Vector Index", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "fixed retrieval", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Fixed Retrieval", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "loses complex relationships", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Loses complex relationships", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "bookrag (natively structure-aware)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to BookRAG (Natively Structure-aware)", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "hierarchical chunks", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Hierarchical Chunks", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to BookIndex", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "agent-based retrieval", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Agent-based Retrieval", + "source_ids": [ + 13 + ] + }, + { + "src_entity_name": "cref='#/texts/14'", + "tgt_entity_name": "accurate, structured-grounded", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/14' related to Accurate, structured-grounded", + "source_ids": [ + 13 + ] + } + ], + "node_idx": 13 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_130.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_130.json new file mode 100644 index 0000000..5236316 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_130.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (15)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable A as the output of a Synthesizer function. LaTeX: 𝐴 = Synthesizer ( 𝑞, 𝑁 𝑅 ) (15)", + "source_ids": [ + 130 + ] + } + ], + "relations": [], + "node_idx": 130 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_131.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_131.json new file mode 100644 index 0000000..213290b --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_131.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "table 3", + "entity_type": "TABLE", + "description": "table 3 is a table that categorizes operators utilized in bookrag by their function", + "source_ids": [ + 131 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a product or system that utilizes various operators categorized by function", + "source_ids": [ + 131 + ] + } + ], + "relations": [ + { + "src_entity_name": "table 3", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "table 3 details the operators used within the bookrag system", + "source_ids": [ + 131 + ] + } + ], + "node_idx": 131 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_132.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_132.json new file mode 100644 index 0000000..dfd9923 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_132.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "table: cref='#/texts/136'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/136'", + "source_ids": [ + 132 + ] + }, + { + "entity_name": "cref", + "entity_type": "EQUATION_OR_FORMULA", + "description": "A cross-reference identifier or formula string found in the description, pointing to a specific text location ('#/texts/136').", + "source_ids": [ + 132 + ] + } + ], + "relations": [ + { + "src_entity_name": "table: cref='#/texts/136'...", + "tgt_entity_name": "cref", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/136'...' contains data about 'cref'.", + "source_ids": [ + 132 + ] + } + ], + "node_idx": 132 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_133.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_133.json new file mode 100644 index 0000000..e617d83 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_133.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "8", + "entity_type": "MEASUREMENT", + "description": "8 is a numerical value mentioned in the text likely representing a count or identifier", + "source_ids": [ + 133 + ] + } + ], + "relations": [], + "node_idx": 133 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_134.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_134.json new file mode 100644 index 0000000..33dda76 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_134.json @@ -0,0 +1,231 @@ +{ + "entities": [ + { + "entity_name": "map operator", + "entity_type": "TASK_OR_PROBLEM", + "description": "the map operator is a component that performs fine grained analysis on individual evidence blocks or sub problems", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "decompose", + "entity_type": "TASK_OR_PROBLEM", + "description": "decompose is a process that generates sub problems which are analyzed by the map operator", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "reduce operator", + "entity_type": "TASK_OR_PROBLEM", + "description": "the reduce operator is a component that aggregates partial results to construct the final response", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "global filter", + "entity_type": "TASK_OR_PROBLEM", + "description": "the global filter is a mechanism used to generate statistical counts as partial results", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "evidence blocks", + "entity_type": "TASK_OR_PROBLEM", + "description": "evidence blocks are the individual units of content that the map operator analyzes", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "sub problems", + "entity_type": "TASK_OR_PROBLEM", + "description": "sub problems are specific issues derived from decompose that are analyzed by the map operator", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "intermediate insights", + "entity_type": "TASK_OR_PROBLEM", + "description": "intermediate insights are the outputs generated by the map operator during its analysis", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "partial results", + "entity_type": "TASK_OR_PROBLEM", + "description": "partial results are the outputs from the map operator that are aggregated by the reduce operator", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "answers to decomposed sub queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "answers to decomposed sub queries are a type of partial result aggregated by the reduce operator", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "statistical counts", + "entity_type": "TASK_OR_PROBLEM", + "description": "statistical counts are a type of partial result derived from a global filter and aggregated by the reduce operator", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "final response", + "entity_type": "TASK_OR_PROBLEM", + "description": "the final response is the constructed output created by the reduce operator", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "detailed content extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "detailed content extraction is a capability handled by the system s separation of map and reduce operators", + "source_ids": [ + 134 + ] + }, + { + "entity_name": "high level reasoning synthesis", + "entity_type": "TASK_OR_PROBLEM", + "description": "high level reasoning synthesis is a capability handled by the system s separation of map and reduce operators", + "source_ids": [ + 134 + ] + } + ], + "relations": [ + { + "src_entity_name": "map operator", + "tgt_entity_name": "decompose", + "relation_name": "", + "weight": 9.0, + "description": "the map operator analyzes sub problems generated from the decompose process", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "map operator", + "relation_name": "", + "weight": 9.0, + "description": "the reduce operator aggregates the partial results generated by the map operator", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "global filter", + "relation_name": "", + "weight": 8.0, + "description": "the reduce operator aggregates statistical counts derived from the global filter", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "map operator", + "tgt_entity_name": "evidence blocks", + "relation_name": "", + "weight": 9.0, + "description": "the map operator performs analysis on individual evidence blocks", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "map operator", + "tgt_entity_name": "sub problems", + "relation_name": "", + "weight": 9.0, + "description": "the map operator performs analysis on sub problems", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "map operator", + "tgt_entity_name": "intermediate insights", + "relation_name": "", + "weight": 9.0, + "description": "the map operator generates intermediate insights as its output", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "partial results", + "relation_name": "", + "weight": 9.0, + "description": "the reduce operator aggregates partial results", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "answers to decomposed sub queries", + "relation_name": "", + "weight": 8.0, + "description": "the reduce operator aggregates answers to decomposed sub queries", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "statistical counts", + "relation_name": "", + "weight": 8.0, + "description": "the reduce operator aggregates statistical counts", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "final response", + "relation_name": "", + "weight": 9.0, + "description": "the reduce operator constructs the final response", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "map operator", + "tgt_entity_name": "detailed content extraction", + "relation_name": "", + "weight": 8.0, + "description": "the map operator is responsible for detailed content extraction", + "source_ids": [ + 134 + ] + }, + { + "src_entity_name": "reduce operator", + "tgt_entity_name": "high level reasoning synthesis", + "relation_name": "", + "weight": 8.0, + "description": "the reduce operator is responsible for high level reasoning synthesis", + "source_ids": [ + 134 + ] + } + ], + "node_idx": 134 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_135.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_135.json new file mode 100644 index 0000000..5967cd2 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_135.json @@ -0,0 +1,283 @@ +{ + "entities": [ + { + "entity_name": "figure 4 b", + "entity_type": "IMAGE", + "description": "figure 4 b is an image presenting an execution trace for a single hop query", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "single hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "single hop refers to a specific type of query being illustrated in the text", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "car", + "entity_type": "PRODUCT", + "description": "car is a key entity identified in the query what is the type of car in the ranking prompt example", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "ranking prompt example", + "entity_type": "TASK_OR_PROBLEM", + "description": "ranking prompt example is a specific example context mentioned in the query regarding the type of car", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "extract", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "extract is a method used to identify key entities like car", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "select by entity", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "select by entity is a method used to retrieve relevant nodes after entity identification", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "skyline filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "skyline filtering is a technique used to refine nodes during the process", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "reduce", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "reduce is a method used to synthesize the final answer", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "agent", + "entity_type": "PERSON", + "description": "the agent is an entity that classifies queries and generates workflows in the described process", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "planning phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "the planning phase is the initial stage where the agent classifies the query and generates a workflow", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "reasoning is a step used to refine nodes in the process", + "source_ids": [ + 135 + ] + }, + { + "entity_name": "answer", + "entity_type": "TASK_OR_PROBLEM", + "description": "the answer is the final output synthesized by the agent using the reduce method", + "source_ids": [ + 135 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 4 b", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 10.0, + "description": "figure 4 b presents the execution trace for the single hop query", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 9.0, + "description": "the single hop query asks about the type of car in the example", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "car", + "tgt_entity_name": "ranking prompt example", + "relation_name": "", + "weight": 8.0, + "description": "the car is the subject of the query within the ranking prompt example context", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 9.0, + "description": "the extract method is used to identify the entity car", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "select by entity", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 8.0, + "description": "the select by entity method retrieves nodes related to the identified entity car", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "skyline filtering", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 7.0, + "description": "the skyline filtering technique refines the nodes related to car", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "reduce", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 7.0, + "description": "the reduce method synthesizes the answer regarding the car", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "planning phase", + "relation_name": "", + "weight": 9.0, + "description": "the agent operates during the planning phase to classify queries and generate workflows", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "extract", + "relation_name": "", + "weight": 9.0, + "description": "the agent uses the extract method to identify key entities", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "select by entity", + "relation_name": "", + "weight": 9.0, + "description": "the agent uses the select by entity method to retrieve relevant nodes", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "reasoning", + "relation_name": "", + "weight": 8.0, + "description": "the agent applies reasoning to refine nodes", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "skyline filtering", + "relation_name": "", + "weight": 8.0, + "description": "the agent applies skyline filtering to refine nodes", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 9.0, + "description": "the agent uses the reduce method to synthesize the answer", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "planning phase", + "tgt_entity_name": "agent", + "relation_name": "", + "weight": 9.0, + "description": "the planning phase is conducted by the agent", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "select by entity", + "relation_name": "", + "weight": 7.0, + "description": "the extract method precedes the select by entity method in the workflow", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "select by entity", + "tgt_entity_name": "reasoning", + "relation_name": "", + "weight": 7.0, + "description": "the select by entity method is followed by reasoning in the workflow", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "reasoning", + "tgt_entity_name": "skyline filtering", + "relation_name": "", + "weight": 7.0, + "description": "reasoning is followed by skyline filtering in the workflow", + "source_ids": [ + 135 + ] + }, + { + "src_entity_name": "skyline filtering", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 7.0, + "description": "skyline filtering is followed by the reduce method in the workflow", + "source_ids": [ + 135 + ] + } + ], + "node_idx": 135 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_136.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_136.json new file mode 100644 index 0000000..0fcb7e0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_136.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "6 experiments", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section details the empirical validation of the proposed BookRAG method, including experimental setup, benchmarks used, and performance results compared to baselines.", + "source_ids": [ + 136 + ] + }, + { + "entity_name": "experiments", + "entity_type": "TASK_OR_PROBLEM", + "description": "Refers to the systematic computational procedures and evaluations conducted to validate the effectiveness of the BookRAG approach, as described in section 6.", + "source_ids": [ + 136 + ] + } + ], + "relations": [ + { + "src_entity_name": "experiments", + "tgt_entity_name": "6 experiments", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Experiments' is the primary topic covered in section 6.", + "source_ids": [ + 136 + ] + } + ], + "node_idx": 136 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_137.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_137.json new file mode 100644 index 0000000..5d545ef --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_137.json @@ -0,0 +1,127 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a method or system being evaluated in the experiments against baseline methods", + "source_ids": [ + 137 + ] + }, + { + "entity_name": "document qa tasks", + "entity_type": "TASK_OR_PROBLEM", + "description": "document qa tasks are the specific problems on which the efficiency and accuracy of bookrag and baseline methods are compared", + "source_ids": [ + 137 + ] + }, + { + "entity_name": "baseline methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "baseline methods are the strong existing approaches used for comparison against bookrag in the experiments", + "source_ids": [ + 137 + ] + }, + { + "entity_name": "efficiency", + "entity_type": "EVALUATION_METRIC", + "description": "efficiency is a metric used to evaluate the performance of bookrag and baseline methods", + "source_ids": [ + 137 + ] + }, + { + "entity_name": "accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "accuracy is a metric used to evaluate the performance of bookrag and baseline methods", + "source_ids": [ + 137 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "document qa tasks", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is evaluated for its efficiency and accuracy specifically on document qa tasks", + "source_ids": [ + 137 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "baseline methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is compared against several strong baseline methods in the experiments", + "source_ids": [ + 137 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 8.0, + "description": "the efficiency of bookrag is evaluated and compared in the experiments", + "source_ids": [ + 137 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 8.0, + "description": "the accuracy of bookrag is evaluated and compared in the experiments", + "source_ids": [ + 137 + ] + }, + { + "src_entity_name": "baseline methods", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 8.0, + "description": "the efficiency of baseline methods is evaluated and compared in the experiments", + "source_ids": [ + 137 + ] + }, + { + "src_entity_name": "baseline methods", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 8.0, + "description": "the accuracy of baseline methods is evaluated and compared in the experiments", + "source_ids": [ + 137 + ] + }, + { + "src_entity_name": "document qa tasks", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 7.0, + "description": "efficiency is measured specifically on document qa tasks", + "source_ids": [ + 137 + ] + }, + { + "src_entity_name": "document qa tasks", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 7.0, + "description": "accuracy is measured specifically on document qa tasks", + "source_ids": [ + 137 + ] + } + ], + "node_idx": 137 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_138.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_138.json new file mode 100644 index 0000000..c6815ee --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_138.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "6.1 setup", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experiments' within the BookRAG paper, this section details the experimental configuration, including baseline methods, evaluation metrics (efficiency and accuracy), and the document QA tasks used to assess the proposed approach.", + "source_ids": [ + 138 + ] + } + ], + "relations": [], + "node_idx": 138 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_139.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_139.json new file mode 100644 index 0000000..1ac8190 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_139.json @@ -0,0 +1,121 @@ +{ + "entities": [ + { + "entity_name": "table 4", + "entity_type": "TABLE", + "description": "table 4 is a table listing datasets used in experiments", + "source_ids": [ + 139 + ] + }, + { + "entity_name": "em", + "entity_type": "EVALUATION_METRIC", + "description": "em denotes exact match an evaluation metric used in the experiments", + "source_ids": [ + 139 + ] + }, + { + "entity_name": "f1", + "entity_type": "EVALUATION_METRIC", + "description": "f1 denotes f1 score an evaluation metric used in the experiments", + "source_ids": [ + 139 + ] + }, + { + "entity_name": "exact match", + "entity_type": "EVALUATION_METRIC", + "description": "exact match is the full name for the metric abbreviated as em", + "source_ids": [ + 139 + ] + }, + { + "entity_name": "f1 score", + "entity_type": "EVALUATION_METRIC", + "description": "f1 score is the full name for the metric abbreviated as f1", + "source_ids": [ + 139 + ] + }, + { + "entity_name": "datasets", + "entity_type": "DATASET_OR_CORPUS", + "description": "datasets refer to the collection of data used in the experiments mentioned in the text", + "source_ids": [ + 139 + ] + }, + { + "entity_name": "our", + "entity_type": "ORGANIZATION", + "description": "our refers to the research group or team conducting the experiments mentioned in the text", + "source_ids": [ + 139 + ] + }, + { + "entity_name": "experiments", + "entity_type": "TASK_OR_PROBLEM", + "description": "experiments are the activities for which the datasets in table 4 were used", + "source_ids": [ + 139 + ] + } + ], + "relations": [ + { + "src_entity_name": "table 4", + "tgt_entity_name": "datasets", + "relation_name": "", + "weight": 10.0, + "description": "table 4 lists the datasets used in the experiments", + "source_ids": [ + 139 + ] + }, + { + "src_entity_name": "em", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 10.0, + "description": "em is the abbreviation for exact match", + "source_ids": [ + 139 + ] + }, + { + "src_entity_name": "f1", + "tgt_entity_name": "f1 score", + "relation_name": "", + "weight": 10.0, + "description": "f1 is the abbreviation for f1 score", + "source_ids": [ + 139 + ] + }, + { + "src_entity_name": "our", + "tgt_entity_name": "experiments", + "relation_name": "", + "weight": 8.0, + "description": "our group conducted the experiments referenced in the text", + "source_ids": [ + 139 + ] + }, + { + "src_entity_name": "datasets", + "tgt_entity_name": "experiments", + "relation_name": "", + "weight": 9.0, + "description": "the datasets listed in table 4 were utilized in the experiments", + "source_ids": [ + 139 + ] + } + ], + "node_idx": 139 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_14.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_14.json new file mode 100644 index 0000000..7fca7f4 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_14.json @@ -0,0 +1,461 @@ +{ + "entities": [ + { + "entity_name": "financial auditing", + "entity_type": "TASK_OR_PROBLEM", + "description": "financial auditing is a task where llms are applied but may face challenges with domain knowledge", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "legal compliance", + "entity_type": "TASK_OR_PROBLEM", + "description": "legal compliance is a task where llms are applied but may face challenges with domain knowledge", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "scientific discovery", + "entity_type": "TASK_OR_PROBLEM", + "description": "scientific discovery is a task where llms are applied but may face challenges with domain knowledge", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "llms", + "entity_type": "TECHNOLOGY", + "description": "llms are large language models that may lead to missing domain knowledge and generating outdated information", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "retrieval augmented generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "retrieval augmented generation rag is a method adopted to address llm limitations by retrieving relevant domain knowledge", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "rag is an abbreviation for retrieval augmented generation used to guide llms during response generation", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "enterprise scenarios", + "entity_type": "LOCATION", + "description": "enterprise scenarios are real world contexts where domain knowledge is stored in long form documents", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "technical handbooks", + "entity_type": "PRODUCT", + "description": "technical handbooks are long form documents where domain knowledge is often stored", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "api reference manuals", + "entity_type": "PRODUCT", + "description": "api reference manuals are long form documents where domain knowledge is often stored", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "operational guidebooks", + "entity_type": "PRODUCT", + "description": "operational guidebooks are long form documents where domain knowledge is often stored", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "books", + "entity_type": "PRODUCT", + "description": "books are a structure followed by long form documents characterized by intricate layouts and logical hierarchies", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "tables of contents", + "entity_type": "PRODUCT", + "description": "tables of contents are explicit structural elements found in long form documents", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "nested chapters", + "entity_type": "PRODUCT", + "description": "nested chapters are structural elements found in long form documents", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "multi level sections", + "entity_type": "PRODUCT", + "description": "multi level sections are structural elements found in long form documents", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "rag system", + "entity_type": "SOFTWARE", + "description": "a rag system is designed in this paper for qa over long and highly structured documents", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "qa refers to question answering the specific task the rag system is designed for", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "external sources", + "entity_type": "LOCATION", + "description": "external sources are referenced as the origin of relevant domain knowledge retrieved by rag", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "response generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "response generation is the process guided by rag to produce answers", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "domain knowledge", + "entity_type": "CONCEPT", + "description": "domain knowledge is the specific information retrieved from external sources to guide llms", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "long form documents", + "entity_type": "PRODUCT", + "description": "long form documents are the type of storage for domain knowledge in enterprise scenarios", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "intricate layouts", + "entity_type": "SHAPE", + "description": "intricate layouts are a feature of the structure of long form documents", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "logical hierarchies", + "entity_type": "CONCEPT", + "description": "logical hierarchies are a feature of the structure of long form documents", + "source_ids": [ + 14 + ] + }, + { + "entity_name": "this paper", + "entity_type": "BOOK", + "description": "this paper is the document where the authors aim to design an effective rag system", + "source_ids": [ + 14 + ] + } + ], + "relations": [ + { + "src_entity_name": "llms", + "tgt_entity_name": "financial auditing", + "relation_name": "", + "weight": 8.0, + "description": "llms are applied in financial auditing but may miss domain knowledge", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "llms", + "tgt_entity_name": "legal compliance", + "relation_name": "", + "weight": 8.0, + "description": "llms are applied in legal compliance but may miss domain knowledge", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "llms", + "tgt_entity_name": "scientific discovery", + "relation_name": "", + "weight": 8.0, + "description": "llms are applied in scientific discovery but may miss domain knowledge", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "llms", + "relation_name": "", + "weight": 9.0, + "description": "rag is used to guide llms during response generation to address their limitations", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "rag", + "tgt_entity_name": "llms", + "relation_name": "", + "weight": 9.0, + "description": "rag is used to guide llms during response generation to address their limitations", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "enterprise scenarios", + "relation_name": "", + "weight": 8.0, + "description": "rag is widely adopted in real world enterprise scenarios", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "enterprise scenarios", + "tgt_entity_name": "technical handbooks", + "relation_name": "", + "weight": 9.0, + "description": "domain knowledge in enterprise scenarios is often stored in technical handbooks", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "enterprise scenarios", + "tgt_entity_name": "api reference manuals", + "relation_name": "", + "weight": 9.0, + "description": "domain knowledge in enterprise scenarios is often stored in api reference manuals", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "enterprise scenarios", + "tgt_entity_name": "operational guidebooks", + "relation_name": "", + "weight": 9.0, + "description": "domain knowledge in enterprise scenarios is often stored in operational guidebooks", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "technical handbooks", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 7.0, + "description": "technical handbooks follow the structure of books", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "api reference manuals", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 7.0, + "description": "api reference manuals follow the structure of books", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "operational guidebooks", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 7.0, + "description": "operational guidebooks follow the structure of books", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "books", + "tgt_entity_name": "tables of contents", + "relation_name": "", + "weight": 8.0, + "description": "books are characterized by explicit tables of contents", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "books", + "tgt_entity_name": "nested chapters", + "relation_name": "", + "weight": 8.0, + "description": "books are characterized by nested chapters", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "books", + "tgt_entity_name": "multi level sections", + "relation_name": "", + "weight": 8.0, + "description": "books are characterized by multi level sections", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "qa", + "relation_name": "", + "weight": 10.0, + "description": "the rag system is designed for qa over long and highly structured documents", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "technical handbooks", + "relation_name": "", + "weight": 8.0, + "description": "the rag system is designed to handle qa over documents like technical handbooks", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "api reference manuals", + "relation_name": "", + "weight": 8.0, + "description": "the rag system is designed to handle qa over documents like api reference manuals", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "operational guidebooks", + "relation_name": "", + "weight": 8.0, + "description": "the rag system is designed to handle qa over documents like operational guidebooks", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "external sources", + "relation_name": "", + "weight": 9.0, + "description": "rag retrieves relevant domain knowledge from external sources", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "response generation", + "relation_name": "", + "weight": 9.0, + "description": "rag is used to guide the llm during response generation", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "domain knowledge", + "relation_name": "", + "weight": 9.0, + "description": "rag retrieves domain knowledge to address llm limitations", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "enterprise scenarios", + "tgt_entity_name": "long form documents", + "relation_name": "", + "weight": 9.0, + "description": "domain knowledge in enterprise scenarios is stored in long form documents", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "long form documents", + "tgt_entity_name": "intricate layouts", + "relation_name": "", + "weight": 8.0, + "description": "long form documents are characterized by intricate layouts", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "long form documents", + "tgt_entity_name": "logical hierarchies", + "relation_name": "", + "weight": 8.0, + "description": "long form documents are characterized by rigorous logical hierarchies", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "this paper", + "tgt_entity_name": "rag system", + "relation_name": "", + "weight": 10.0, + "description": "this paper aims to design an effective rag system", + "source_ids": [ + 14 + ] + }, + { + "src_entity_name": "rag system", + "tgt_entity_name": "long form documents", + "relation_name": "", + "weight": 9.0, + "description": "the rag system is designed for qa over long and highly structured documents", + "source_ids": [ + 14 + ] + } + ], + "node_idx": 14 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_140.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_140.json new file mode 100644 index 0000000..d095fcd --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_140.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "table: cref='#/texts/143'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/143'", + "source_ids": [ + 140 + ] + }, + { + "entity_name": "texts/143", + "entity_type": "SECTION_TITLE", + "description": "A reference identifier extracted from the description string 'cref='#/texts/143'', likely pointing to a specific section or text element within a document structure.", + "source_ids": [ + 140 + ] + } + ], + "relations": [ + { + "src_entity_name": "table: cref='#/texts/143'...", + "tgt_entity_name": "texts/143", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/143'...' contains data about 'texts/143'.", + "source_ids": [ + 140 + ] + } + ], + "node_idx": 140 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_141.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_141.json new file mode 100644 index 0000000..074575f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_141.json @@ -0,0 +1,389 @@ +{ + "entities": [ + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "mmlongbench is a comprehensive benchmark designed to evaluate qa capabilities on long form documents", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "m3docvqa", + "entity_type": "DATASET_OR_CORPUS", + "description": "m3docvqa is an open domain benchmark designed to test rag systems on html type documents from wikipedia", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "qasper is a qa dataset focused on scientific papers requiring evidence retrieval from the entire document", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "llm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "llm is used to generate global questions from selected document elements", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "human annotators", + "entity_type": "PERSON", + "description": "human annotators are individuals who answer and refine the synthesized qa pairs", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "table 4", + "entity_type": "TABLE", + "description": "table 4 presents the statistics of the datasets mentioned", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "20", + "entity_type": "PERCENTAGE", + "description": "20 represents the proportion of the final qa pairs that are synthesized additional pairs", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "html type documents", + "entity_type": "PRODUCT", + "description": "html type documents are the source material for the m3docvqa benchmark", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "wikipedia pages", + "entity_type": "LOCATION", + "description": "wikipedia pages are the specific source of the html type documents used in m3docvqa", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "guidebooks", + "entity_type": "PRODUCT", + "description": "guidebooks are one of the diverse categories of long form documents covered by mmlongbench", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "financial reports", + "entity_type": "PRODUCT", + "description": "financial reports are one of the diverse categories of long form documents covered by mmlongbench", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "industry files", + "entity_type": "PRODUCT", + "description": "industry files are one of the diverse categories of long form documents covered by mmlongbench", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "scientific papers", + "entity_type": "PRODUCT", + "description": "scientific papers are the focus of the qasper dataset", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "tables", + "entity_type": "TABLE", + "description": "tables are document elements from which the llm generates global questions", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "figures", + "entity_type": "IMAGE", + "description": "figures are document elements from which the llm generates global questions", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "global level questions", + "entity_type": "TASK_OR_PROBLEM", + "description": "global level questions are the specific type of questions synthesized to address scarcity in original benchmarks", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "qa pairs", + "entity_type": "TASK_OR_PROBLEM", + "description": "qa pairs are the output units generated by the llm and refined by human annotators", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "rag systems", + "entity_type": "SOFTWARE", + "description": "rag systems are the target systems tested by the m3docvqa benchmark", + "source_ids": [ + 141 + ] + }, + { + "entity_name": "complex document qa tasks", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex document qa tasks are the general category of problems addressed by the three benchmarks", + "source_ids": [ + 141 + ] + } + ], + "relations": [ + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "m3docvqa", + "relation_name": "", + "weight": 9.0, + "description": "both are widely adopted benchmarking datasets used for complex document qa tasks", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "both are widely adopted benchmarking datasets used for complex document qa tasks", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "both are widely adopted benchmarking datasets used for complex document qa tasks", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "human annotators", + "relation_name": "", + "weight": 8.0, + "description": "the llm generates questions which are then answered and refined by human annotators", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 6.0, + "description": "the llm s generated questions contribute to the statistics presented in table 4", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "human annotators", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 6.0, + "description": "the work of human annotators contributes to the statistics presented in table 4", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 7.0, + "description": "statistics for mmlongbench are presented in table 4", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 7.0, + "description": "statistics for m3docvqa are presented in table 4", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "table 4", + "relation_name": "", + "weight": 7.0, + "description": "statistics for qasper are presented in table 4", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "html type documents", + "relation_name": "", + "weight": 9.0, + "description": "m3docvqa tests rag systems on a collection of html type documents", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "html type documents", + "tgt_entity_name": "wikipedia pages", + "relation_name": "", + "weight": 10.0, + "description": "the html type documents are sourced from wikipedia pages", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "guidebooks", + "relation_name": "", + "weight": 8.0, + "description": "mmlongbench covers guidebooks as a category of documents", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "financial reports", + "relation_name": "", + "weight": 8.0, + "description": "mmlongbench covers financial reports as a category of documents", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "industry files", + "relation_name": "", + "weight": 8.0, + "description": "mmlongbench covers industry files as a category of documents", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "scientific papers", + "relation_name": "", + "weight": 10.0, + "description": "qasper is focused on scientific papers", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "tables", + "relation_name": "", + "weight": 9.0, + "description": "the llm generates questions from tables", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "figures", + "relation_name": "", + "weight": 9.0, + "description": "the llm generates questions from figures", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "global level questions", + "relation_name": "", + "weight": 10.0, + "description": "the llm generates global level questions", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "human annotators", + "tgt_entity_name": "qa pairs", + "relation_name": "", + "weight": 9.0, + "description": "human annotators answer and refine qa pairs", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "rag systems", + "relation_name": "", + "weight": 10.0, + "description": "m3docvqa is designed to test rag systems", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "mmlongbench is used for complex document qa tasks", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "m3docvqa", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "m3docvqa is used for complex document qa tasks", + "source_ids": [ + 141 + ] + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "qasper is used for complex document qa tasks", + "source_ids": [ + 141 + ] + } + ], + "node_idx": 141 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_142.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_142.json new file mode 100644 index 0000000..dfe940a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_142.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "wikipedia", + "entity_type": "ORGANIZATION", + "description": "wikipedia is an organization associated with the url provided in the text", + "source_ids": [ + 142 + ] + }, + { + "entity_name": "https www wikipedia org", + "entity_type": "LOCATION", + "description": "https www wikipedia org is a web address mentioned in the text", + "source_ids": [ + 142 + ] + } + ], + "relations": [ + { + "src_entity_name": "wikipedia", + "tgt_entity_name": "https www wikipedia org", + "relation_name": "", + "weight": 10.0, + "description": "wikipedia is the organization represented by the url https www wikipedia org", + "source_ids": [ + 142 + ] + } + ], + "node_idx": 142 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_143.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_143.json new file mode 100644 index 0000000..b872897 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_143.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 143 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_144.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_144.json new file mode 100644 index 0000000..7adf379 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_144.json @@ -0,0 +1,429 @@ +{ + "entities": [ + { + "entity_name": "exact match", + "entity_type": "EVALUATION_METRIC", + "description": "exact match is a primary evaluation metric used to assess performance in the text", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "accuracy is a primary evaluation metric used to assess performance in the text", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "token based f1 score", + "entity_type": "EVALUATION_METRIC", + "description": "token based f1 score is a primary evaluation metric used to assess performance in the text", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "time cost", + "entity_type": "EVALUATION_METRIC", + "description": "time cost is a metric used to assess efficiency during the response phase", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "token usage", + "entity_type": "EVALUATION_METRIC", + "description": "token usage is a metric used to assess efficiency during the response phase", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "retrieval recall", + "entity_type": "EVALUATION_METRIC", + "description": "retrieval recall is a metric used to evaluate methods including pdf parsing", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "pdf parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "pdf parsing is a method mentioned in the text that is evaluated using retrieval recall", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "mmlongbench is a dataset that provides page numbers for filtering candidate blocks", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "qasper is a dataset that provides evidence statements for filtering candidate blocks", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "texts", + "entity_type": "TABLE", + "description": "texts are specific pdf blocks labeled to establish ground truth", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "titles", + "entity_type": "TABLE", + "description": "titles are specific pdf blocks labeled to establish ground truth", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "tables", + "entity_type": "TABLE", + "description": "tables are specific pdf blocks labeled to establish ground truth", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "images", + "entity_type": "TABLE", + "description": "images are specific pdf blocks labeled to establish ground truth", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "formulas", + "entity_type": "TABLE", + "description": "formulas are specific pdf blocks labeled to establish ground truth", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "qa refers to the question answering task for which official metrics are specified by each dataset", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "ground truth", + "entity_type": "CONCEPT", + "description": "ground truth is the established standard used to evaluate retrieval recall and guide manual labeling", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "metadata", + "entity_type": "CONCEPT", + "description": "metadata refers to the ground truth evidence information provided in each dataset that guides the labeling process", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "modality", + "entity_type": "CONCEPT", + "description": "modality is a given attribute used to filter candidate blocks across all datasets", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "query", + "entity_type": "TASK_OR_PROBLEM", + "description": "a query is a specific question for which retrieval recall is recorded particularly when pdf parsing errors occur", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "pdf blocks", + "entity_type": "TABLE", + "description": "pdf blocks are the specific units of content texts titles tables images formulas that are manually labeled", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "candidate blocks", + "entity_type": "TABLE", + "description": "candidate blocks are the set of blocks filtered using modality page numbers and evidence statements before manual annotation", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "response phase", + "entity_type": "TIME", + "description": "the response phase is the specific time period during which time cost and token usage are measured", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "page numbers", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 144 + ] + }, + { + "entity_name": "evidence statements", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 144 + ] + } + ], + "relations": [ + { + "src_entity_name": "exact match", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 9.0, + "description": "both are primary evaluation metrics used together in the assessment process", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "exact match", + "tgt_entity_name": "token based f1 score", + "relation_name": "", + "weight": 9.0, + "description": "both are primary evaluation metrics used together in the assessment process", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "accuracy", + "tgt_entity_name": "token based f1 score", + "relation_name": "", + "weight": 9.0, + "description": "both are primary evaluation metrics used together in the assessment process", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "time cost", + "tgt_entity_name": "token usage", + "relation_name": "", + "weight": 8.0, + "description": "both are metrics used to assess efficiency during the response phase", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "pdf parsing", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 10.0, + "description": "retrieval recall is the specific metric used to evaluate the pdf parsing method", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "page numbers", + "relation_name": "", + "weight": 7.0, + "description": "mmlongbench provides page numbers used to filter candidate blocks", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "evidence statements", + "relation_name": "", + "weight": 7.0, + "description": "qasper provides evidence statements used to filter candidate blocks", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "texts", + "tgt_entity_name": "formulas", + "relation_name": "", + "weight": 6.0, + "description": "both are types of pdf blocks manually labeled to establish ground truth", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "images", + "relation_name": "", + "weight": 6.0, + "description": "both are types of pdf blocks manually labeled to establish ground truth", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 9.0, + "description": "exact match is a metric used to evaluate the qa task", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 9.0, + "description": "accuracy is a metric used to evaluate the qa task", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "token based f1 score", + "relation_name": "", + "weight": 9.0, + "description": "token based f1 score is a metric used to evaluate the qa task", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "ground truth", + "tgt_entity_name": "pdf blocks", + "relation_name": "", + "weight": 10.0, + "description": "pdf blocks are manually labeled to establish the ground truth", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "ground truth", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "retrieval recall is measured against the ground truth", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "metadata", + "tgt_entity_name": "ground truth", + "relation_name": "", + "weight": 8.0, + "description": "metadata provides the ground truth evidence used to guide the labeling process", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "candidate blocks", + "tgt_entity_name": "pdf blocks", + "relation_name": "", + "weight": 7.0, + "description": "candidate blocks are filtered from the set of pdf blocks", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "candidate blocks", + "tgt_entity_name": "modality", + "relation_name": "", + "weight": 8.0, + "description": "candidate blocks are filtered using the given modality", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "candidate blocks", + "tgt_entity_name": "page numbers", + "relation_name": "", + "weight": 8.0, + "description": "candidate blocks are filtered using page numbers from mmlongbench", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "candidate blocks", + "tgt_entity_name": "evidence statements", + "relation_name": "", + "weight": 8.0, + "description": "candidate blocks are filtered using evidence statements from qasper", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "pdf parsing", + "tgt_entity_name": "pdf blocks", + "relation_name": "", + "weight": 7.0, + "description": "pdf parsing errors affect the availability of items within pdf blocks", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "query", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "retrieval recall is recorded for a specific query when a pdf parsing error occurs", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "time cost", + "tgt_entity_name": "response phase", + "relation_name": "", + "weight": 8.0, + "description": "time cost is measured during the response phase", + "source_ids": [ + 144 + ] + }, + { + "src_entity_name": "token usage", + "tgt_entity_name": "response phase", + "relation_name": "", + "weight": 8.0, + "description": "token usage is measured during the response phase", + "source_ids": [ + 144 + ] + } + ], + "node_idx": 144 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_145.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_145.json new file mode 100644 index 0000000..b04f160 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_145.json @@ -0,0 +1,61 @@ +{ + "entities": [ + { + "entity_name": "baselines", + "entity_type": "TASK_OR_PROBLEM", + "description": "baselines refer to the standard configurations used for comparison in the experiments", + "source_ids": [ + 145 + ] + }, + { + "entity_name": "three model configurations", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "three model configurations are the specific experimental setups considered in the study", + "source_ids": [ + 145 + ] + }, + { + "entity_name": "our experiments", + "entity_type": "EVENT", + "description": "our experiments refer to the specific study or set of trials being conducted to evaluate the model configurations", + "source_ids": [ + 145 + ] + } + ], + "relations": [ + { + "src_entity_name": "baselines", + "tgt_entity_name": "three model configurations", + "relation_name": "", + "weight": 9.0, + "description": "the baselines consist of or are defined by the three model configurations used in the experiments", + "source_ids": [ + 145 + ] + }, + { + "src_entity_name": "our experiments", + "tgt_entity_name": "baselines", + "relation_name": "", + "weight": 9.0, + "description": "the experiments consider the baselines as part of their evaluation process", + "source_ids": [ + 145 + ] + }, + { + "src_entity_name": "our experiments", + "tgt_entity_name": "three model configurations", + "relation_name": "", + "weight": 10.0, + "description": "the experiments explicitly consider three model configurations as their primary focus", + "source_ids": [ + 145 + ] + } + ], + "node_idx": 145 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_146.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_146.json new file mode 100644 index 0000000..2ba35cc --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_146.json @@ -0,0 +1,119 @@ +{ + "entities": [ + { + "entity_name": "conventional rag", + "entity_type": "TASK_OR_PROBLEM", + "description": "conventional rag is described as the most common pipeline for document analysis involving text extraction and chunking", + "source_ids": [ + 146 + ] + }, + { + "entity_name": "bm25", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "bm25 is identified as a strong and widely used retrieval model selected for implementation", + "source_ids": [ + 146 + ] + }, + { + "entity_name": "vanilla rag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "vanilla rag is identified as a strong and widely used retrieval model selected for implementation", + "source_ids": [ + 146 + ] + }, + { + "entity_name": "layout vanilla", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "layout vanilla is a variant of vanilla rag that utilizes document layout analysis for semantic chunking", + "source_ids": [ + 146 + ] + }, + { + "entity_name": "document analysis", + "entity_type": "TASK_OR_PROBLEM", + "description": "document analysis is the general task where raw text is extracted and processed in the described pipeline", + "source_ids": [ + 146 + ] + }, + { + "entity_name": "raw text", + "entity_type": "MATERIAL", + "description": "raw text is the input material that is first extracted in the pipeline", + "source_ids": [ + 146 + ] + }, + { + "entity_name": "segments", + "entity_type": "MEASUREMENT", + "description": "segments are the chunks of specified size that the raw text is divided into", + "source_ids": [ + 146 + ] + }, + { + "entity_name": "document layout analysis", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "document layout analysis is the technique used by layout vanilla for semantic chunking", + "source_ids": [ + 146 + ] + }, + { + "entity_name": "semantic chunking", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "semantic chunking is the process of dividing text into segments based on meaning utilized by layout vanilla", + "source_ids": [ + 146 + ] + } + ], + "relations": [ + { + "src_entity_name": "conventional rag", + "tgt_entity_name": "bm25", + "relation_name": "", + "weight": 9.0, + "description": "conventional rag is the pipeline where bm25 is selected as a retrieval model", + "source_ids": [ + 146 + ] + }, + { + "src_entity_name": "conventional rag", + "tgt_entity_name": "vanilla rag", + "relation_name": "", + "weight": 9.0, + "description": "conventional rag is the pipeline where vanilla rag is selected as a retrieval model", + "source_ids": [ + 146 + ] + }, + { + "src_entity_name": "layout vanilla", + "tgt_entity_name": "vanilla rag", + "relation_name": "", + "weight": 10.0, + "description": "layout vanilla is a variant that builds upon vanilla rag by adding document layout analysis", + "source_ids": [ + 146 + ] + }, + { + "src_entity_name": "layout vanilla", + "tgt_entity_name": "conventional rag", + "relation_name": "", + "weight": 8.0, + "description": "layout vanilla is implemented as part of the conventional rag pipeline described in the text", + "source_ids": [ + 146 + ] + } + ], + "node_idx": 146 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_147.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_147.json new file mode 100644 index 0000000..0833017 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_147.json @@ -0,0 +1,177 @@ +{ + "entities": [ + { + "entity_name": "graph based rag", + "entity_type": "TECHNOLOGY", + "description": "graph based rag is a method that extracts textual content from documents and leverages graph data during retrieval", + "source_ids": [ + 147 + ] + }, + { + "entity_name": "raptor", + "entity_type": "TECHNOLOGY", + "description": "raptor is a specific technology selected as an example of graph based rag methods", + "source_ids": [ + 147 + ] + }, + { + "entity_name": "graphrag", + "entity_type": "TECHNOLOGY", + "description": "graphrag is a specific technology selected as an example of graph based rag methods", + "source_ids": [ + 147 + ] + }, + { + "entity_name": "graphrag global", + "entity_type": "TECHNOLOGY", + "description": "graphrag global is a version of graphrag that employs global search methods", + "source_ids": [ + 147 + ] + }, + { + "entity_name": "graphrag local", + "entity_type": "TECHNOLOGY", + "description": "graphrag local is a version of graphrag that employs local search methods", + "source_ids": [ + 147 + ] + }, + { + "entity_name": "documents", + "entity_type": "PRODUCT", + "description": "documents are the textual content from which graph based rag methods extract information", + "source_ids": [ + 147 + ] + }, + { + "entity_name": "graph data", + "entity_type": "TECHNOLOGY", + "description": "graph data is the type of data leveraged during the retrieval process in graph based rag methods", + "source_ids": [ + 147 + ] + }, + { + "entity_name": "retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval is the process performed by graph based rag methods after extracting textual content", + "source_ids": [ + 147 + ] + }, + { + "entity_name": "global search methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "global search methods are employed by the graphrag global version", + "source_ids": [ + 147 + ] + }, + { + "entity_name": "local search methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "local search methods are employed by the graphrag local version", + "source_ids": [ + 147 + ] + } + ], + "relations": [ + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "raptor", + "relation_name": "", + "weight": 9.0, + "description": "raptor is selected as a specific instance of graph based rag methods", + "source_ids": [ + 147 + ] + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "graphrag", + "relation_name": "", + "weight": 9.0, + "description": "graphrag is selected as a specific instance of graph based rag methods", + "source_ids": [ + 147 + ] + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "graphrag global", + "relation_name": "", + "weight": 10.0, + "description": "graphrag global is a version of graphrag that uses global search methods", + "source_ids": [ + 147 + ] + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "graphrag local", + "relation_name": "", + "weight": 10.0, + "description": "graphrag local is a version of graphrag that uses local search methods", + "source_ids": [ + 147 + ] + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "documents", + "relation_name": "", + "weight": 9.0, + "description": "graph based rag extracts textual content from documents", + "source_ids": [ + 147 + ] + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "graph data", + "relation_name": "", + "weight": 9.0, + "description": "graph based rag leverages graph data during retrieval", + "source_ids": [ + 147 + ] + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 8.0, + "description": "graph based rag performs retrieval as part of its process", + "source_ids": [ + 147 + ] + }, + { + "src_entity_name": "graphrag global", + "tgt_entity_name": "global search methods", + "relation_name": "", + "weight": 10.0, + "description": "graphrag global employs global search methods", + "source_ids": [ + 147 + ] + }, + { + "src_entity_name": "graphrag local", + "tgt_entity_name": "local search methods", + "relation_name": "", + "weight": 10.0, + "description": "graphrag local employs local search methods", + "source_ids": [ + 147 + ] + } + ], + "node_idx": 147 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_148.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_148.json new file mode 100644 index 0000000..722cbb9 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_148.json @@ -0,0 +1,231 @@ +{ + "entities": [ + { + "entity_name": "layoutsegmentedrag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "layoutsegmentedrag is a category of methods that utilize layout analysis to segment document content into discrete structural units", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "mm vanilla", + "entity_type": "PRODUCT", + "description": "mm vanilla is a method that utilizes multi modal embeddings for visual and textual content", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "pageindex", + "entity_type": "PRODUCT", + "description": "pageindex is a method or system referenced as an inspiration for a tree based method", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "treetraverse", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "treetraverse is a tree based method inspired by pageindex where an llm navigates the document s tree structure", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "docetl", + "entity_type": "SOFTWARE", + "description": "docetl is a declarative system for complex document processing", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "graphranker", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graphranker is a graph based method extended from hipporag that applies personalized pagerank to rank relevant nodes", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "hipporag", + "entity_type": "METHOD_OR_ARCHITECTURE", + "description": "hipporag is a method or architecture from which graphranker is extended", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "personalized pagerank", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "personalized pagerank is a technique applied by graphranker to rank relevant nodes", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "llm", + "entity_type": "TECHNOLOGY", + "description": "llm is a technology used by treetraverse to navigate the document s tree structure", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "page 39", + "entity_type": "PUBLICATION_VENUE", + "description": "page 39 is a citation reference associated with the pageindex method", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "page 47", + "entity_type": "PUBLICATION_VENUE", + "description": "page 47 is a citation reference associated with the docetl system", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "page 19", + "entity_type": "PUBLICATION_VENUE", + "description": "page 19 is a citation reference associated with the hipporag method", + "source_ids": [ + 148 + ] + }, + { + "entity_name": "page 20", + "entity_type": "PUBLICATION_VENUE", + "description": "page 20 is a citation reference associated with the personalized pagerank technique", + "source_ids": [ + 148 + ] + } + ], + "relations": [ + { + "src_entity_name": "layoutsegmentedrag", + "tgt_entity_name": "mm vanilla", + "relation_name": "", + "weight": 9.0, + "description": "mm vanilla is included as a method within the layoutsegmentedrag category", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "layoutsegmentedrag", + "tgt_entity_name": "treetraverse", + "relation_name": "", + "weight": 9.0, + "description": "treetraverse is included as a method within the layoutsegmentedrag category", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "layoutsegmentedrag", + "tgt_entity_name": "docetl", + "relation_name": "", + "weight": 9.0, + "description": "docetl is included as a method within the layoutsegmentedrag category", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "layoutsegmentedrag", + "tgt_entity_name": "graphranker", + "relation_name": "", + "weight": 9.0, + "description": "graphranker is included as a method within the layoutsegmentedrag category", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "treetraverse", + "tgt_entity_name": "pageindex", + "relation_name": "", + "weight": 8.0, + "description": "treetraverse is inspired by pageindex", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "treetraverse", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 7.0, + "description": "treetraverse uses an llm to navigate the document s tree structure", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "graphranker", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "graphranker is extended from hipporag", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "graphranker", + "tgt_entity_name": "personalized pagerank", + "relation_name": "", + "weight": 9.0, + "description": "graphranker applies personalized pagerank to rank relevant nodes", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "pageindex", + "tgt_entity_name": "page 39", + "relation_name": "", + "weight": 5.0, + "description": "pageindex is referenced in citation page 39", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "page 47", + "relation_name": "", + "weight": 5.0, + "description": "docetl is referenced in citation page 47", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "page 19", + "relation_name": "", + "weight": 5.0, + "description": "hipporag is referenced in citation page 19", + "source_ids": [ + 148 + ] + }, + { + "src_entity_name": "personalized pagerank", + "tgt_entity_name": "page 20", + "relation_name": "", + "weight": 5.0, + "description": "personalized pagerank is referenced in citation page 20", + "source_ids": [ + 148 + ] + } + ], + "node_idx": 148 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_149.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_149.json new file mode 100644 index 0000000..4d6d3ea --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_149.json @@ -0,0 +1,237 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system or method being compared against baseline methods in the text", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "qwen family", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "the qwen family refers to a set of state of the art backbone models used to power bookrag and baseline methods", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "mineru", + "entity_type": "SOFTWARE", + "description": "mineru is a tool employed for robust document layout parsing", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "github com sam234990 bookrag", + "entity_type": "LOCATION", + "description": "github com sam234990 bookrag is the url where source code prompts and configurations for bookrag are available", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "0 6", + "entity_type": "MEASUREMENT", + "description": "0 6 is the threshold value set for the gradient g in the implementation details", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "technical report", + "entity_type": "PUBLICATION_VENUE", + "description": "the technical report is a document containing more details about the implementation referenced as 57", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "gradient g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "gradient g is a parameter with a threshold set to 0 6 in the implementation details", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "appendix", + "entity_type": "SECTION_TITLE", + "description": "the appendix is a section of the technical report where more details are provided", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "prompts", + "entity_type": "TASK_OR_PROBLEM", + "description": "prompts are specific instructions or inputs used in the bookrag system available on github", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "detailed configurations", + "entity_type": "TASK_OR_PROBLEM", + "description": "detailed configurations are specific settings for the bookrag system available on github", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "state of theart", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "state of theart describes the quality of the backbone models used in the comparison", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "robust document layout parsing", + "entity_type": "TASK_OR_PROBLEM", + "description": "robust document layout parsing is the specific task performed by mineru", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "fair comparison", + "entity_type": "TASK_OR_PROBLEM", + "description": "fair comparison is the goal of the experimental setup described in the text", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "baseline methods", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 149 + ] + }, + { + "entity_name": "implementation details", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 149 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "qwen family", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is powered by backbone models from the qwen family", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "baseline methods", + "tgt_entity_name": "qwen family", + "relation_name": "", + "weight": 9.0, + "description": "baseline methods are also powered by backbone models from the qwen family", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "mineru", + "relation_name": "", + "weight": 8.0, + "description": "bookrag employs mineru for document layout parsing", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "github com sam234990 bookrag", + "relation_name": "", + "weight": 10.0, + "description": "the source code and configurations for bookrag are available at the specified github location", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "implementation details", + "tgt_entity_name": "technical report", + "relation_name": "", + "weight": 7.0, + "description": "more details about the implementation are provided in the technical report", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "gradient g", + "relation_name": "", + "weight": 8.0, + "description": "bookrag s implementation sets the threshold of gradient g as 0 6", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "technical report", + "tgt_entity_name": "appendix", + "relation_name": "", + "weight": 9.0, + "description": "the appendix is a section within the technical report containing more details", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "github com sam234990 bookrag", + "tgt_entity_name": "prompts", + "relation_name": "", + "weight": 10.0, + "description": "prompts are available at the specified github location", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "github com sam234990 bookrag", + "tgt_entity_name": "detailed configurations", + "relation_name": "", + "weight": 10.0, + "description": "detailed configurations are available at the specified github location", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "mineru", + "tgt_entity_name": "robust document layout parsing", + "relation_name": "", + "weight": 10.0, + "description": "mineru is employed to perform robust document layout parsing", + "source_ids": [ + 149 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "baseline methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag and baseline methods are compared fairly using the same backbone models", + "source_ids": [ + 149 + ] + } + ], + "node_idx": 149 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_15.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_15.json new file mode 100644 index 0000000..e159da8 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_15.json @@ -0,0 +1,367 @@ +{ + "entities": [ + { + "entity_name": "rag", + "entity_type": "TECHNOLOGY", + "description": "rag refers to retrieval augmented generation approaches for document level qa mentioned in the text", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "ocr", + "entity_type": "TECHNOLOGY", + "description": "ocr stands for optical character recognition a technology used to convert documents into plain text", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "graph based rag", + "entity_type": "TECHNOLOGY", + "description": "graph based rag is a text based rag method that uses graph data as an external knowledge source", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "graphrag", + "entity_type": "PRODUCT", + "description": "graphrag is a representative method that constructs a knowledge graph from a textual corpus", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "raptor", + "entity_type": "PRODUCT", + "description": "raptor is a representative method that builds a recursive tree structure by clustering document chunks", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "leiden community detection algorithm", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the leiden community detection algorithm is used by graphrag to obtain hierarchical clusters", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "figure 1", + "entity_type": "IMAGE", + "description": "figure 1 illustrates the two paradigms of existing rag approaches for document level qa", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "table 1", + "entity_type": "TABLE", + "description": "table 1 lists two representative methods graphrag and raptor", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "document level qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "document level qa is the specific task for which existing rag approaches are designed", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "plain text", + "entity_type": "MATERIAL", + "description": "plain text is the output format produced by ocr when converting documents", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "text based rag method", + "entity_type": "TECHNOLOGY", + "description": "text based rag methods are a category of approaches applied after ocr conversion", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "graph data", + "entity_type": "DATASET_OR_CORPUS", + "description": "graph data serves as an external knowledge source capturing semantic information and relational structures", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "knowledge graph", + "entity_type": "DATASET_OR_CORPUS", + "description": "a knowledge graph kg is constructed from a textual corpus by graphrag", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "textual corpus", + "entity_type": "DATASET_OR_CORPUS", + "description": "a textual corpus is the source material from which graphrag constructs a knowledge graph", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "hierarchical clusters", + "entity_type": "TASK_OR_PROBLEM", + "description": "hierarchical clusters are the result of applying the leiden community detection algorithm", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "summaries", + "entity_type": "PRODUCT", + "description": "summaries are generated for each community to provide a global overview of the corpus", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "recursive tree structure", + "entity_type": "TASK_OR_PROBLEM", + "description": "a recursive tree structure is built by raptor through iterative clustering and summarization", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "document chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "document chunks are the units iteratively clustered by raptor", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "fine grained semantic information", + "entity_type": "CONCEPT", + "description": "fine grained semantic information is a type of data captured by raptor across the corpus", + "source_ids": [ + 15 + ] + }, + { + "entity_name": "high level semantic information", + "entity_type": "CONCEPT", + "description": "high level semantic information is a type of data captured by raptor across the corpus", + "source_ids": [ + 15 + ] + } + ], + "relations": [ + { + "src_entity_name": "rag", + "tgt_entity_name": "ocr", + "relation_name": "", + "weight": 8.0, + "description": "rag approaches generally rely on ocr to convert documents into plain text before application", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "rag", + "tgt_entity_name": "graph based rag", + "relation_name": "", + "weight": 9.0, + "description": "state of the art rag methods increasingly adopt graph based rag approaches", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "leiden community detection algorithm", + "relation_name": "", + "weight": 10.0, + "description": "graphrag applies the leiden community detection algorithm to obtain hierarchical clusters", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "table 1", + "relation_name": "", + "weight": 9.0, + "description": "graphrag is listed as a representative method in table 1", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "raptor", + "tgt_entity_name": "table 1", + "relation_name": "", + "weight": 9.0, + "description": "raptor is listed as a representative method in table 1", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "figure 1", + "tgt_entity_name": "rag", + "relation_name": "", + "weight": 8.0, + "description": "figure 1 illustrates the existing rag approaches for document level qa", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "rag", + "tgt_entity_name": "document level qa", + "relation_name": "", + "weight": 10.0, + "description": "rag approaches are designed for document level qa tasks", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "ocr", + "tgt_entity_name": "plain text", + "relation_name": "", + "weight": 10.0, + "description": "ocr converts documents into plain text", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "text based rag method", + "tgt_entity_name": "graph based rag", + "relation_name": "", + "weight": 9.0, + "description": "graph based rag is a specific type of text based rag method", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "graph based rag", + "tgt_entity_name": "graph data", + "relation_name": "", + "weight": 9.0, + "description": "graph based rag uses graph data as an external knowledge source", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "knowledge graph", + "relation_name": "", + "weight": 10.0, + "description": "graphrag constructs a knowledge graph from a textual corpus", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "textual corpus", + "relation_name": "", + "weight": 9.0, + "description": "graphrag uses a textual corpus as the source for constructing a knowledge graph", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "leiden community detection algorithm", + "tgt_entity_name": "hierarchical clusters", + "relation_name": "", + "weight": 10.0, + "description": "the leiden community detection algorithm produces hierarchical clusters", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "graphrag", + "tgt_entity_name": "summaries", + "relation_name": "", + "weight": 9.0, + "description": "graphrag generates summaries for each community", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "raptor", + "tgt_entity_name": "recursive tree structure", + "relation_name": "", + "weight": 10.0, + "description": "raptor builds a recursive tree structure", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "raptor", + "tgt_entity_name": "document chunks", + "relation_name": "", + "weight": 10.0, + "description": "raptor iteratively clusters document chunks", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "raptor", + "tgt_entity_name": "fine grained semantic information", + "relation_name": "", + "weight": 9.0, + "description": "raptor captures fine grained semantic information across the corpus", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "raptor", + "tgt_entity_name": "high level semantic information", + "relation_name": "", + "weight": 9.0, + "description": "raptor captures high level semantic information across the corpus", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "table 1", + "tgt_entity_name": "graphrag", + "relation_name": "", + "weight": 9.0, + "description": "table 1 lists graphrag as a representative method", + "source_ids": [ + 15 + ] + }, + { + "src_entity_name": "table 1", + "tgt_entity_name": "raptor", + "relation_name": "", + "weight": 9.0, + "description": "table 1 lists raptor as a representative method", + "source_ids": [ + 15 + ] + } + ], + "node_idx": 15 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_150.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_150.json new file mode 100644 index 0000000..368566d --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_150.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "6.2 overall results", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experiments' within the BookRAG paper, this section presents the aggregate performance metrics comparing the proposed method against baseline approaches on document QA tasks.", + "source_ids": [ + 150 + ] + } + ], + "relations": [], + "node_idx": 150 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_151.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_151.json new file mode 100644 index 0000000..db44e4f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_151.json @@ -0,0 +1,115 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system being evaluated for its qa performance retrieval effectiveness and query efficiency", + "source_ids": [ + 151 + ] + }, + { + "entity_name": "state of the art baselines", + "entity_type": "PRODUCT", + "description": "state of the art baselines are the existing systems used for comparison in the evaluation of bookrag", + "source_ids": [ + 151 + ] + }, + { + "entity_name": "qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "qa refers to the question answering task being evaluated for performance", + "source_ids": [ + 151 + ] + }, + { + "entity_name": "retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval refers to the effectiveness of retrieving information which is being evaluated", + "source_ids": [ + 151 + ] + }, + { + "entity_name": "query efficiency", + "entity_type": "TASK_OR_PROBLEM", + "description": "query efficiency is a metric being analyzed to determine the system s performance", + "source_ids": [ + 151 + ] + }, + { + "entity_name": "evaluation", + "entity_type": "EVENT", + "description": "evaluation is the comprehensive process of analyzing bookrag s performance described in the text", + "source_ids": [ + 151 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "state of the art baselines", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is being compared against state of the art baselines to analyze its performance", + "source_ids": [ + 151 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "qa", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is being analyzed for its complex qa performance", + "source_ids": [ + 151 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is being analyzed for its retrieval effectiveness", + "source_ids": [ + 151 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query efficiency", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is being analyzed for its query efficiency", + "source_ids": [ + 151 + ] + }, + { + "src_entity_name": "evaluation", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "the evaluation is the process being conducted on bookrag", + "source_ids": [ + 151 + ] + }, + { + "src_entity_name": "evaluation", + "tgt_entity_name": "state of the art baselines", + "relation_name": "", + "weight": 8.0, + "description": "the evaluation involves comparing bookrag to state of the art baselines", + "source_ids": [ + 151 + ] + } + ], + "node_idx": 151 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_152.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_152.json new file mode 100644 index 0000000..5659d00 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_152.json @@ -0,0 +1,417 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system compared against baselines that achieves state of the art qa performance", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "table 5", + "entity_type": "TABLE", + "description": "table 5 is the location where the comparison of qa performance between bookrag and baselines is shown", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "m3docvqa", + "entity_type": "DATASET_OR_CORPUS", + "description": "m3docvqa is a dataset used to evaluate the exact match performance of bookrag", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "layout vanilla", + "entity_type": "PRODUCT", + "description": "layout vanilla is a baseline method that consistently outperforms vanilla rag", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "vanilla rag", + "entity_type": "PRODUCT", + "description": "vanilla rag is a baseline method that is outperformed by layout vanilla", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "tree traverse", + "entity_type": "PRODUCT", + "description": "tree traverse is a method highlighted for having suboptimal results due to limitations in hierarchical navigation", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "graphranker", + "entity_type": "PRODUCT", + "description": "graphranker is a method highlighted for having suboptimal results due to limitations in graph based reasoning", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "tree graph bookindex", + "entity_type": "PRODUCT", + "description": "tree graph bookindex is a component of bookrag that contributes to its superior performance", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "agent based planning", + "entity_type": "PRODUCT", + "description": "agent based planning is a component of bookrag that contributes to its superior performance", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "18 0", + "entity_type": "PERCENTAGE", + "description": "18 0 is the margin by which bookrag outperforms the top performing baseline in exact match on m3docvqa", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "qa performance", + "entity_type": "TASK_OR_PROBLEM", + "description": "qa performance is the specific task being evaluated and compared in the text", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "exact match", + "entity_type": "EVALUATION_METRIC", + "description": "exact match is the metric used to measure the performance of bookrag against baselines", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "hierarchical navigation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "hierarchical navigation is a method used by tree traverse that is noted for missing cross sectional context", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "graph based reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graph based reasoning is a method used by graphranker that is noted for drifting into irrelevant scopes", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "context fragmentation", + "entity_type": "TASK_OR_PROBLEM", + "description": "context fragmentation is a limitation of existing baselines that bookrag overcomes", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "static query workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "static query workflow is a limitation of existing baselines that bookrag overcomes", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "cross sectional context", + "entity_type": "CONCEPT", + "description": "cross sectional context is information often missed by methods relying solely on hierarchical navigation", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "irrelevant scopes", + "entity_type": "CONCEPT", + "description": "irrelevant scopes are areas that methods relying solely on graph based reasoning may drift into", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval is the process of finding evidence which is improved by layout parsing", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation is the process of creating output which is made accurate by bookrag", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "queries", + "entity_type": "CONCEPT", + "description": "queries are inputs that bookrag effectively classifies to configure optimal workflows", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "workflows", + "entity_type": "CONCEPT", + "description": "workflows are configured by bookrag to ensure precise evidence retrieval and accurate generation", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "baselines", + "entity_type": "PRODUCT", + "description": "baselines are the three categories of methods against which bookrag is compared", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "top performing baseline", + "entity_type": "PRODUCT", + "description": "top performing baseline is the specific baseline that bookrag substantially outperforms", + "source_ids": [ + 152 + ] + }, + { + "entity_name": "existing baselines", + "entity_type": "PRODUCT", + "description": "existing baselines are the methods that suffer from context fragmentation and static query workflows", + "source_ids": [ + 152 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "table 5", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s qa performance is presented and compared in table 5", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "m3docvqa", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is evaluated on the m3docvqa dataset where it achieves a specific performance margin", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "18 0", + "relation_name": "", + "weight": 10.0, + "description": "bookrag outperforms the top baseline by 18 0 on the m3docvqa dataset", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "layout vanilla", + "tgt_entity_name": "vanilla rag", + "relation_name": "", + "weight": 9.0, + "description": "layout vanilla consistently outperforms vanilla rag in the comparison", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "tree graph bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookrag s superiority stems from the synergy of its unified tree graph bookindex", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 10.0, + "description": "bookrag s superiority stems from the synergy of its agent based planning", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "tree traverse", + "tgt_entity_name": "graphranker", + "relation_name": "", + "weight": 7.0, + "description": "both tree traverse and graphranker are highlighted for having suboptimal results due to similar limitations", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "qa performance", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is the subject of the qa performance evaluation described in the text", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s performance is measured using the exact match metric on m3docvqa", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 9.0, + "description": "bookrag ensures precise evidence retrieval by overcoming limitations of existing baselines", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 9.0, + "description": "bookrag ensures accurate generation by overcoming limitations of existing baselines", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "queries", + "relation_name": "", + "weight": 9.0, + "description": "bookrag effectively classifies queries to configure optimal workflows", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "workflows", + "relation_name": "", + "weight": 9.0, + "description": "bookrag configures optimal workflows to improve retrieval and generation", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "layout vanilla", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 8.0, + "description": "layout vanilla preserves essential structural information for better retrieval", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "tree traverse", + "tgt_entity_name": "hierarchical navigation", + "relation_name": "", + "weight": 9.0, + "description": "tree traverse relies on hierarchical navigation which leads to suboptimal results", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "graphranker", + "tgt_entity_name": "graph based reasoning", + "relation_name": "", + "weight": 9.0, + "description": "graphranker relies on graph based reasoning which leads to suboptimal results", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "tree traverse", + "tgt_entity_name": "cross sectional context", + "relation_name": "", + "weight": 8.0, + "description": "tree traverse often misses cross sectional context due to its reliance on hierarchical navigation", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "graphranker", + "tgt_entity_name": "irrelevant scopes", + "relation_name": "", + "weight": 8.0, + "description": "graphranker often drifts into irrelevant scopes due to its reliance on graph based reasoning", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "context fragmentation", + "relation_name": "", + "weight": 9.0, + "description": "bookrag overcomes the limitation of context fragmentation found in existing baselines", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "static query workflow", + "relation_name": "", + "weight": 9.0, + "description": "bookrag overcomes the limitation of static query workflow found in existing baselines", + "source_ids": [ + 152 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "top performing baseline", + "relation_name": "", + "weight": 10.0, + "description": "bookrag substantially outperforms the top performing baseline by 18 0", + "source_ids": [ + 152 + ] + } + ], + "node_idx": 152 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_153.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_153.json new file mode 100644 index 0000000..1a11591 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_153.json @@ -0,0 +1,229 @@ +{ + "entities": [ + { + "entity_name": "table 5", + "entity_type": "TABLE", + "description": "table 5 is a performance comparison table showing results of different methods on document qa tasks", + "source_ids": [ + 153 + ] + }, + { + "entity_name": "performance comparison", + "entity_type": "TASK_OR_PROBLEM", + "description": "performance comparison refers to the evaluation of different methods across various datasets", + "source_ids": [ + 153 + ] + }, + { + "entity_name": "different methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "different methods are the various approaches being compared in the table for solving document qa tasks", + "source_ids": [ + 153 + ] + }, + { + "entity_name": "datasets", + "entity_type": "DATASET_OR_CORPUS", + "description": "datasets are the various collections of data used to evaluate the performance of the methods", + "source_ids": [ + 153 + ] + }, + { + "entity_name": "complex document qa tasks", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex document qa tasks are the specific problems being solved by the methods in the comparison", + "source_ids": [ + 153 + ] + }, + { + "entity_name": "best results", + "entity_type": "EVALUATION_METRIC", + "description": "best results refer to the top performing outcomes marked in bold in the table", + "source_ids": [ + 153 + ] + }, + { + "entity_name": "second best results", + "entity_type": "EVALUATION_METRIC", + "description": "second best results refer to the runner up outcomes marked in underlined in the table", + "source_ids": [ + 153 + ] + }, + { + "entity_name": "bold", + "entity_type": "COLOR", + "description": "bold refers to the text formatting style used to mark the best results in the table", + "source_ids": [ + 153 + ] + }, + { + "entity_name": "underlined", + "entity_type": "SHAPE", + "description": "underlined refers to the text formatting style used to mark the second best results in the table", + "source_ids": [ + 153 + ] + } + ], + "relations": [ + { + "src_entity_name": "table 5", + "tgt_entity_name": "performance comparison", + "relation_name": "", + "weight": 10.0, + "description": "table 5 presents the performance comparison of different methods", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "different methods", + "relation_name": "", + "weight": 10.0, + "description": "table 5 compares the performance of different methods", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "datasets", + "relation_name": "", + "weight": 10.0, + "description": "table 5 evaluates methods across various datasets", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 10.0, + "description": "table 5 focuses on solving complex document qa tasks", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "best results", + "relation_name": "", + "weight": 9.0, + "description": "table 5 marks the best results in bold", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "second best results", + "relation_name": "", + "weight": 9.0, + "description": "table 5 marks the second best results in underlined", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "performance comparison", + "tgt_entity_name": "different methods", + "relation_name": "", + "weight": 8.0, + "description": "the performance comparison involves evaluating different methods", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "performance comparison", + "tgt_entity_name": "datasets", + "relation_name": "", + "weight": 8.0, + "description": "the performance comparison is conducted across various datasets", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "performance comparison", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 8.0, + "description": "the performance comparison is aimed at solving complex document qa tasks", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "different methods", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "different methods are used to solve complex document qa tasks", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "datasets", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 8.0, + "description": "datasets are used to evaluate methods for complex document qa tasks", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "best results", + "tgt_entity_name": "bold", + "relation_name": "", + "weight": 10.0, + "description": "the best results are identified by being marked in bold", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "second best results", + "tgt_entity_name": "underlined", + "relation_name": "", + "weight": 10.0, + "description": "the second best results are identified by being marked as underlined", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "bold", + "relation_name": "", + "weight": 9.0, + "description": "table 5 uses bold formatting to highlight specific results", + "source_ids": [ + 153 + ] + }, + { + "src_entity_name": "table 5", + "tgt_entity_name": "underlined", + "relation_name": "", + "weight": 9.0, + "description": "table 5 uses underlined formatting to highlight specific results", + "source_ids": [ + 153 + ] + } + ], + "node_idx": 153 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_154.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_154.json new file mode 100644 index 0000000..33da272 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_154.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "table: cref='#/texts/156'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/156'", + "source_ids": [ + 154 + ] + }, + { + "entity_name": "cref", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A reference identifier or cross-reference key found in the description text, pointing to a specific text location ('#/texts/156').", + "source_ids": [ + 154 + ] + } + ], + "relations": [ + { + "src_entity_name": "table: cref='#/texts/156'...", + "tgt_entity_name": "cref", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/156'...' contains data about 'cref'.", + "source_ids": [ + 154 + ] + } + ], + "node_idx": 154 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_155.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_155.json new file mode 100644 index 0000000..558147e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_155.json @@ -0,0 +1,61 @@ +{ + "entities": [ + { + "entity_name": "table 6", + "entity_type": "TABLE", + "description": "table 6 is a table presenting a comparison of retrieval recall among layout based methods", + "source_ids": [ + 155 + ] + }, + { + "entity_name": "retrieval recall", + "entity_type": "EVALUATION_METRIC", + "description": "retrieval recall is the metric being compared among the layout based methods in the text", + "source_ids": [ + 155 + ] + }, + { + "entity_name": "layout based methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "layout based methods are the techniques being evaluated for their retrieval recall performance", + "source_ids": [ + 155 + ] + } + ], + "relations": [ + { + "src_entity_name": "table 6", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 10.0, + "description": "table 6 displays the comparison results for the retrieval recall metric", + "source_ids": [ + 155 + ] + }, + { + "src_entity_name": "table 6", + "tgt_entity_name": "layout based methods", + "relation_name": "", + "weight": 10.0, + "description": "table 6 compares the performance of various layout based methods", + "source_ids": [ + 155 + ] + }, + { + "src_entity_name": "retrieval recall", + "tgt_entity_name": "layout based methods", + "relation_name": "", + "weight": 9.0, + "description": "retrieval recall is the specific metric used to evaluate the layout based methods", + "source_ids": [ + 155 + ] + } + ], + "node_idx": 155 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_156.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_156.json new file mode 100644 index 0000000..2f1daeb --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_156.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "cref='#/texts/158'", + "entity_type": "TABLE", + "description": "A table entity identified by the reference string provided in the description, representing a specific text section or data block.", + "source_ids": [ + 156 + ] + } + ], + "relations": [], + "node_idx": 156 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_157.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_157.json new file mode 100644 index 0000000..df85f45 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_157.json @@ -0,0 +1,381 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a retrieval system evaluated for its performance against other baselines", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "m3docvqa", + "entity_type": "DATASET_OR_CORPUS", + "description": "m3docvqa is a dataset used to evaluate the retrieval recall of bookrag", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "graphranker", + "entity_type": "PRODUCT", + "description": "graphranker is a layout based baseline system compared against bookrag", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "ift inspired selector reasoner workflow", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the ift inspired selector reasoner workflow is the process used by bookrag to classify queries and analyze information", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "agent based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "agent based planning is a component of the workflow that classifies the query", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "selector", + "entity_type": "SOFTWARE", + "description": "the selector is a component that narrows the search to a precise information patch", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "reasoner", + "entity_type": "SOFTWARE", + "description": "the reasoner is a component that performs analysis on the selected information", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "skyline ranker", + "entity_type": "SOFTWARE", + "description": "skyline ranker is a process that retains a specific number of nodes after analysis", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "71 2", + "entity_type": "PERCENTAGE", + "description": "71 2 is the retrieval recall achieved by bookrag on the m3docvqa dataset", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "44 5", + "entity_type": "PERCENTAGE", + "description": "44 5 is the maximum retrieval recall achieved by the graphranker baseline", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "9 87", + "entity_type": "MEASUREMENT", + "description": "9 87 is the average number of retained nodes on one of the three datasets after the skyline ranker process", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "6 86", + "entity_type": "MEASUREMENT", + "description": "6 86 is the average number of retained nodes on another of the three datasets after the skyline ranker process", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "8 6", + "entity_type": "MEASUREMENT", + "description": "8 6 is the average number of retained nodes on the third dataset after the skyline ranker process", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "10", + "entity_type": "MEASUREMENT", + "description": "10 is the value of k used in the standard top k setting for comparison", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "retrieval performance", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval performance is the specific metric being evaluated to validate the retrieval design of bookrag", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "retrieval recall", + "entity_type": "EVALUATION_METRIC", + "description": "retrieval recall is the specific performance metric used to compare bookrag against other baselines", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "ground truth layout blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "ground truth layout blocks are the reference data used to evaluate the retrieval recall", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "layout based baselines", + "entity_type": "PRODUCT", + "description": "layout based baselines are the group of systems against which bookrag is compared", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "query", + "entity_type": "TASK_OR_PROBLEM", + "description": "the query is the input that is classified by the agent based planning component", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "information patch", + "entity_type": "TASK_OR_PROBLEM", + "description": "the information patch is the precise data segment targeted by the selector component", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "candidate size", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "candidate size is the variable representing the number of candidates which is kept from inflating by the skyline ranker process", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "three datasets", + "entity_type": "DATASET_OR_CORPUS", + "description": "three datasets are the collective group of data used to measure the average number of retained nodes", + "source_ids": [ + 157 + ] + }, + { + "entity_name": "standard top k setting", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the standard top k setting is the baseline configuration used for comparison with the skyline ranker results", + "source_ids": [ + 157 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "m3docvqa", + "relation_name": "", + "weight": 10.0, + "description": "bookrag achieves a 71 2 recall on the m3docvqa dataset", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "graphranker", + "relation_name": "", + "weight": 9.0, + "description": "bookrag significantly outperforms graphranker in retrieval recall", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "ift inspired selector reasoner workflow", + "relation_name": "", + "weight": 10.0, + "description": "the performance advantage of bookrag stems from its ift inspired selector reasoner workflow", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "ift inspired selector reasoner workflow", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 9.0, + "description": "the workflow includes agent based planning which classifies the query", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "ift inspired selector reasoner workflow", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "the workflow uses the selector to narrow the search to a precise information patch", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "ift inspired selector reasoner workflow", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "the workflow uses the reasoner for analysis after the selector", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "9 87", + "relation_name": "", + "weight": 8.0, + "description": "the skyline ranker process results in an average of 9 87 retained nodes on one dataset", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "6 86", + "relation_name": "", + "weight": 8.0, + "description": "the skyline ranker process results in an average of 6 86 retained nodes on another dataset", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "8 6", + "relation_name": "", + "weight": 8.0, + "description": "the skyline ranker process results in an average of 8 6 retained nodes on the third dataset", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "10", + "relation_name": "", + "weight": 7.0, + "description": "the number of retained nodes by skyline ranker is comparable to the standard top k setting where k 10", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval performance", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s retrieval performance is the subject of the validation described in the text", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 10.0, + "description": "bookrag s retrieval recall is the specific metric measured to demonstrate its performance", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "ground truth layout blocks", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is evaluated against ground truth layout blocks to validate its design", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "layout based baselines", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is evaluated against layout based baselines to demonstrate its superiority", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "ift inspired selector reasoner workflow", + "tgt_entity_name": "query", + "relation_name": "", + "weight": 8.0, + "description": "the workflow s agent based planning component classifies the query", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "information patch", + "relation_name": "", + "weight": 9.0, + "description": "the selector narrows the search to a precise information patch", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "candidate size", + "relation_name": "", + "weight": 8.0, + "description": "the skyline ranker process ensures high quality retrieval without inflating the candidate size", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "three datasets", + "relation_name": "", + "weight": 9.0, + "description": "the average number of retained nodes by skyline ranker is measured across three datasets", + "source_ids": [ + 157 + ] + }, + { + "src_entity_name": "skyline ranker", + "tgt_entity_name": "standard top k setting", + "relation_name": "", + "weight": 8.0, + "description": "the results of the skyline ranker process are compared to the standard top k setting", + "source_ids": [ + 157 + ] + } + ], + "node_idx": 157 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_158.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_158.json new file mode 100644 index 0000000..2efafbc --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_158.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "figure 5", + "entity_type": "IMAGE", + "description": "figure 5 is an image in the text that presents a comparison of query efficiency", + "source_ids": [ + 158 + ] + }, + { + "entity_name": "query efficiency", + "entity_type": "EVALUATION_METRIC", + "description": "query efficiency is a metric being compared in the text", + "source_ids": [ + 158 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 5", + "tgt_entity_name": "query efficiency", + "relation_name": "", + "weight": 9.0, + "description": "figure 5 displays a comparison of the query efficiency metric", + "source_ids": [ + 158 + ] + } + ], + "node_idx": 158 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_159.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_159.json new file mode 100644 index 0000000..bcd7443 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_159.json @@ -0,0 +1,357 @@ +{ + "entities": [ + { + "entity_name": "figure 5", + "entity_type": "IMAGE", + "description": "A figure comparing the query efficiency of various RAG (Retrieval-Augmented Generation) methods across three datasets, displaying Query Time and Token cost metrics.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "bm25", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A classical probabilistic ranking function used for information retrieval, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "vanilla rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The baseline Retrieval-Augmented Generation model without additional enhancements, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "layout + vanilla", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A variant of the vanilla RAG method that incorporates layout information, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "raptor", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Recursive Abstractive Processing for Tree-Organized Retrieval, a specific RAG approach listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "graphrag-local", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A local graph-based retrieval method, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "graphrag-global", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A global graph-based retrieval method, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "mm-vanilla", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A multi-modal vanilla RAG baseline, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "tree-traverse", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A tree-traversal based retrieval or processing method, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "graphranker", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A ranking method utilizing graph structures, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "docetl", + "entity_type": "SOFTWARE", + "description": "Document Extraction, Transformation, and Loading tool, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A RAG system specifically designed or optimized for book content, listed in the chart legend.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "The first dataset evaluated in the comparison, labeled under section (a).", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "m3docvqa", + "entity_type": "DATASET_OR_CORPUS", + "description": "The second dataset evaluated in the comparison, labeled under section (b).", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "The third dataset evaluated in the comparison, labeled under section (c).", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "query time", + "entity_type": "EVALUATION_METRIC", + "description": "A performance metric measuring the time taken to process a query, displayed on the x-axis of the left charts.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "token cost", + "entity_type": "EVALUATION_METRIC", + "description": "A performance metric measuring the number of tokens consumed, displayed on the x-axis of the right charts.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "time (s)", + "entity_type": "MEASUREMENT", + "description": "The unit of measurement for the y-axis in the Query Time charts, representing seconds.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "token (m)", + "entity_type": "MEASUREMENT", + "description": "The unit of measurement for the y-axis in the Token cost charts, representing millions of tokens.", + "source_ids": [ + 159 + ] + }, + { + "entity_name": "image cref='#/texts/161'", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 159 + ] + } + ], + "relations": [ + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "figure 5", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Figure 5", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "bm25", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to BM25", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "vanilla rag", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Vanilla RAG", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "layout + vanilla", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Layout + Vanilla", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "raptor", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to RAPTOR", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "graphrag-local", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to GraphRAG-Local", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "graphrag-global", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to GraphRAG-Global", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "mm-vanilla", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to MM-Vanilla", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "tree-traverse", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Tree-Traverse", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "graphranker", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to GraphRanker", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "docetl", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to DocETL", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to BookRAG", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to MMLongBench", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "m3docvqa", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to M3DocVQA", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Qasper", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "query time", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Query Time", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "token cost", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to Token cost", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "time (s)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to time (s)", + "source_ids": [ + 159 + ] + }, + { + "src_entity_name": "image cref='#/texts/161'", + "tgt_entity_name": "token (m)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/161' related to token (M)", + "source_ids": [ + 159 + ] + } + ], + "node_idx": 159 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_16.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_16.json new file mode 100644 index 0000000..51659fc --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_16.json @@ -0,0 +1,51 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a method or system being compared against representative methods in the text", + "source_ids": [ + 16 + ] + }, + { + "entity_name": "table 1", + "entity_type": "TABLE", + "description": "table 1 is the section containing the comparison of methods and bookrag", + "source_ids": [ + 16 + ] + }, + { + "entity_name": "representative methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "representative methods are the existing techniques being compared against bookrag in the text", + "source_ids": [ + 16 + ] + } + ], + "relations": [ + { + "src_entity_name": "table 1", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "table 1 contains the comparison data for bookrag", + "source_ids": [ + 16 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "representative methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is being compared to representative methods in the text", + "source_ids": [ + 16 + ] + } + ], + "node_idx": 16 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_160.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_160.json new file mode 100644 index 0000000..9b36e87 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_160.json @@ -0,0 +1,205 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a multi modal rag method evaluated for efficiency in terms of query time and token consumption", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "graph based rag methods", + "entity_type": "TECHNOLOGY", + "description": "graph based rag methods are existing methods used as a baseline for comparing bookrag s efficiency", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "text based rag approaches", + "entity_type": "TECHNOLOGY", + "description": "text based rag approaches are methods that generally exhibit lower latency and token usage due to the absence of vlm processing", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "vlm", + "entity_type": "TECHNOLOGY", + "description": "vlm refers to vision language models the processing component absent in purely text based rag approaches", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "docetl", + "entity_type": "PRODUCT", + "description": "docetl is a baseline method against which bookrag s token consumption and query latency are compared", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "mmlongbench is a dataset used to evaluate the token consumption of docetl and bookrag", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "figure 5", + "entity_type": "IMAGE", + "description": "figure 5 is a visual illustration showing the efficiency evaluation of bookrag in terms of query time and token consumption", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "53 million tokens", + "entity_type": "MEASUREMENT", + "description": "53 million tokens is the amount of token consumption recorded for docetl on the mmlongbench dataset", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "5 million", + "entity_type": "MEASUREMENT", + "description": "5 million is the upper limit of token consumption required by bookrag on the mmlongbench dataset", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "2", + "entity_type": "MEASUREMENT", + "description": "2 represents the speedup factor achieved by bookrag compared to docetl in query latency", + "source_ids": [ + 160 + ] + }, + { + "entity_name": "order of magnitude", + "entity_type": "MEASUREMENT", + "description": "order of magnitude describes the scale of reduction in token consumption by bookrag compared to docetl", + "source_ids": [ + 160 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "graph based rag methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag maintains time and token costs comparable to existing graph based rag methods", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "text based rag approaches", + "relation_name": "", + "weight": 7.0, + "description": "bookrag maintains a balanced efficiency among multi modal methods compared to text based approaches which have lower latency", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "vlm", + "relation_name": "", + "weight": 8.0, + "description": "bookrag involves vlm processing for images unlike purely text based rag approaches", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "docetl", + "relation_name": "", + "weight": 10.0, + "description": "bookrag reduces token consumption by an order of magnitude and achieves a speedup of up to 2x compared to docetl", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "docetl consumes over 53 million tokens on the mmlongbench dataset", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "bookrag requires less than 5 million tokens on the mmlongbench dataset", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "figure 5", + "relation_name": "", + "weight": 8.0, + "description": "figure 5 illustrates the efficiency evaluation of bookrag", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "53 million tokens", + "relation_name": "", + "weight": 10.0, + "description": "docetl consumes 53 million tokens on the mmlongbench dataset", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "5 million", + "relation_name": "", + "weight": 10.0, + "description": "bookrag requires less than 5 million tokens on the mmlongbench dataset", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "2", + "relation_name": "", + "weight": 10.0, + "description": "bookrag achieves a speedup of up to 2 compared to docetl", + "source_ids": [ + 160 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "order of magnitude", + "relation_name": "", + "weight": 9.0, + "description": "bookrag reduces token consumption by an order of magnitude compared to docetl", + "source_ids": [ + 160 + ] + } + ], + "node_idx": 160 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_161.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_161.json new file mode 100644 index 0000000..95802fe --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_161.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "10", + "entity_type": "MEASUREMENT", + "description": "10 is a numerical value mentioned in the text potentially representing a measurement or count", + "source_ids": [ + 161 + ] + } + ], + "relations": [], + "node_idx": 161 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_162.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_162.json new file mode 100644 index 0000000..fc33d96 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_162.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "6.3 detailed analysis", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experiments' within the BookRAG paper, this section provides an in-depth comparative analysis of the proposed method against strong baseline methods, specifically focusing on efficiency and accuracy metrics for document QA tasks.", + "source_ids": [ + 162 + ] + } + ], + "relations": [], + "node_idx": 162 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_163.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_163.json new file mode 100644 index 0000000..ae751a4 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_163.json @@ -0,0 +1,141 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system or product being examined in the text through an ablation study and experiments", + "source_ids": [ + 163 + ] + }, + { + "entity_name": "ablation study", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "ablation study is a method used to validate the contribution of each component of bookrag", + "source_ids": [ + 163 + ] + }, + { + "entity_name": "gradient based er", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "gradient based er is a method used in experiments to analyze its impact on qa performance", + "source_ids": [ + 163 + ] + }, + { + "entity_name": "qa performance", + "entity_type": "EVALUATION_METRIC", + "description": "qa performance is the metric being evaluated in the experiments across different query types", + "source_ids": [ + 163 + ] + }, + { + "entity_name": "entity resolution method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "entity resolution method is a technique compared for effectiveness in the text", + "source_ids": [ + 163 + ] + }, + { + "entity_name": "case study", + "entity_type": "TASK_OR_PROBLEM", + "description": "case study is a specific analysis presented in the text", + "source_ids": [ + 163 + ] + }, + { + "entity_name": "query types", + "entity_type": "TASK_OR_PROBLEM", + "description": "query types are the different categories of queries used to evaluate qa performance in the experiments", + "source_ids": [ + 163 + ] + }, + { + "entity_name": "error analysis", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "error analysis is a comprehensive method performed to examine the results of the study", + "source_ids": [ + 163 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "ablation study", + "relation_name": "", + "weight": 9.0, + "description": "an ablation study is conducted on bookrag to validate its components", + "source_ids": [ + 163 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "gradient based er", + "relation_name": "", + "weight": 8.0, + "description": "experiments on bookrag involve analyzing the impact of gradient based er", + "source_ids": [ + 163 + ] + }, + { + "src_entity_name": "gradient based er", + "tgt_entity_name": "qa performance", + "relation_name": "", + "weight": 9.0, + "description": "gradient based er is evaluated for its impact on qa performance", + "source_ids": [ + 163 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "entity resolution method", + "relation_name": "", + "weight": 8.0, + "description": "the effectiveness of the entity resolution method is compared in the context of bookrag", + "source_ids": [ + 163 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "case study", + "relation_name": "", + "weight": 7.0, + "description": "a case study is presented as part of the examination of bookrag", + "source_ids": [ + 163 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 8.0, + "description": "experiments on bookrag are conducted across different query types", + "source_ids": [ + 163 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "error analysis", + "relation_name": "", + "weight": 9.0, + "description": "a comprehensive error analysis is performed as part of the examination of bookrag", + "source_ids": [ + 163 + ] + } + ], + "node_idx": 163 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_164.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_164.json new file mode 100644 index 0000000..bb8f86e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_164.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "ablation study", + "entity_type": "TASK_OR_PROBLEM", + "description": "ablation study is a task designed to evaluate the contribution of core components in bookrag", + "source_ids": [ + 164 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a product or system whose core components are being evaluated through variants", + "source_ids": [ + 164 + ] + } + ], + "relations": [ + { + "src_entity_name": "ablation study", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "the ablation study is conducted to evaluate the core components of bookrag", + "source_ids": [ + 164 + ] + } + ], + "node_idx": 164 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_165.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_165.json new file mode 100644 index 0000000..f714ac1 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_165.json @@ -0,0 +1,79 @@ +{ + "entities": [ + { + "entity_name": "gradient er", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "gradient er is a gradient based entity resolution method mentioned in the text", + "source_ids": [ + 165 + ] + }, + { + "entity_name": "basic er", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "basic er is a method used to merge same name entities replacing gradient er in the described scenario", + "source_ids": [ + 165 + ] + }, + { + "entity_name": "w o gradient er", + "entity_type": "TASK_OR_PROBLEM", + "description": "w o gradient er is a scenario or condition described where the gradient based entity resolution is replaced", + "source_ids": [ + 165 + ] + }, + { + "entity_name": "same name entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "same name entities are the specific entities targeted for merging in the basic er process", + "source_ids": [ + 165 + ] + } + ], + "relations": [ + { + "src_entity_name": "gradient er", + "tgt_entity_name": "basic er", + "relation_name": "", + "weight": 10.0, + "description": "basic er replaces gradient er by merging same name entities", + "source_ids": [ + 165 + ] + }, + { + "src_entity_name": "w o gradient er", + "tgt_entity_name": "gradient er", + "relation_name": "", + "weight": 9.0, + "description": "the w o gradient er scenario involves the replacement of gradient er", + "source_ids": [ + 165 + ] + }, + { + "src_entity_name": "w o gradient er", + "tgt_entity_name": "basic er", + "relation_name": "", + "weight": 9.0, + "description": "the w o gradient er scenario involves the use of basic er as the replacement method", + "source_ids": [ + 165 + ] + }, + { + "src_entity_name": "basic er", + "tgt_entity_name": "same name entities", + "relation_name": "", + "weight": 10.0, + "description": "basic er is the method used to merge same name entities", + "source_ids": [ + 165 + ] + } + ], + "node_idx": 165 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_166.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_166.json new file mode 100644 index 0000000..d8884bb --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_166.json @@ -0,0 +1,49 @@ +{ + "entities": [ + { + "entity_name": "agent based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "agent based planning is a method that is removed in the scenario described leading to a default workflow", + "source_ids": [ + 166 + ] + }, + { + "entity_name": "static standard workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "static standard workflow is the default process used for all queries when agent based planning is removed", + "source_ids": [ + 166 + ] + }, + { + "entity_name": "planning", + "entity_type": "TASK_OR_PROBLEM", + "description": "planning is the specific task or problem component that is removed in the described scenario", + "source_ids": [ + 166 + ] + }, + { + "entity_name": "queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "queries are the inputs for which the workflow is applied either with or without planning", + "source_ids": [ + 166 + ] + } + ], + "relations": [ + { + "src_entity_name": "agent based planning", + "tgt_entity_name": "static standard workflow", + "relation_name": "", + "weight": 9.0, + "description": "removing agent based planning results in the system defaulting to a static standard workflow", + "source_ids": [ + 166 + ] + } + ], + "node_idx": 166 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_167.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_167.json new file mode 100644 index 0000000..418ab66 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_167.json @@ -0,0 +1,69 @@ +{ + "entities": [ + { + "entity_name": "selector", + "entity_type": "TECHNOLOGY", + "description": "selector is a component or operator mentioned in the context of removing it to force reasoners to score all candidate nodes", + "source_ids": [ + 167 + ] + }, + { + "entity_name": "reasoners", + "entity_type": "TECHNOLOGY", + "description": "reasoners are systems or components that score candidate nodes affected by the removal of selector operators", + "source_ids": [ + 167 + ] + }, + { + "entity_name": "candidate nodes", + "entity_type": "TASK_OR_PROBLEM", + "description": "candidate nodes are the items being scored by reasoners when the selector operators are removed", + "source_ids": [ + 167 + ] + }, + { + "entity_name": "selector operators", + "entity_type": "TECHNOLOGY", + "description": "selector operators are specific components that can be removed to alter the behavior of reasoners", + "source_ids": [ + 167 + ] + } + ], + "relations": [ + { + "src_entity_name": "selector", + "tgt_entity_name": "reasoners", + "relation_name": "", + "weight": 9.0, + "description": "the removal of selector operators forces reasoners to score all candidate nodes indicating a direct operational dependency", + "source_ids": [ + 167 + ] + }, + { + "src_entity_name": "selector operators", + "tgt_entity_name": "reasoners", + "relation_name": "", + "weight": 9.0, + "description": "removing selector operators directly changes how reasoners operate by forcing them to score all candidate nodes", + "source_ids": [ + 167 + ] + }, + { + "src_entity_name": "reasoners", + "tgt_entity_name": "candidate nodes", + "relation_name": "", + "weight": 8.0, + "description": "reasoners perform the action of scoring candidate nodes especially when selector operators are absent", + "source_ids": [ + 167 + ] + } + ], + "node_idx": 167 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_168.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_168.json new file mode 100644 index 0000000..f0b7b9f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_168.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "graph reasoning", + "entity_type": "TECHNOLOGY", + "description": "graph reasoning is an operator that when removed disables the skyline ranker", + "source_ids": [ + 168 + ] + }, + { + "entity_name": "skyline ranker", + "entity_type": "SOFTWARE", + "description": "skyline ranker is a component that is disabled when the graph reasoning operator is removed resulting in single dimensional scoring", + "source_ids": [ + 168 + ] + } + ], + "relations": [ + { + "src_entity_name": "graph reasoning", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 10.0, + "description": "the graph reasoning operator enables the skyline ranker removing it disables the skyline ranker", + "source_ids": [ + 168 + ] + } + ], + "node_idx": 168 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_169.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_169.json new file mode 100644 index 0000000..fc29d62 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_169.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "text reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "text reasoning is an operator that is removed in the described scenario", + "source_ids": [ + 169 + ] + }, + { + "entity_name": "skyline ranker", + "entity_type": "SOFTWARE", + "description": "skyline ranker is a component that is disabled when text reasoning is removed relying on graph based scores", + "source_ids": [ + 169 + ] + } + ], + "relations": [ + { + "src_entity_name": "text reasoning", + "tgt_entity_name": "skyline ranker", + "relation_name": "", + "weight": 9.0, + "description": "the removal of the text reasoning operator causes the skyline ranker to be disabled", + "source_ids": [ + 169 + ] + } + ], + "node_idx": 169 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_17.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_17.json new file mode 100644 index 0000000..0a9d5ff --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_17.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "table: cref='#/texts/17'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/17'", + "source_ids": [ + 17 + ] + }, + { + "entity_name": "texts reference", + "entity_type": "SECTION_TITLE", + "description": "A reference identifier pointing to a specific text location within a document structure, indicated by the cref attribute '#/texts/17'.", + "source_ids": [ + 17 + ] + } + ], + "relations": [ + { + "src_entity_name": "table: cref='#/texts/17'...", + "tgt_entity_name": "texts reference", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/17'...' contains data about 'Texts Reference'.", + "source_ids": [ + 17 + ] + } + ], + "node_idx": 17 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_170.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_170.json new file mode 100644 index 0000000..71519a0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_170.json @@ -0,0 +1,153 @@ +{ + "entities": [ + { + "entity_name": "table 7", + "entity_type": "TABLE", + "description": "table 7 is a table comparing the qa performance of different variants of bookrag", + "source_ids": [ + 170 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a product or system whose variants are being evaluated for qa performance", + "source_ids": [ + 170 + ] + }, + { + "entity_name": "em", + "entity_type": "EVALUATION_METRIC", + "description": "em stands for exact match an evaluation metric used to measure qa performance", + "source_ids": [ + 170 + ] + }, + { + "entity_name": "f1", + "entity_type": "EVALUATION_METRIC", + "description": "f1 denotes f1 score an evaluation metric used to measure qa performance", + "source_ids": [ + 170 + ] + }, + { + "entity_name": "qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "qa refers to question answering the specific task being evaluated in the text", + "source_ids": [ + 170 + ] + }, + { + "entity_name": "exact match", + "entity_type": "EVALUATION_METRIC", + "description": "exact match is the full name for the metric abbreviated as em", + "source_ids": [ + 170 + ] + }, + { + "entity_name": "f1 score", + "entity_type": "EVALUATION_METRIC", + "description": "f1 score is the full name for the metric abbreviated as f1", + "source_ids": [ + 170 + ] + } + ], + "relations": [ + { + "src_entity_name": "table 7", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "table 7 compares the performance of different variants of bookrag", + "source_ids": [ + 170 + ] + }, + { + "src_entity_name": "table 7", + "tgt_entity_name": "em", + "relation_name": "", + "weight": 9.0, + "description": "table 7 uses em exact match as a metric to evaluate qa performance", + "source_ids": [ + 170 + ] + }, + { + "src_entity_name": "table 7", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 9.0, + "description": "table 7 uses f1 f1 score as a metric to evaluate qa performance", + "source_ids": [ + 170 + ] + }, + { + "src_entity_name": "em", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 8.0, + "description": "em and f1 are both evaluation metrics used together to compare qa performance in table 7", + "source_ids": [ + 170 + ] + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "qa is the task performed by the different variants of bookrag being compared", + "source_ids": [ + 170 + ] + }, + { + "src_entity_name": "exact match", + "tgt_entity_name": "em", + "relation_name": "", + "weight": 10.0, + "description": "exact match is the definition of the abbreviation em", + "source_ids": [ + 170 + ] + }, + { + "src_entity_name": "f1 score", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 10.0, + "description": "f1 score is the definition of the abbreviation f1", + "source_ids": [ + 170 + ] + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "em", + "relation_name": "", + "weight": 9.0, + "description": "em is used to measure the performance of the qa task", + "source_ids": [ + 170 + ] + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 9.0, + "description": "f1 is used to measure the performance of the qa task", + "source_ids": [ + 170 + ] + } + ], + "node_idx": 170 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_171.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_171.json new file mode 100644 index 0000000..86d3a0b --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_171.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "table: cref='#/texts/220'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/220'", + "source_ids": [ + 171 + ] + }, + { + "entity_name": "cref", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A reference identifier or cross-reference key found in the description text, pointing to a specific text location ('#/texts/220').", + "source_ids": [ + 171 + ] + } + ], + "relations": [ + { + "src_entity_name": "table: cref='#/texts/220'...", + "tgt_entity_name": "cref", + "relation_name": "", + "weight": 9.0, + "description": "Table 'Table: cref='#/texts/220'...' contains data about 'cref'.", + "source_ids": [ + 171 + ] + } + ], + "node_idx": 171 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_172.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_172.json new file mode 100644 index 0000000..6a47436 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_172.json @@ -0,0 +1,293 @@ +{ + "entities": [ + { + "entity_name": "kg", + "entity_type": "DATASET_OR_CORPUS", + "description": "kg refers to a knowledge graph used to support effective reasoning in the bookrag system", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "agent based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "agent based planning is a mechanism assessed for its necessity in the system s performance", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "ift inspired selection mechanism", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "ift inspired selection mechanism is a strategy evaluated for its role in the system s efficiency", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "multi dimensional reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "multi dimensional reasoning is a strategy validated for its effectiveness in the system", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "dynamic skyline filtering strategy", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "dynamic skyline filtering strategy is a method validated for its effectiveness in the system", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "table 7", + "entity_type": "TABLE", + "description": "table 7 is a reference in the text showing performance degradation across variants", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is the system being evaluated in the text", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "w o gradient er variant", + "entity_type": "TASK_OR_PROBLEM", + "description": "the w o gradient er variant is a specific configuration used to test the role of the knowledge graph", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "planning mechanism", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the planning mechanism is a component whose removal causes significant performance loss", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "w o selector variant", + "entity_type": "TASK_OR_PROBLEM", + "description": "the w o selector variant is a configuration used to validate the efficiency of the selection strategy", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "qasper is a dataset used to measure computational cost in tokens", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "tokens", + "entity_type": "MEASUREMENT", + "description": "tokens are the unit of measurement used to quantify computational cost", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "gradient er", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "gradient er is a specific component or technique whose removal in the w o variant highlights the role of the knowledge graph", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "selector", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the selector is a component whose removal in the w o variant validates the efficiency of the selection strategy", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "narrow then reason strategy", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the narrow then reason strategy is the specific approach inspired by ift that is being validated for efficiency", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "static workflow", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "a static workflow is described as insufficient for handling diverse types of queries contrasting with the dynamic approach", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "queries are the diverse types of tasks that the system is designed to handle", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "retrieval performance", + "entity_type": "EVALUATION_METRIC", + "description": "retrieval performance is the metric used to evaluate the impact of kg quality", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "accuracy is a metric maintained by the w o selector variant despite high computational costs", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "computational cost", + "entity_type": "MEASUREMENT", + "description": "computational cost is a metric measured in tokens to evaluate the efficiency of the variants", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "performance degradation", + "entity_type": "EVALUATION_METRIC", + "description": "performance degradation is the observed outcome across all variants confirming the essential role of each module", + "source_ids": [ + 172 + ] + }, + { + "entity_name": "performance loss", + "entity_type": "EVALUATION_METRIC", + "description": "performance loss is the significant drop observed when the planning mechanism is removed", + "source_ids": [ + 172 + ] + } + ], + "relations": [ + { + "src_entity_name": "kg", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "the kg is a critical component within the bookrag system supporting effective reasoning", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "agent based planning", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 8.0, + "description": "agent based planning is a mechanism assessed for its necessity within the bookrag system", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "ift inspired selection mechanism", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 8.0, + "description": "the ift inspired selection mechanism is a strategy evaluated for its efficiency in the bookrag system", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "multi dimensional reasoning", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 8.0, + "description": "multi dimensional reasoning is a strategy validated for its effectiveness in the bookrag system", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "dynamic skyline filtering strategy", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 8.0, + "description": "the dynamic skyline filtering strategy is a method validated for its effectiveness in the bookrag system", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "table 7", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 7.0, + "description": "table 7 presents data regarding the performance of the bookrag system variants", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "w o gradient er variant", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "the w o gradient er variant highlights the critical role of the kg in the system", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "planning mechanism", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "the planning mechanism is a component of bookrag whose removal causes significant performance loss", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "w o selector variant", + "tgt_entity_name": "ift inspired selection mechanism", + "relation_name": "", + "weight": 8.0, + "description": "the w o selector variant validates the efficiency of the ift inspired selection mechanism", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "w o selector variant", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 7.0, + "description": "the w o selector variant incurs a computational cost measured in tokens on the qasper dataset", + "source_ids": [ + 172 + ] + }, + { + "src_entity_name": "ift inspired selection mechanism", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 7.0, + "description": "the ift inspired selection mechanism s efficiency is validated using the qasper dataset", + "source_ids": [ + 172 + ] + } + ], + "node_idx": 172 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_173.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_173.json new file mode 100644 index 0000000..1994f68 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_173.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "11", + "entity_type": "NUMBER", + "description": "11 is a number mentioned in the text though its specific context or role is not defined", + "source_ids": [ + 173 + ] + } + ], + "relations": [], + "node_idx": 173 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_174.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_174.json new file mode 100644 index 0000000..6ca9470 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_174.json @@ -0,0 +1,115 @@ +{ + "entities": [ + { + "entity_name": "figure 6", + "entity_type": "IMAGE", + "description": "figure 6 is an image comparing graph statistics with values normalized to a basic setting", + "source_ids": [ + 174 + ] + }, + { + "entity_name": "basic setting", + "entity_type": "TASK_OR_PROBLEM", + "description": "the basic setting serves as the baseline 1 0 for normalizing graph statistics values", + "source_ids": [ + 174 + ] + }, + { + "entity_name": "3 6e 3", + "entity_type": "MEASUREMENT", + "description": "3 6e 3 is an abbreviated density value representing 3 6 10 3", + "source_ids": [ + 174 + ] + }, + { + "entity_name": "graph statistics", + "entity_type": "TASK_OR_PROBLEM", + "description": "graph statistics are the subject of comparison in figure 6", + "source_ids": [ + 174 + ] + }, + { + "entity_name": "absolute values", + "entity_type": "MEASUREMENT", + "description": "absolute values for the basic setting are annotated in the text", + "source_ids": [ + 174 + ] + }, + { + "entity_name": "density values", + "entity_type": "MEASUREMENT", + "description": "density values are a specific type of metric mentioned that are abbreviated in the text", + "source_ids": [ + 174 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 6", + "tgt_entity_name": "basic setting", + "relation_name": "", + "weight": 9.0, + "description": "figure 6 compares graph statistics by normalizing values to the basic setting", + "source_ids": [ + 174 + ] + }, + { + "src_entity_name": "figure 6", + "tgt_entity_name": "3 6e 3", + "relation_name": "", + "weight": 8.0, + "description": "figure 6 contains the density value 3 6e 3 as an example of abbreviated notation", + "source_ids": [ + 174 + ] + }, + { + "src_entity_name": "figure 6", + "tgt_entity_name": "graph statistics", + "relation_name": "", + "weight": 10.0, + "description": "figure 6 is a comparison of graph statistics", + "source_ids": [ + 174 + ] + }, + { + "src_entity_name": "figure 6", + "tgt_entity_name": "absolute values", + "relation_name": "", + "weight": 8.0, + "description": "figure 6 includes annotations of absolute values for the basic setting", + "source_ids": [ + 174 + ] + }, + { + "src_entity_name": "figure 6", + "tgt_entity_name": "density values", + "relation_name": "", + "weight": 9.0, + "description": "figure 6 illustrates how density values are abbreviated using 3 6e 3 as an example", + "source_ids": [ + 174 + ] + }, + { + "src_entity_name": "basic setting", + "tgt_entity_name": "absolute values", + "relation_name": "", + "weight": 7.0, + "description": "absolute values are specifically annotated for the basic setting", + "source_ids": [ + 174 + ] + } + ], + "node_idx": 174 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_175.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_175.json new file mode 100644 index 0000000..71448ca --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_175.json @@ -0,0 +1,357 @@ +{ + "entities": [ + { + "entity_name": "cref='#/texts/224'", + "entity_type": "IMAGE", + "description": "A figure containing two bar charts comparing 'Basic' and 'Gradient-based ER' performance metrics across '# Entity', 'Density', 'Diameter', and '# CC' for MMLongBench and Qasper datasets.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "basic", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The baseline method represented by blue bars in the legend, used as a comparison point against the Gradient-based ER approach.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "gradient-based er", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The proposed or specific method represented by red bars in the legend, evaluated on various metrics against the Basic model.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "ratio", + "entity_type": "EVALUATION_METRIC", + "description": "The Y-axis label indicating the metric being measured, representing the ratio of performance between the compared methods.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "# entity", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A metric measuring the number of entities, shown as the first category of bars in both charts.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "density", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A metric measuring graph density, showing significant variation between the Basic and Gradient-based ER methods.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "diameter", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A metric measuring the longest shortest path in the graph, presented as the third category of bars.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "# cc", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A metric likely representing the number of Connected Components, shown as the fourth category of bars.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "The dataset or benchmark used for the evaluation in chart (a), located at the bottom left.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "The dataset or benchmark used for the evaluation in chart (b), located at the bottom right.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "figure (a)", + "entity_type": "SECTION_TITLE", + "description": "The label identifying the left-hand chart which displays results for the MMLongBench dataset.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "figure (b)", + "entity_type": "SECTION_TITLE", + "description": "The label identifying the right-hand chart which displays results for the Qasper dataset.", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "1327", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the '# Entity' bar for the Basic method in chart (a).", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "3.6e-3", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the 'Density' bar for the Basic method in chart (a).", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "14.8", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the 'Diameter' bar for the Basic method in chart (a).", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "169", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the '# CC' bar for the Basic method in chart (a).", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "531", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the '# Entity' bar for the Basic method in chart (b).", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "5.4e-3", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the 'Density' bar for the Basic method in chart (b).", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "15.0", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the 'Diameter' bar for the Basic method in chart (b).", + "source_ids": [ + 175 + ] + }, + { + "entity_name": "106", + "entity_type": "MEASUREMENT", + "description": "A numerical value annotation above the '# CC' bar for the Basic method in chart (b).", + "source_ids": [ + 175 + ] + } + ], + "relations": [ + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "basic", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Basic", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "gradient-based er", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Gradient-based ER", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "ratio", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Ratio", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "# entity", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to # Entity", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "density", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Density", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "diameter", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Diameter", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "# cc", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to # CC", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to MMLongBench", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Qasper", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "figure (a)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Figure (a)", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "figure (b)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to Figure (b)", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "1327", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 1327", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "3.6e-3", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 3.6E-3", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "14.8", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 14.8", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "169", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 169", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "531", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 531", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "5.4e-3", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 5.4e-3", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "15.0", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 15.0", + "source_ids": [ + 175 + ] + }, + { + "src_entity_name": "cref='#/texts/224'", + "tgt_entity_name": "106", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/224' related to 106", + "source_ids": [ + 175 + ] + } + ], + "node_idx": 175 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_176.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_176.json new file mode 100644 index 0000000..6d0e38a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_176.json @@ -0,0 +1,249 @@ +{ + "entities": [ + { + "entity_name": "gradient based entity resolution", + "entity_type": "TASK_OR_PROBLEM", + "description": "gradient based entity resolution is a method used to evaluate the quality of a constructed knowledge graph kg", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "basic kg construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "basic kg construction is a standard practice using simple exact name matching for entity merging", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "figure 6", + "entity_type": "IMAGE", + "description": "figure 6 presents the comparative results of the evaluation between the two methods", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "entity count", + "entity_type": "EVALUATION_METRIC", + "description": "entity count is a metric used to measure the number of entities in the graph", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "density", + "entity_type": "EVALUATION_METRIC", + "description": "density is a metric used to measure the connectivity of the graph", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "diameter of the largest connected component", + "entity_type": "EVALUATION_METRIC", + "description": "diameter of the largest connected component is a metric measuring the longest shortest path in the largest connected part of the graph", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "number of connected components", + "entity_type": "EVALUATION_METRIC", + "description": "number of connected components is a metric counting the separate parts of the graph", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "basic baseline", + "entity_type": "BENCHMARK", + "description": "the basic baseline serves as the standard for comparison in the evaluation of the gradient based er method", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "er module", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the er module is the component responsible for identifying conceptual entities with different names", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "12", + "entity_type": "PERCENTAGE", + "description": "12 is the percentage reduction in the number of entities achieved by the gradient based er method", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "20", + "entity_type": "PERCENTAGE", + "description": "20 is the percentage increase in graph density achieved by the gradient based er method across datasets", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "many graph based methods", + "entity_type": "ORGANIZATION", + "description": "many graph based methods are a group of techniques that employ simple exact name matching for entity merging", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "datasets", + "entity_type": "DATASET_OR_CORPUS", + "description": "datasets are the collections of data used to evaluate the performance of the gradient based er method", + "source_ids": [ + 176 + ] + }, + { + "entity_name": "graph reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "graph reasoning is a task facilitated by the improved connectivity of the resulting graphs", + "source_ids": [ + 176 + ] + } + ], + "relations": [ + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "basic kg construction", + "relation_name": "", + "weight": 9.0, + "description": "gradient based entity resolution is compared against basic kg construction to evaluate quality", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "figure 6", + "relation_name": "", + "weight": 8.0, + "description": "figure 6 presents the results of the comparison involving gradient based entity resolution", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "entity count", + "relation_name": "", + "weight": 9.0, + "description": "gradient based entity resolution reduces the entity count by 12 compared to the baseline", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "density", + "relation_name": "", + "weight": 9.0, + "description": "gradient based entity resolution boosts graph density by over 20 across datasets", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "diameter of the largest connected component", + "relation_name": "", + "weight": 8.0, + "description": "gradient based entity resolution reduces the diameter of the largest connected component indicating a more compact graph", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "number of connected components", + "relation_name": "", + "weight": 8.0, + "description": "gradient based entity resolution reduces the number of connected components mitigating fragmentation", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "er module", + "relation_name": "", + "weight": 10.0, + "description": "the er module is the specific component of gradient based entity resolution that identifies entities", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "basic baseline", + "relation_name": "", + "weight": 9.0, + "description": "gradient based entity resolution is evaluated against the basic baseline to demonstrate optimization", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "12", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based er method achieves a 12 reduction in entity count", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "20", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based er method achieves a boost of over 20 in graph density", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "basic kg construction", + "tgt_entity_name": "many graph based methods", + "relation_name": "", + "weight": 9.0, + "description": "basic kg construction is standard practice in many graph based methods", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "datasets", + "relation_name": "", + "weight": 8.0, + "description": "the gradient based er method s performance is evaluated across multiple datasets", + "source_ids": [ + 176 + ] + }, + { + "src_entity_name": "gradient based entity resolution", + "tgt_entity_name": "graph reasoning", + "relation_name": "", + "weight": 9.0, + "description": "the structural improvements from gradient based entity resolution facilitate better graph reasoning", + "source_ids": [ + 176 + ] + } + ], + "node_idx": 176 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_177.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_177.json new file mode 100644 index 0000000..5a3a5f0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_177.json @@ -0,0 +1,301 @@ +{ + "entities": [ + { + "entity_name": "figure 7", + "entity_type": "IMAGE", + "description": "figure 7 is an image presenting a performance breakdown of qa by different query types", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "single hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "single hop is a type of query used in the qa performance breakdown", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "multi hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi hop is a type of query used in the qa performance breakdown", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "global", + "entity_type": "TASK_OR_PROBLEM", + "description": "global is a type of query used in the qa performance breakdown", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "exact match", + "entity_type": "EVALUATION_METRIC", + "description": "exact match is an evaluation metric represented by blue bars for mmlongbench", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "accuracy is an evaluation metric represented by blue bars for qasper", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "f1 score", + "entity_type": "EVALUATION_METRIC", + "description": "f1 score is an evaluation metric represented by red bars", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "mmlongbench is a dataset for which exact match performance is measured", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "qasper is a dataset for which accuracy performance is measured", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "qa refers to the question answering task being evaluated in the figure", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "query types", + "entity_type": "TASK_OR_PROBLEM", + "description": "query types refers to the categories of queries single hop multi hop and global analyzed in the text", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "blue bars", + "entity_type": "IMAGE", + "description": "blue bars represent the visual elements in the figure corresponding to exact match and accuracy metrics", + "source_ids": [ + 177 + ] + }, + { + "entity_name": "red bars", + "entity_type": "IMAGE", + "description": "red bars represent the visual elements in the figure corresponding to the f1 score metric", + "source_ids": [ + 177 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 7", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 displays the performance breakdown for the single hop query type", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "multi hop", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 displays the performance breakdown for the multi hop query type", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 displays the performance breakdown for the global query type", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 uses exact match as a metric represented by blue bars for mmlongbench", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 uses accuracy as a metric represented by blue bars for qasper", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "f1 score", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 uses f1 score as a metric represented by red bars", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "exact match", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "exact match is the specific metric used to evaluate performance on the mmlongbench dataset in the figure", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "accuracy", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "accuracy is the specific metric used to evaluate performance on the qasper dataset in the figure", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "multi hop", + "relation_name": "", + "weight": 5.0, + "description": "both are listed as distinct query types in the performance breakdown", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 5.0, + "description": "both are listed as distinct query types in the performance breakdown", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "multi hop", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 5.0, + "description": "both are listed as distinct query types in the performance breakdown", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "qa", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 presents the performance breakdown specifically for the qa task", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 9.0, + "description": "figure 7 breaks down performance by different query types", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "blue bars", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 contains blue bars to represent specific metrics", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "figure 7", + "tgt_entity_name": "red bars", + "relation_name": "", + "weight": 8.0, + "description": "figure 7 contains red bars to represent specific metrics", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "exact match", + "tgt_entity_name": "blue bars", + "relation_name": "", + "weight": 9.0, + "description": "exact match is visually represented by the blue bars in the figure", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "accuracy", + "tgt_entity_name": "blue bars", + "relation_name": "", + "weight": 9.0, + "description": "accuracy is visually represented by the blue bars in the figure", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "f1 score", + "tgt_entity_name": "red bars", + "relation_name": "", + "weight": 9.0, + "description": "f1 score is visually represented by the red bars in the figure", + "source_ids": [ + 177 + ] + }, + { + "src_entity_name": "qa", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 8.0, + "description": "the qa task performance is analyzed across different query types", + "source_ids": [ + 177 + ] + } + ], + "node_idx": 177 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_178.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_178.json new file mode 100644 index 0000000..39a94a1 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_178.json @@ -0,0 +1,159 @@ +{ + "entities": [ + { + "entity_name": "cref='#/texts/259'", + "entity_type": "IMAGE", + "description": "A figure containing two bar charts comparing EM/Accuracy and F1-score across Single, Multi, and Global configurations for MMLongBench and Qasper datasets.", + "source_ids": [ + 178 + ] + }, + { + "entity_name": "em / accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "Evaluation metric represented by blue bars in the chart, standing for Exact Match or Accuracy.", + "source_ids": [ + 178 + ] + }, + { + "entity_name": "f1-score", + "entity_type": "EVALUATION_METRIC", + "description": "Evaluation metric represented by red bars in the chart, representing the harmonic mean of precision and recall.", + "source_ids": [ + 178 + ] + }, + { + "entity_name": "score", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The Y-axis label indicating the numerical value being measured in both charts.", + "source_ids": [ + 178 + ] + }, + { + "entity_name": "single", + "entity_type": "TASK_OR_PROBLEM", + "description": "A configuration category on the X-axis representing a single-task or single-passage setting.", + "source_ids": [ + 178 + ] + }, + { + "entity_name": "multi", + "entity_type": "TASK_OR_PROBLEM", + "description": "A configuration category on the X-axis representing a multi-task or multi-passage setting.", + "source_ids": [ + 178 + ] + }, + { + "entity_name": "global", + "entity_type": "TASK_OR_PROBLEM", + "description": "A configuration category on the X-axis representing a global or holistic setting.", + "source_ids": [ + 178 + ] + }, + { + "entity_name": "(a) mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "The first dataset evaluated in the left chart, focusing on long-context benchmarks.", + "source_ids": [ + 178 + ] + }, + { + "entity_name": "(b) qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "The second dataset evaluated in the right chart, likely referring to the Question Answering in Scientific Papers with Reasoning dataset.", + "source_ids": [ + 178 + ] + } + ], + "relations": [ + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "em / accuracy", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to EM / Accuracy", + "source_ids": [ + 178 + ] + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "f1-score", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to F1-score", + "source_ids": [ + 178 + ] + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "score", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to Score", + "source_ids": [ + 178 + ] + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "single", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to Single", + "source_ids": [ + 178 + ] + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "multi", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to Multi", + "source_ids": [ + 178 + ] + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to Global", + "source_ids": [ + 178 + ] + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "(a) mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to (a) MMLongBench", + "source_ids": [ + 178 + ] + }, + { + "src_entity_name": "cref='#/texts/259'", + "tgt_entity_name": "(b) qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/259' related to (b) Qasper", + "source_ids": [ + 178 + ] + } + ], + "node_idx": 178 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_179.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_179.json new file mode 100644 index 0000000..ab198e3 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_179.json @@ -0,0 +1,225 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system whose performance is being evaluated across different query types", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "figure 7", + "entity_type": "IMAGE", + "description": "figure 7 is a visual representation that breaks down the performance of bookrag", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "single hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "single hop is a type of query used to evaluate the performance of bookrag", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "multihop", + "entity_type": "TASK_OR_PROBLEM", + "description": "multihop is a type of query that presents a greater challenge compared to single hop queries", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "global aggregation", + "entity_type": "TASK_OR_PROBLEM", + "description": "global aggregation is a type of query used to evaluate the performance of bookrag", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "agent based planning strategy", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the agent based planning strategy is a method used to handle different query types separately", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "qa performance", + "entity_type": "TASK_OR_PROBLEM", + "description": "qa performance refers to the quality of answers generated which is analyzed under different query types", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "query types", + "entity_type": "TASK_OR_PROBLEM", + "description": "query types are the categories of questions used to evaluate the system s performance", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "disjoint pieces of evidence", + "entity_type": "DATASET_OR_CORPUS", + "description": "disjoint pieces of evidence are the fragmented information sources that make reasoning difficult", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "retrieving", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "retrieving is the process of finding information identified as a challenge in the text", + "source_ids": [ + 179 + ] + }, + { + "entity_name": "reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "reasoning is the cognitive process of drawing conclusions identified as a challenge in the text", + "source_ids": [ + 179 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 7", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "figure 7 displays the performance breakdown of bookrag", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s performance is evaluated against single hop queries", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "multihop", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s performance is evaluated against multihop queries which present a greater challenge", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "global aggregation", + "relation_name": "", + "weight": 9.0, + "description": "bookrag s performance is evaluated against global aggregation queries", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "multihop", + "tgt_entity_name": "agent based planning strategy", + "relation_name": "", + "weight": 8.0, + "description": "the agent based planning strategy is validated by its ability to handle multihop queries", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "agent based planning strategy", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 8.0, + "description": "the agent based planning strategy handles single hop queries separately", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "agent based planning strategy", + "tgt_entity_name": "global aggregation", + "relation_name": "", + "weight": 8.0, + "description": "the agent based planning strategy handles global aggregation queries separately", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "qa performance", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 9.0, + "description": "qa performance is measured under different query types", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "qa performance", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "qa performance is the metric used to evaluate bookrag s capabilities", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "multihop", + "tgt_entity_name": "disjoint pieces of evidence", + "relation_name": "", + "weight": 9.0, + "description": "multihop queries are challenging because they require retrieving and reasoning over disjoint pieces of evidence", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "retrieving", + "tgt_entity_name": "disjoint pieces of evidence", + "relation_name": "", + "weight": 8.0, + "description": "retrieving is the action performed on disjoint pieces of evidence", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "reasoning", + "tgt_entity_name": "disjoint pieces of evidence", + "relation_name": "", + "weight": 8.0, + "description": "reasoning is the action performed on disjoint pieces of evidence", + "source_ids": [ + 179 + ] + }, + { + "src_entity_name": "agent based planning strategy", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 9.0, + "description": "the agent based planning strategy is designed to handle different query types separately", + "source_ids": [ + 179 + ] + } + ], + "node_idx": 179 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_18.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_18.json new file mode 100644 index 0000000..2195657 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_18.json @@ -0,0 +1,319 @@ +{ + "entities": [ + { + "entity_name": "layout aware segmentation", + "entity_type": "TASK_OR_PROBLEM", + "description": "layout aware segmentation is a paradigm that parses documents into structured blocks to preserve original layout and information", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "docetl", + "entity_type": "SOFTWARE", + "description": "docetl is a state of the art method providing a declarative interface for defining llm based processing pipelines", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "llm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "llm refers to large language models used in processing pipelines for analyzing retrieved blocks", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "multimodal retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "multimodal retrieval is a technique applied to obtain relevant content from blocks with multimodal characteristics", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "paragraphs", + "entity_type": "TASK_OR_PROBLEM", + "description": "paragraphs are structural blocks within a document preserved by layout aware segmentation", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "tables", + "entity_type": "TASK_OR_PROBLEM", + "description": "tables are structural blocks within a document preserved by layout aware segmentation", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "figures", + "entity_type": "TASK_OR_PROBLEM", + "description": "figures are structural blocks within a document preserved by layout aware segmentation", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "equations", + "entity_type": "TASK_OR_PROBLEM", + "description": "equations are structural blocks within a document preserved by layout aware segmentation", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "first paradigm", + "entity_type": "TASK_OR_PROBLEM", + "description": "the first paradigm is a method that uses fixed chunk sizes often leading to fragmented information", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "second paradigm", + "entity_type": "TASK_OR_PROBLEM", + "description": "the second paradigm refers to layout aware segmentation which preserves document structure", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "declarative interface", + "entity_type": "SOFTWARE", + "description": "the declarative interface is a feature provided by docetl that allows users to define processing pipelines", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "processing pipelines", + "entity_type": "TASK_OR_PROBLEM", + "description": "processing pipelines are sequences of operations defined by users to analyze retrieved blocks", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "llm based processing pipelines", + "entity_type": "TASK_OR_PROBLEM", + "description": "llm based processing pipelines are pipelines that utilize large language models for analysis", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "llm powered operations", + "entity_type": "TASK_OR_PROBLEM", + "description": "llm powered operations are the specific tasks combined within the processing pipelines", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "task specific optimizations", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "task specific optimizations are enhancements applied to the pipelines for specific tasks", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "fixed chunk size", + "entity_type": "MEASUREMENT", + "description": "fixed chunk size is a parameter used in the first paradigm that can cause information fragmentation", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "document native structural information", + "entity_type": "CONCEPT", + "description": "document native structural information is the data retained by layout aware segmentation", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "relevant content", + "entity_type": "CONCEPT", + "description": "relevant content is the information obtained through multimodal retrieval to answer queries", + "source_ids": [ + 18 + ] + }, + { + "entity_name": "queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "queries are the questions or requests for which relevant content is retrieved", + "source_ids": [ + 18 + ] + } + ], + "relations": [ + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "paragraphs", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation parses documents into paragraphs to preserve their structure", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "tables", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation parses documents into tables to preserve their structure", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "figures", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation parses documents into figures to preserve their structure", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "equations", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation parses documents into equations to preserve their structure", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "docetl uses llm powered operations to create processing pipelines", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "multimodal retrieval", + "relation_name": "", + "weight": 8.0, + "description": "multimodal retrieval is a typical approach applied to blocks generated by layout aware segmentation", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "layout aware segmentation", + "relation_name": "", + "weight": 9.0, + "description": "docetl is a state of the art method within the category of layout aware segmentation", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "second paradigm", + "tgt_entity_name": "layout aware segmentation", + "relation_name": "", + "weight": 10.0, + "description": "the second paradigm is identified as layout aware segmentation in the text", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "first paradigm", + "tgt_entity_name": "fixed chunk size", + "relation_name": "", + "weight": 9.0, + "description": "the first paradigm uses a fixed chunk size which leads to fragmented information", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "declarative interface", + "relation_name": "", + "weight": 10.0, + "description": "docetl provides a declarative interface for users", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "declarative interface", + "tgt_entity_name": "processing pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the declarative interface allows users to define processing pipelines", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "processing pipelines", + "tgt_entity_name": "llm powered operations", + "relation_name": "", + "weight": 9.0, + "description": "processing pipelines consist of llm powered operations", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "processing pipelines", + "tgt_entity_name": "task specific optimizations", + "relation_name": "", + "weight": 9.0, + "description": "processing pipelines include task specific optimizations", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "layout aware segmentation", + "tgt_entity_name": "document native structural information", + "relation_name": "", + "weight": 9.0, + "description": "layout aware segmentation retains document native structural information", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "multimodal retrieval", + "tgt_entity_name": "relevant content", + "relation_name": "", + "weight": 9.0, + "description": "multimodal retrieval is used to obtain relevant content", + "source_ids": [ + 18 + ] + }, + { + "src_entity_name": "multimodal retrieval", + "tgt_entity_name": "queries", + "relation_name": "", + "weight": 8.0, + "description": "multimodal retrieval is applied to answer queries", + "source_ids": [ + 18 + ] + } + ], + "node_idx": 18 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_180.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_180.json new file mode 100644 index 0000000..f7a27be --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_180.json @@ -0,0 +1,97 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system whose performance bottlenecks are being diagnosed through error analysis", + "source_ids": [ + 180 + ] + }, + { + "entity_name": "figure 9", + "entity_type": "IMAGE", + "description": "figure 9 is a visual representation showing the error propagation traced during the analysis", + "source_ids": [ + 180 + ] + }, + { + "entity_name": "error response analysis", + "entity_type": "TASK_OR_PROBLEM", + "description": "error response analysis is the specific task conducted to diagnose performance bottlenecks", + "source_ids": [ + 180 + ] + }, + { + "entity_name": "200 sampled queries", + "entity_type": "MEASUREMENT", + "description": "200 sampled queries refers to the quantity of queries from each dataset used for the analysis", + "source_ids": [ + 180 + ] + }, + { + "entity_name": "four types", + "entity_type": "MEASUREMENT", + "description": "four types refers to the number of categories into which failures are classified", + "source_ids": [ + 180 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "figure 9", + "relation_name": "", + "weight": 9.0, + "description": "figure 9 illustrates the error propagation traced while diagnosing the performance bottlenecks of bookrag", + "source_ids": [ + 180 + ] + }, + { + "src_entity_name": "error response analysis", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "error response analysis is performed on bookrag to diagnose its performance bottlenecks", + "source_ids": [ + 180 + ] + }, + { + "src_entity_name": "error response analysis", + "tgt_entity_name": "200 sampled queries", + "relation_name": "", + "weight": 9.0, + "description": "the analysis is conducted on 200 sampled queries from each dataset", + "source_ids": [ + 180 + ] + }, + { + "src_entity_name": "error response analysis", + "tgt_entity_name": "figure 9", + "relation_name": "", + "weight": 9.0, + "description": "the analysis traces error propagation as shown in figure 9", + "source_ids": [ + 180 + ] + }, + { + "src_entity_name": "error response analysis", + "tgt_entity_name": "four types", + "relation_name": "", + "weight": 8.0, + "description": "the analysis categorizes failures into four types", + "source_ids": [ + 180 + ] + } + ], + "node_idx": 180 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_181.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_181.json new file mode 100644 index 0000000..9c9285c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_181.json @@ -0,0 +1,169 @@ +{ + "entities": [ + { + "entity_name": "figure 8", + "entity_type": "IMAGE", + "description": "figure 8 is an image presenting a case study of responses across different query types", + "source_ids": [ + 181 + ] + }, + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "mmlongbench is a dataset or benchmark used to generate query types in the case study", + "source_ids": [ + 181 + ] + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "qasper is a dataset or benchmark used to generate query types in the case study", + "source_ids": [ + 181 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "SOFTWARE", + "description": "bookrag is a system or software that generated correct content highlighted in cyan text", + "source_ids": [ + 181 + ] + }, + { + "entity_name": "cyan text", + "entity_type": "COLOR", + "description": "cyan text refers to the color used to highlight correct content generated by bookrag in the figure", + "source_ids": [ + 181 + ] + }, + { + "entity_name": "gray text", + "entity_type": "COLOR", + "description": "gray text refers to the color used to describe the internal process in the figure", + "source_ids": [ + 181 + ] + }, + { + "entity_name": "case study", + "entity_type": "EVENT", + "description": "case study is the specific analysis of responses across different query types presented in the text", + "source_ids": [ + 181 + ] + }, + { + "entity_name": "query types", + "entity_type": "TASK_OR_PROBLEM", + "description": "query types are the different categories of questions used to evaluate the responses in the case study", + "source_ids": [ + 181 + ] + }, + { + "entity_name": "internal process", + "entity_type": "TASK_OR_PROBLEM", + "description": "internal process refers to the underlying mechanisms described in the gray text", + "source_ids": [ + 181 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 8", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "figure 8 presents a case study involving responses from mmlongbench", + "source_ids": [ + 181 + ] + }, + { + "src_entity_name": "figure 8", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "figure 8 presents a case study involving responses from qasper", + "source_ids": [ + 181 + ] + }, + { + "src_entity_name": "figure 8", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "figure 8 highlights content generated by bookrag", + "source_ids": [ + 181 + ] + }, + { + "src_entity_name": "cyan text", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "cyan text highlights the content generated by bookrag", + "source_ids": [ + 181 + ] + }, + { + "src_entity_name": "gray text", + "tgt_entity_name": "internal process", + "relation_name": "", + "weight": 10.0, + "description": "gray text describes the internal process", + "source_ids": [ + 181 + ] + }, + { + "src_entity_name": "case study", + "tgt_entity_name": "query types", + "relation_name": "", + "weight": 9.0, + "description": "the case study analyzes responses across different query types", + "source_ids": [ + 181 + ] + }, + { + "src_entity_name": "case study", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "the case study uses responses from mmlongbench", + "source_ids": [ + 181 + ] + }, + { + "src_entity_name": "case study", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "the case study uses responses from qasper", + "source_ids": [ + 181 + ] + }, + { + "src_entity_name": "figure 8", + "tgt_entity_name": "case study", + "relation_name": "", + "weight": 10.0, + "description": "figure 8 presents the case study", + "source_ids": [ + 181 + ] + } + ], + "node_idx": 181 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_182.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_182.json new file mode 100644 index 0000000..a58a727 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_182.json @@ -0,0 +1,447 @@ +{ + "entities": [ + { + "entity_name": "bookrag response of different query types", + "entity_type": "IMAGE", + "description": "A document illustrating BookRAG's responses to three distinct query types: Single-hop, Multi-hop, and Global Aggregation cases.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "single-hop case from qasper", + "entity_type": "SECTION_TITLE", + "description": "The title of the first section detailing a single-hop query example involving a reward model for reinforcement learning.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "The source dataset used for the single-hop and multi-hop case studies presented in the image.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "agent-based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A planning strategy described in the text where operators are selected to decompose or handle specific queries.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "select_by_entity operator", + "entity_type": "SOFTWARE", + "description": "An operator that identifies relevant sub-trees (e.g., Introduction, Related work) to prune the reasoning space.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "graph_reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "A reasoning step performed after the Select_by_Entity operator focuses on a specific scope.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "text_reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "A reasoning step involved in retrieving nodes for the final response.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "skyline_ranker", + "entity_type": "SOFTWARE", + "description": "An operator used to retrieve 8 nodes for the final response based on focused scope.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "binary reward system", + "entity_type": "TECHNOLOGY", + "description": "A system that evaluates the success or failure of dialog interactions with a discount factor.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "discount factor", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A variable used in the reward model calculation, specifically noted as 0.95 in the text.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "multi-hop case from qasper", + "entity_type": "SECTION_TITLE", + "description": "The title of the second section detailing a multi-hop query comparing interpretable systems and LSTM models.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "interpretable system", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "A system type compared against LSTM-ELMo, utilizing vectors and cosine distance.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "lstm with elmo system", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "A machine learning model mentioned in the comparison, achieving an accuracy of 0.6818.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "lstm-elmo net", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "Another reference to the Long Short-Term Memory network combined with ELMo embeddings.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "table 1", + "entity_type": "TABLE", + "description": "A table referenced in the text containing experimental results.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "diacritic swapping", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A method mentioned as showing remarkably poor performance in the context of the experiment.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "cross-entropy", + "entity_type": "EVALUATION_METRIC", + "description": "The loss measure used for the test results in the multi-hop query analysis.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "decompose operator", + "entity_type": "SOFTWARE", + "description": "An operator used in Agent-based Planning for multi-hop queries to break down the question.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "global aggregation case from mmlongbench", + "entity_type": "SECTION_TITLE", + "description": "The title of the third section detailing a global query about counting charts in a document.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "The benchmark or dataset used for the global aggregation case study.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "filter operators", + "entity_type": "SOFTWARE", + "description": "Operators applied to filter data based on specific criteria like page range or modality.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "filter_range", + "entity_type": "SOFTWARE", + "description": "A filter operator specifying a range of pages (e.g., '1-10') to search within.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "filter_modal", + "entity_type": "SOFTWARE", + "description": "A filter operator specifying the modality of content, such as 'image'.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "reduce", + "entity_type": "SOFTWARE", + "description": "A process step that synthesizes the final output after analyzing images.", + "source_ids": [ + 182 + ] + }, + { + "entity_name": "image cref='#/texts/282'", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 182 + ] + } + ], + "relations": [ + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "bookrag response of different query types", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to BookRAG response of different query types", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "single-hop case from qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Single-hop Case from Qasper", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Qasper", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "agent-based planning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Agent-based Planning", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "select_by_entity operator", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Select_by_Entity operator", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "graph_reasoning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Graph_Reasoning", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "text_reasoning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Text_Reasoning", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "skyline_ranker", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Skyline_Ranker", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "binary reward system", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to binary reward system", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "discount factor", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to discount factor", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "multi-hop case from qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Multi-hop Case from Qasper", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "interpretable system", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Interpretable system", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "lstm with elmo system", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to LSTM with ELMo system", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "lstm-elmo net", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to LSTM-ELMo net", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "table 1", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Table 1", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "diacritic swapping", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Diacritic swapping", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "cross-entropy", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to cross-entropy", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "decompose operator", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Decompose operator", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "global aggregation case from mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Global Aggregation Case from MMLongBench", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to MMLongBench", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "filter operators", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Filter operators", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "filter_range", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Filter_Range", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "filter_modal", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Filter_Modal", + "source_ids": [ + 182 + ] + }, + { + "src_entity_name": "image cref='#/texts/282'", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/282' related to Reduce", + "source_ids": [ + 182 + ] + } + ], + "node_idx": 182 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_183.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_183.json new file mode 100644 index 0000000..5c4674b --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_183.json @@ -0,0 +1,107 @@ +{ + "entities": [ + { + "entity_name": "figure 9", + "entity_type": "IMAGE", + "description": "figure 9 is an image presenting an error analysis on sampled queries", + "source_ids": [ + 183 + ] + }, + { + "entity_name": "mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "mmlongbench is a dataset from which 200 sampled queries were taken for error analysis", + "source_ids": [ + 183 + ] + }, + { + "entity_name": "qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "qasper is a dataset from which 200 sampled queries were taken for error analysis", + "source_ids": [ + 183 + ] + }, + { + "entity_name": "200", + "entity_type": "MEASUREMENT", + "description": "200 is the number of sampled queries used in the error analysis", + "source_ids": [ + 183 + ] + }, + { + "entity_name": "error analysis", + "entity_type": "TASK_OR_PROBLEM", + "description": "error analysis is the task being performed on the sampled queries from the datasets", + "source_ids": [ + 183 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 9", + "tgt_entity_name": "mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "figure 9 presents an error analysis on queries sampled from the mmlongbench dataset", + "source_ids": [ + 183 + ] + }, + { + "src_entity_name": "figure 9", + "tgt_entity_name": "qasper", + "relation_name": "", + "weight": 9.0, + "description": "figure 9 presents an error analysis on queries sampled from the qasper dataset", + "source_ids": [ + 183 + ] + }, + { + "src_entity_name": "figure 9", + "tgt_entity_name": "error analysis", + "relation_name": "", + "weight": 10.0, + "description": "figure 9 displays the results of the error analysis", + "source_ids": [ + 183 + ] + }, + { + "src_entity_name": "error analysis", + "tgt_entity_name": "200", + "relation_name": "", + "weight": 9.0, + "description": "the error analysis was conducted on 200 sampled queries", + "source_ids": [ + 183 + ] + }, + { + "src_entity_name": "mmlongbench", + "tgt_entity_name": "200", + "relation_name": "", + "weight": 8.0, + "description": "200 sampled queries were taken from the mmlongbench dataset", + "source_ids": [ + 183 + ] + }, + { + "src_entity_name": "qasper", + "tgt_entity_name": "200", + "relation_name": "", + "weight": 8.0, + "description": "200 sampled queries were taken from the qasper dataset", + "source_ids": [ + 183 + ] + } + ], + "node_idx": 183 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_184.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_184.json new file mode 100644 index 0000000..bc23369 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_184.json @@ -0,0 +1,285 @@ +{ + "entities": [ + { + "entity_name": "cref='#/texts/348'", + "entity_type": "IMAGE", + "description": "A figure containing two funnel diagrams comparing error analysis for the MMLongBench and Qasper datasets.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "(a) mmlongbench", + "entity_type": "DATASET_OR_CORPUS", + "description": "The left diagram illustrating the breakdown of query processing results for the MMLongBench dataset.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "(b) qasper", + "entity_type": "DATASET_OR_CORPUS", + "description": "The right diagram illustrating the breakdown of query processing results for the Qasper dataset.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "all queries (200)", + "entity_type": "MEASUREMENT", + "description": "The initial total number of queries processed in both the MMLongBench and Qasper experiments.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "successful parsing (194)", + "entity_type": "MEASUREMENT", + "description": "The count of queries that were successfully parsed within the MMLongBench experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "retrieval error (52)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to retrieval failures in the MMLongBench experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "generation error (36)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to generation failures in the MMLongBench experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "plan error (27)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to planning failures in the MMLongBench experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "parsing error (6)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to parsing failures in the MMLongBench experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "correct (79)", + "entity_type": "EVALUATION_METRIC", + "description": "The final count of correctly answered queries in the MMLongBench experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "successful parsing (193)", + "entity_type": "MEASUREMENT", + "description": "The count of queries that were successfully parsed within the Qasper experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "generation error (30)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to generation failures in the Qasper experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "retrieval error (26)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to retrieval failures in the Qasper experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "plan error (20)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to planning failures in the Qasper experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "parsing error (7)", + "entity_type": "TASK_OR_PROBLEM", + "description": "The count of errors attributed to parsing failures in the Qasper experiment.", + "source_ids": [ + 184 + ] + }, + { + "entity_name": "correct (117)", + "entity_type": "EVALUATION_METRIC", + "description": "The final count of correctly answered queries in the Qasper experiment.", + "source_ids": [ + 184 + ] + } + ], + "relations": [ + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "(a) mmlongbench", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to (a) MMLongBench", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "(b) qasper", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to (b) Qasper", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "all queries (200)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to All Queries (200)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "successful parsing (194)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Successful Parsing (194)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "retrieval error (52)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Retrieval Error (52)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "generation error (36)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Generation Error (36)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "plan error (27)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Plan Error (27)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "parsing error (6)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Parsing Error (6)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "correct (79)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Correct (79)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "successful parsing (193)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Successful Parsing (193)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "generation error (30)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Generation Error (30)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "retrieval error (26)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Retrieval Error (26)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "plan error (20)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Plan Error (20)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "parsing error (7)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Parsing Error (7)", + "source_ids": [ + 184 + ] + }, + { + "src_entity_name": "cref='#/texts/348'", + "tgt_entity_name": "correct (117)", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/348' related to Correct (117)", + "source_ids": [ + 184 + ] + } + ], + "node_idx": 184 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_185.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_185.json new file mode 100644 index 0000000..042e0b4 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_185.json @@ -0,0 +1,331 @@ +{ + "entities": [ + { + "entity_name": "pdf parsing", + "entity_type": "TASK_OR_PROBLEM", + "description": "pdf parsing is identified as a task or problem area within the context of the study", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "plan refers to the planning aspect of the process where errors are analyzed", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval is a task or problem area where errors are identified as the dominant failure mode", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation is a task or problem area where errors are identified as the second most common failure mode", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "retrieval error", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval error is the dominant failure mode identified in the results", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "generation error", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation error is the second most common failure mode identified in the results", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "plan error", + "entity_type": "TASK_OR_PROBLEM", + "description": "plan error is a specific failure pattern where the planner over decomposes queries", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "multimodal evidence", + "entity_type": "TASK_OR_PROBLEM", + "description": "multimodal evidence is the type of information that is challenging to locate and synthesize", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "single hop queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "single hop queries are detailed queries that are incorrectly decomposed by the planner", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "multi hop sub tasks", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi hop sub tasks are unnecessary tasks created by the over decomposition of single hop queries", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "disjointed retrieval paths", + "entity_type": "TASK_OR_PROBLEM", + "description": "disjointed retrieval paths are the result of fragmentation preventing cohesive synthesis", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "cohesive final answer", + "entity_type": "TASK_OR_PROBLEM", + "description": "cohesive final answer is the desired outcome that is prevented by disjointed retrieval paths", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "model", + "entity_type": "TASK_OR_PROBLEM", + "description": "the model is the entity attempting to synthesize answers from sub responses", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "planner", + "entity_type": "TASK_OR_PROBLEM", + "description": "the planner is the component that tends to over decompose queries", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "qualitative analysis", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "qualitative analysis is the method used to reveal specific failure patterns", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "results", + "entity_type": "TASK_OR_PROBLEM", + "description": "the results are the findings that identify retrieval error as the dominant failure mode", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "fragmentation", + "entity_type": "TASK_OR_PROBLEM", + "description": "fragmentation is the process leading to disjointed retrieval paths", + "source_ids": [ + 185 + ] + }, + { + "entity_name": "scattered sub responses", + "entity_type": "TASK_OR_PROBLEM", + "description": "scattered sub responses are the outputs that fail to form a cohesive answer", + "source_ids": [ + 185 + ] + } + ], + "relations": [ + { + "src_entity_name": "retrieval error", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 10.0, + "description": "retrieval error is the dominant failure mode associated with the retrieval task", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "generation error", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 10.0, + "description": "generation error is the second most common failure mode associated with the generation task", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "plan error", + "tgt_entity_name": "plan", + "relation_name": "", + "weight": 10.0, + "description": "plan error is a specific failure pattern occurring within the plan task", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "retrieval error", + "tgt_entity_name": "multimodal evidence", + "relation_name": "", + "weight": 8.0, + "description": "retrieval error reflects the challenge of locating multimodal evidence", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "generation error", + "tgt_entity_name": "multimodal evidence", + "relation_name": "", + "weight": 8.0, + "description": "generation error reflects the challenge of synthesizing multimodal evidence", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "plan error", + "tgt_entity_name": "single hop queries", + "relation_name": "", + "weight": 9.0, + "description": "plan error involves the over decomposition of single hop queries", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "plan error", + "tgt_entity_name": "multi hop sub tasks", + "relation_name": "", + "weight": 9.0, + "description": "plan error leads to the creation of unnecessary multi hop sub tasks", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "plan error", + "tgt_entity_name": "disjointed retrieval paths", + "relation_name": "", + "weight": 9.0, + "description": "plan error causes fragmentation leading to disjointed retrieval paths", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "disjointed retrieval paths", + "tgt_entity_name": "cohesive final answer", + "relation_name": "", + "weight": 9.0, + "description": "disjointed retrieval paths prevent the model from synthesizing a cohesive final answer", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "planner", + "tgt_entity_name": "plan error", + "relation_name": "", + "weight": 10.0, + "description": "the planner is the agent responsible for the plan error failure pattern", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "planner", + "tgt_entity_name": "single hop queries", + "relation_name": "", + "weight": 9.0, + "description": "the planner acts upon single hop queries by over decomposing them", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "qualitative analysis", + "tgt_entity_name": "plan error", + "relation_name": "", + "weight": 9.0, + "description": "qualitative analysis reveals the specific failure pattern of plan error", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "results", + "tgt_entity_name": "retrieval error", + "relation_name": "", + "weight": 10.0, + "description": "the results identify retrieval error as the dominant failure mode", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "results", + "tgt_entity_name": "generation error", + "relation_name": "", + "weight": 10.0, + "description": "the results identify generation error as the second most common failure mode", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "fragmentation", + "tgt_entity_name": "disjointed retrieval paths", + "relation_name": "", + "weight": 9.0, + "description": "fragmentation leads directly to disjointed retrieval paths", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "model", + "tgt_entity_name": "cohesive final answer", + "relation_name": "", + "weight": 9.0, + "description": "the model attempts to synthesize a cohesive final answer but is prevented from doing so", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "model", + "tgt_entity_name": "scattered sub responses", + "relation_name": "", + "weight": 8.0, + "description": "the model receives scattered sub responses which it fails to synthesize", + "source_ids": [ + 185 + ] + }, + { + "src_entity_name": "retrieval error", + "tgt_entity_name": "generation error", + "relation_name": "", + "weight": 7.0, + "description": "retrieval error is the dominant failure mode followed by generation error", + "source_ids": [ + 185 + ] + } + ], + "node_idx": 185 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_186.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_186.json new file mode 100644 index 0000000..454021a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_186.json @@ -0,0 +1,225 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system that utilizes specific operators to answer queries and prune search spaces", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "figure 8", + "entity_type": "IMAGE", + "description": "figure 8 is an illustration depicting bookrag s answering workflow across different query types", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "single hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "single hop refers to a type of query case where the reasoning space is reduced from 134 to 24 nodes", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "multi hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi hop is a type of query case handled by bookrag s answering workflow", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "global queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "global queries are a type of query case processed by bookrag s answering workflow", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "select", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "select is a specific operator leveraged by bookrag to prune search spaces", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "decompose", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "decompose is a specific operator leveraged by bookrag to prune search spaces", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "filter", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "filter is a specific operator leveraged by bookrag to prune search spaces", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "134", + "entity_type": "MEASUREMENT", + "description": "134 represents the initial number of nodes in the reasoning space for the single hop case", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "24", + "entity_type": "MEASUREMENT", + "description": "24 represents the reduced number of nodes in the reasoning space for the single hop case", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "case study", + "entity_type": "TASK_OR_PROBLEM", + "description": "case study is the context or type of analysis being presented in the text", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "answering workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "answering workflow is the process illustrated by figure 8 that bookrag uses to handle queries", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "search spaces", + "entity_type": "TASK_OR_PROBLEM", + "description": "search spaces are the areas that bookrag prunes using specific operators to improve efficiency", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "relevant evidence", + "entity_type": "TASK_OR_PROBLEM", + "description": "relevant evidence is the specific information that bookrag isolates from noise", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "noise", + "entity_type": "TASK_OR_PROBLEM", + "description": "noise refers to irrelevant data from which bookrag isolates relevant evidence", + "source_ids": [ + 186 + ] + }, + { + "entity_name": "precise answer generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "precise answer generation is the outcome ensured by bookrag s ability to isolate relevant evidence", + "source_ids": [ + 186 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "figure 8", + "relation_name": "", + "weight": 10.0, + "description": "figure 8 illustrates the answering workflow of bookrag", + "source_ids": [ + 186 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "bookrag processes single hop queries reducing the reasoning space significantly", + "source_ids": [ + 186 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "multi hop", + "relation_name": "", + "weight": 9.0, + "description": "bookrag processes multi hop queries as part of its answering workflow", + "source_ids": [ + 186 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "global queries", + "relation_name": "", + "weight": 9.0, + "description": "bookrag processes global queries as part of its answering workflow", + "source_ids": [ + 186 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "select", + "relation_name": "", + "weight": 10.0, + "description": "bookrag leverages the select operator to prune search spaces", + "source_ids": [ + 186 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "decompose", + "relation_name": "", + "weight": 10.0, + "description": "bookrag leverages the decompose operator to prune search spaces", + "source_ids": [ + 186 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "filter", + "relation_name": "", + "weight": 10.0, + "description": "bookrag leverages the filter operator to prune search spaces", + "source_ids": [ + 186 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "134", + "relation_name": "", + "weight": 8.0, + "description": "the single hop case starts with a reasoning space of 134 nodes", + "source_ids": [ + 186 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "24", + "relation_name": "", + "weight": 8.0, + "description": "the single hop case reduces the reasoning space to 24 nodes", + "source_ids": [ + 186 + ] + } + ], + "node_idx": 186 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_187.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_187.json new file mode 100644 index 0000000..85bf648 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_187.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "7 conclusion", + "entity_type": "SECTION_TITLE", + "description": "As the final substantive section of the paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section summarizes the key contributions, specifically the BookRAG framework and BookIndex structure, and highlights the state-of-the-art performance achieved in retrieval recall and QA accuracy.", + "source_ids": [ + 187 + ] + } + ], + "relations": [], + "node_idx": 187 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_188.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_188.json new file mode 100644 index 0000000..9df72b1 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_188.json @@ -0,0 +1,277 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a novel method proposed in the paper built upon book index", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "book index", + "entity_type": "PRODUCT", + "description": "book index is a document native structured tree graph index designed to capture intricate relations of structural documents", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "agent based method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "an agent based method is employed to dynamically configure retrieval and reasoning operators", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "retrieval precision", + "entity_type": "EVALUATION_METRIC", + "description": "retrieval precision is a metric where the proposed approach demonstrates significant superiority over existing baselines", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "answer accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "answer accuracy is a metric where the proposed approach demonstrates significant superiority over existing baselines", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "benchmarks", + "entity_type": "BENCHMARK", + "description": "benchmarks are multiple tests on which the approach achieves state of the art performance", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "document native database system", + "entity_type": "PRODUCT", + "description": "a document native database system is a future exploration goal that supports data formatting knowledge extraction and intelligent querying", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "paper", + "entity_type": "PUBLICATION_VENUE", + "description": "the paper is the document in which the bookrag method is proposed", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "tree graph index", + "entity_type": "TECHNOLOGY", + "description": "the tree graph index is the specific structure of the book index document native system", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "retrieval operators", + "entity_type": "SOFTWARE", + "description": "retrieval operators are components dynamically configured by the agent based method", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "reasoning operators", + "entity_type": "SOFTWARE", + "description": "reasoning operators are components dynamically configured by the agent based method", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "existing baselines", + "entity_type": "PRODUCT", + "description": "existing baselines are the current methods that bookrag outperforms in performance", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "data formatting", + "entity_type": "TASK_OR_PROBLEM", + "description": "data formatting is a capability supported by the future document native database system", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "knowledge extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "knowledge extraction is a capability supported by the future document native database system", + "source_ids": [ + 188 + ] + }, + { + "entity_name": "intelligent querying", + "entity_type": "TASK_OR_PROBLEM", + "description": "intelligent querying is a capability supported by the future document native database system", + "source_ids": [ + 188 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "book index", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is built upon book index", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based method", + "relation_name": "", + "weight": 9.0, + "description": "bookrag employs an agent based method to configure operators", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "benchmarks", + "relation_name": "", + "weight": 9.0, + "description": "bookrag achieves state of the art performance on multiple benchmarks", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval precision", + "relation_name": "", + "weight": 8.0, + "description": "bookrag demonstrates significant superiority in retrieval precision over existing baselines", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "answer accuracy", + "relation_name": "", + "weight": 8.0, + "description": "bookrag demonstrates significant superiority in answer accuracy over existing baselines", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "agent based method", + "tgt_entity_name": "retrieval precision", + "relation_name": "", + "weight": 6.0, + "description": "the agent based method is used to configure operators that affect retrieval precision", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "agent based method", + "tgt_entity_name": "answer accuracy", + "relation_name": "", + "weight": 6.0, + "description": "the agent based method is used to configure operators that affect answer accuracy", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "paper", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is proposed within the paper", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "book index", + "tgt_entity_name": "tree graph index", + "relation_name": "", + "weight": 9.0, + "description": "book index is specifically a structured tree graph index", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "agent based method", + "tgt_entity_name": "retrieval operators", + "relation_name": "", + "weight": 9.0, + "description": "the agent based method dynamically configures retrieval operators", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "agent based method", + "tgt_entity_name": "reasoning operators", + "relation_name": "", + "weight": 9.0, + "description": "the agent based method dynamically configures reasoning operators", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "existing baselines", + "relation_name": "", + "weight": 9.0, + "description": "bookrag demonstrates significant superiority over existing baselines", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "document native database system", + "tgt_entity_name": "data formatting", + "relation_name": "", + "weight": 8.0, + "description": "the future database system supports data formatting", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "document native database system", + "tgt_entity_name": "knowledge extraction", + "relation_name": "", + "weight": 8.0, + "description": "the future database system supports knowledge extraction", + "source_ids": [ + 188 + ] + }, + { + "src_entity_name": "document native database system", + "tgt_entity_name": "intelligent querying", + "relation_name": "", + "weight": 8.0, + "description": "the future database system supports intelligent querying", + "source_ids": [ + 188 + ] + } + ], + "node_idx": 188 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_189.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_189.json new file mode 100644 index 0000000..c3a5b00 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_189.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "12", + "entity_type": "MEASUREMENT", + "description": "12 is a numerical value mentioned in the text potentially representing a count or measurement", + "source_ids": [ + 189 + ] + } + ], + "relations": [], + "node_idx": 189 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_19.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_19.json new file mode 100644 index 0000000..747f169 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_19.json @@ -0,0 +1,329 @@ +{ + "entities": [ + { + "entity_name": "l1", + "entity_type": "TASK_OR_PROBLEM", + "description": "l1 is a limitation of existing works described as the failure to capture the deep connection of document structure and semantics", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "l2", + "entity_type": "TASK_OR_PROBLEM", + "description": "l2 is a limitation of existing works described as the static nature of query workflows", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "text based approaches", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "text based approaches are methods that cannot capture the structural layout of the document", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "layout segmented methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "layout segmented methods are approaches that preserve document structure but fail to capture relationships between different blocks", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "real world qa scenarios", + "entity_type": "EVENT", + "description": "real world qa scenarios are contexts where user queries are highly heterogeneous", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "static or manually predefined workflows", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "static or manually predefined workflows are uniform strategies applied to diverse query needs", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "question decomposition", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "question decomposition is a method required for complex queries", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "document", + "entity_type": "PRODUCT", + "description": "document is the object whose structure and semantics are being analyzed in the text", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "tables", + "entity_type": "TABLE", + "description": "tables are examples of hierarchical blocks nested within a specific section of a document", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "section", + "entity_type": "SECTION_TITLE", + "description": "section is a part of a document where tables may be nested", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "user queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "user queries are inputs in real world qa scenarios that range from simple to complex", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "keyword lookups", + "entity_type": "TASK_OR_PROBLEM", + "description": "keyword lookups are simple types of user queries mentioned in the text", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "multi hop questions", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi hop questions are complex queries requiring evidence synthesis across different document parts", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "evidence", + "entity_type": "CONCEPT", + "description": "evidence refers to information scattered across different parts of a document needed for multi hop reasoning", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "hierarchical blocks", + "entity_type": "CONCEPT", + "description": "hierarchical blocks are structural elements of a document containing relationships", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "multi hop reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi hop reasoning is the capability limited by methods that cannot capture relationships between document blocks", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "overall performance", + "entity_type": "EVALUATION_METRIC", + "description": "overall performance is the metric affected by the limitations of existing methods", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "complex queries", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 19 + ] + }, + { + "entity_name": "simple queries", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 19 + ] + } + ], + "relations": [ + { + "src_entity_name": "l1", + "tgt_entity_name": "text based approaches", + "relation_name": "", + "weight": 9.0, + "description": "l1 is caused by text based approaches failing to capture document structure", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "l2", + "tgt_entity_name": "static or manually predefined workflows", + "relation_name": "", + "weight": 9.0, + "description": "l2 is caused by the application of static or manually predefined workflows to diverse query needs", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "text based approaches", + "tgt_entity_name": "l1", + "relation_name": "", + "weight": 9.0, + "description": "text based approaches suffer from the limitation l1", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "layout segmented methods", + "tgt_entity_name": "l2", + "relation_name": "", + "weight": 8.0, + "description": "layout segmented methods contribute to the limitation l2 by failing to capture relationships between blocks", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "real world qa scenarios", + "tgt_entity_name": "static or manually predefined workflows", + "relation_name": "", + "weight": 8.0, + "description": "real world qa scenarios involve diverse queries that make static or manually predefined workflows inefficient", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "complex queries", + "tgt_entity_name": "question decomposition", + "relation_name": "", + "weight": 7.0, + "description": "complex queries often require question decomposition", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "l1", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "l1 concerns the failure to capture the deep connection of document structure and semantics", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "text based approaches", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "text based approaches analyze the document but fail to capture its structural layout", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "section", + "relation_name": "", + "weight": 9.0, + "description": "tables are nested within a specific section of the document", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "layout segmented methods", + "tgt_entity_name": "hierarchical blocks", + "relation_name": "", + "weight": 8.0, + "description": "layout segmented methods preserve hierarchical blocks but fail to capture relationships between them", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "layout segmented methods", + "tgt_entity_name": "multi hop reasoning", + "relation_name": "", + "weight": 8.0, + "description": "layout segmented methods limit the capability for multi hop reasoning across blocks", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "user queries", + "tgt_entity_name": "real world qa scenarios", + "relation_name": "", + "weight": 9.0, + "description": "user queries are the inputs found within real world qa scenarios", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "user queries", + "tgt_entity_name": "keyword lookups", + "relation_name": "", + "weight": 8.0, + "description": "keyword lookups are a type of user query mentioned in the text", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "user queries", + "tgt_entity_name": "multi hop questions", + "relation_name": "", + "weight": 8.0, + "description": "multi hop questions are a type of user query mentioned in the text", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "multi hop questions", + "tgt_entity_name": "evidence", + "relation_name": "", + "weight": 9.0, + "description": "multi hop questions require synthesizing evidence scattered across the document", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "static or manually predefined workflows", + "tgt_entity_name": "overall performance", + "relation_name": "", + "weight": 7.0, + "description": "applying static workflows to diverse needs affects the overall performance negatively", + "source_ids": [ + 19 + ] + }, + { + "src_entity_name": "simple queries", + "tgt_entity_name": "question decomposition", + "relation_name": "", + "weight": 7.0, + "description": "simple queries do not require question decomposition", + "source_ids": [ + 19 + ] + } + ], + "node_idx": 19 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_190.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_190.json new file mode 100644 index 0000000..64825ab --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_190.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "references", + "entity_type": "SECTION_TITLE", + "description": "As a top-level section following the main title 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section serves as the bibliography, listing all cited works and sources that support the research presented in the paper.", + "source_ids": [ + 190 + ] + } + ], + "relations": [], + "node_idx": 190 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_191.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_191.json new file mode 100644 index 0000000..0b90b1f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_191.json @@ -0,0 +1,463 @@ +{ + "entities": [ + { + "entity_name": "simran arora", + "entity_type": "PERSON", + "description": "simran arora is listed as one of the authors of the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "brandon yang", + "entity_type": "PERSON", + "description": "brandon yang is listed as one of the authors of the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "sabri eyuboglu", + "entity_type": "PERSON", + "description": "sabri eyuboglu is listed as one of the authors of the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "avanika narayan", + "entity_type": "PERSON", + "description": "avanika narayan is listed as one of the authors of the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "andrew hojel", + "entity_type": "PERSON", + "description": "andrew hojel is listed as one of the authors of the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "immanuel trummer", + "entity_type": "PERSON", + "description": "immanuel trummer is listed as one of the authors of the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "christopher r", + "entity_type": "PERSON", + "description": "christopher r is listed as one of the authors of the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "language models", + "entity_type": "TECHNOLOGY", + "description": "language models are the technology enabling the simple systems described in the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "heterogeneous data lakes", + "entity_type": "DATASET_OR_CORPUS", + "description": "heterogeneous data lakes are the type of data being structured by the systems in the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "proceedings of the vldb endowment", + "entity_type": "PUBLICATION_VENUE", + "description": "proceedings of the vldb endowment is the publication venue where the paper appeared", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "17", + "entity_type": "MEASUREMENT", + "description": "17 refers to the volume number of the publication", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "2", + "entity_type": "MEASUREMENT", + "description": "2 refers to the issue number of the publication", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "simple systems", + "entity_type": "PRODUCT", + "description": "simple systems are the systems generated by language models as described in the paper title", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "structured views", + "entity_type": "PRODUCT", + "description": "structured views are the output generated for heterogeneous data lakes in the paper", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "vldb endowment", + "entity_type": "ORGANIZATION", + "description": "vldb endowment is the organization associated with the publication venue", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "2023", + "entity_type": "DATE", + "description": "2023 is the year of publication mentioned in the citation", + "source_ids": [ + 191 + ] + }, + { + "entity_name": "92 105", + "entity_type": "MEASUREMENT", + "description": "92 105 represents the page range of the article", + "source_ids": [ + 191 + ] + } + ], + "relations": [ + { + "src_entity_name": "simran arora", + "tgt_entity_name": "brandon yang", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "sabri eyuboglu", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "avanika narayan", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "andrew hojel", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "sabri eyuboglu", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "avanika narayan", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "andrew hojel", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "brandon yang", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "sabri eyuboglu", + "tgt_entity_name": "avanika narayan", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "sabri eyuboglu", + "tgt_entity_name": "andrew hojel", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "sabri eyuboglu", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "sabri eyuboglu", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "avanika narayan", + "tgt_entity_name": "andrew hojel", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "avanika narayan", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "avanika narayan", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "andrew hojel", + "tgt_entity_name": "immanuel trummer", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "andrew hojel", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "immanuel trummer", + "tgt_entity_name": "christopher r", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of a paper published in 2023", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "language models", + "tgt_entity_name": "heterogeneous data lakes", + "relation_name": "", + "weight": 10.0, + "description": "language models enable the generation of structured views of heterogeneous data lakes", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "language models", + "tgt_entity_name": "simple systems", + "relation_name": "", + "weight": 10.0, + "description": "language models enable the creation of simple systems", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simple systems", + "tgt_entity_name": "structured views", + "relation_name": "", + "weight": 9.0, + "description": "simple systems are used for generating structured views", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simple systems", + "tgt_entity_name": "heterogeneous data lakes", + "relation_name": "", + "weight": 9.0, + "description": "simple systems generate views of heterogeneous data lakes", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "simple systems", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of the paper describing simple systems", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "structured views", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of the paper describing structured views", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "simran arora", + "tgt_entity_name": "heterogeneous data lakes", + "relation_name": "", + "weight": 8.0, + "description": "simran arora is an author of the paper describing heterogeneous data lakes", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "vldb endowment", + "relation_name": "", + "weight": 9.0, + "description": "proceedings of the vldb endowment is published by the vldb endowment organization", + "source_ids": [ + 191 + ] + }, + { + "src_entity_name": "2023", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "the proceedings of the vldb endowment volume 17 issue 2 was published in 2023", + "source_ids": [ + 191 + ] + } + ], + "node_idx": 191 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_192.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_192.json new file mode 100644 index 0000000..b61c31c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_192.json @@ -0,0 +1,231 @@ +{ + "entities": [ + { + "entity_name": "akari asai", + "entity_type": "PERSON", + "description": "akari asai is listed as an author of the paper titled self rag", + "source_ids": [ + 192 + ] + }, + { + "entity_name": "zeqiu wu", + "entity_type": "PERSON", + "description": "zeqiu wu is listed as an author of the paper titled self rag", + "source_ids": [ + 192 + ] + }, + { + "entity_name": "yizhong wang", + "entity_type": "PERSON", + "description": "yizhong wang is listed as an author of the paper titled self rag", + "source_ids": [ + 192 + ] + }, + { + "entity_name": "self rag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "self rag is a method for learning to retrieve generate and critique through self reflection", + "source_ids": [ + 192 + ] + }, + { + "entity_name": "international conference on learning representations", + "entity_type": "PUBLICATION_VENUE", + "description": "international conference on learning representations iclr is the venue where the paper was published", + "source_ids": [ + 192 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year the paper was published", + "source_ids": [ + 192 + ] + }, + { + "entity_name": "et al", + "entity_type": "PERSON", + "description": "et al refers to additional authors of the paper not explicitly named in the text", + "source_ids": [ + 192 + ] + }, + { + "entity_name": "iclr", + "entity_type": "PUBLICATION_VENUE", + "description": "iclr is the abbreviation for the international conference on learning representations where the paper was published", + "source_ids": [ + 192 + ] + } + ], + "relations": [ + { + "src_entity_name": "akari asai", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "akari asai is an author of the paper describing the self rag model", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "zeqiu wu is an author of the paper describing the self rag model", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "yizhong wang is an author of the paper describing the self rag model", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "et al", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 8.0, + "description": "et al refers to co authors of the paper describing the self rag model", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "self rag", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 10.0, + "description": "the self rag paper was published at the international conference on learning representations", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 8.0, + "description": "akari asai s paper was published at the international conference on learning representations", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 8.0, + "description": "zeqiu wu s paper was published at the international conference on learning representations", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 8.0, + "description": "yizhong wang s paper was published at the international conference on learning representations", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "et al", + "tgt_entity_name": "international conference on learning representations", + "relation_name": "", + "weight": 7.0, + "description": "the co authors referred to as et al published their paper at the international conference on learning representations", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "zeqiu wu", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and zeqiu wu are co authors on the same paper", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "yizhong wang", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and yizhong wang are co authors on the same paper", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "akari asai is listed alongside other authors et al on the same paper", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "yizhong wang", + "relation_name": "", + "weight": 8.0, + "description": "zeqiu wu and yizhong wang are co authors on the same paper", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "zeqiu wu is listed alongside other authors et al on the same paper", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "yizhong wang is listed alongside other authors et al on the same paper", + "source_ids": [ + 192 + ] + }, + { + "src_entity_name": "international conference on learning representations", + "tgt_entity_name": "iclr", + "relation_name": "", + "weight": 10.0, + "description": "iclr is the abbreviation used for the international conference on learning representations in the text", + "source_ids": [ + 192 + ] + } + ], + "node_idx": 192 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_193.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_193.json new file mode 100644 index 0000000..c34ca25 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_193.json @@ -0,0 +1,277 @@ +{ + "entities": [ + { + "entity_name": "akari asai", + "entity_type": "PERSON", + "description": "akari asai is one of the authors of the 2023 paper titled self rag", + "source_ids": [ + 193 + ] + }, + { + "entity_name": "zeqiu wu", + "entity_type": "PERSON", + "description": "zeqiu wu is one of the authors of the 2023 paper titled self rag", + "source_ids": [ + 193 + ] + }, + { + "entity_name": "yizhong wang", + "entity_type": "PERSON", + "description": "yizhong wang is one of the authors of the 2023 paper titled self rag", + "source_ids": [ + 193 + ] + }, + { + "entity_name": "avirup sil", + "entity_type": "PERSON", + "description": "avirup sil is one of the authors of the 2023 paper titled self rag", + "source_ids": [ + 193 + ] + }, + { + "entity_name": "hannaneh hajishirzi", + "entity_type": "PERSON", + "description": "hannaneh hajishirzi is one of the authors of the 2023 paper titled self rag", + "source_ids": [ + 193 + ] + }, + { + "entity_name": "self rag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "self rag is a method described in the text for learning to retrieve generate and critique through self reflection", + "source_ids": [ + 193 + ] + }, + { + "entity_name": "2023", + "entity_type": "DATE", + "description": "2023 is the year the paper self rag was published", + "source_ids": [ + 193 + ] + }, + { + "entity_name": "arxiv preprint arxiv 2310 11511", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2310 11511 is the specific identifier and venue for the publication of the paper", + "source_ids": [ + 193 + ] + }, + { + "entity_name": "learning to retrieve generate and critique through self reflection", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "this is the specific technique described in the text that the self rag model learns to perform", + "source_ids": [ + 193 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "ORGANIZATION", + "description": "arxiv is the organization or platform hosting the preprint mentioned in the text", + "source_ids": [ + 193 + ] + } + ], + "relations": [ + { + "src_entity_name": "akari asai", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "akari asai is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "zeqiu wu is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "yizhong wang is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "avirup sil", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "avirup sil is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "hannaneh hajishirzi", + "tgt_entity_name": "self rag", + "relation_name": "", + "weight": 9.0, + "description": "hannaneh hajishirzi is an author of the paper describing the self rag model", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "zeqiu wu", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and zeqiu wu are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "yizhong wang", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and yizhong wang are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "avirup sil", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and avirup sil are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "akari asai", + "tgt_entity_name": "hannaneh hajishirzi", + "relation_name": "", + "weight": 8.0, + "description": "akari asai and hannaneh hajishirzi are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "yizhong wang", + "relation_name": "", + "weight": 8.0, + "description": "zeqiu wu and yizhong wang are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "avirup sil", + "relation_name": "", + "weight": 8.0, + "description": "zeqiu wu and avirup sil are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "zeqiu wu", + "tgt_entity_name": "hannaneh hajishirzi", + "relation_name": "", + "weight": 8.0, + "description": "zeqiu wu and hannaneh hajishirzi are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "avirup sil", + "relation_name": "", + "weight": 8.0, + "description": "yizhong wang and avirup sil are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "yizhong wang", + "tgt_entity_name": "hannaneh hajishirzi", + "relation_name": "", + "weight": 8.0, + "description": "yizhong wang and hannaneh hajishirzi are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "avirup sil", + "tgt_entity_name": "hannaneh hajishirzi", + "relation_name": "", + "weight": 8.0, + "description": "avirup sil and hannaneh hajishirzi are co authors on the same paper", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "self rag", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 10.0, + "description": "the self rag paper was published in the year 2023", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "self rag", + "tgt_entity_name": "arxiv preprint arxiv 2310 11511", + "relation_name": "", + "weight": 10.0, + "description": "the self rag paper is identified by the arxiv preprint number arxiv 2310 11511", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "self rag", + "tgt_entity_name": "learning to retrieve generate and critique through self reflection", + "relation_name": "", + "weight": 10.0, + "description": "self rag is the model that implements the method of learning to retrieve generate and critique through self reflection", + "source_ids": [ + 193 + ] + }, + { + "src_entity_name": "arxiv preprint arxiv 2310 11511", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the preprint is hosted by the arxiv organization", + "source_ids": [ + 193 + ] + } + ], + "node_idx": 193 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_194.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_194.json new file mode 100644 index 0000000..af95287 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_194.json @@ -0,0 +1,501 @@ +{ + "entities": [ + { + "entity_name": "shuai bai", + "entity_type": "PERSON", + "description": "shuai bai is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "keqin chen", + "entity_type": "PERSON", + "description": "keqin chen is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "xuejing liu", + "entity_type": "PERSON", + "description": "xuejing liu is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "jialin wang", + "entity_type": "PERSON", + "description": "jialin wang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "wenbin ge", + "entity_type": "PERSON", + "description": "wenbin ge is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "sibo song", + "entity_type": "PERSON", + "description": "sibo song is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "kai dang", + "entity_type": "PERSON", + "description": "kai dang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "peng wang", + "entity_type": "PERSON", + "description": "peng wang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "shijie wang", + "entity_type": "PERSON", + "description": "shijie wang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "jun tang", + "entity_type": "PERSON", + "description": "jun tang is listed as one of the authors of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "qwen2 5 vl technical report", + "entity_type": "PUBLICATION_VENUE", + "description": "qwen2 5 vl technical report is the title of the document authored by the listed individuals", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv is the preprint server where the qwen2 5 vl technical report was published", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "2025", + "entity_type": "DATE", + "description": "2025 is the year the qwen2 5 vl technical report was published", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "arxiv 2502 13923", + "entity_type": "FILE_TYPE", + "description": "arxiv 2502 13923 is the specific identifier for the preprint document", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "et al", + "entity_type": "PERSON", + "description": "et al indicates additional authors not explicitly listed in the text", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "qwen2 5 vl", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen2 5 vl is the specific model or architecture discussed in the technical report", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "technical report", + "entity_type": "PUBLICATION_VENUE", + "description": "technical report describes the type of document being referenced", + "source_ids": [ + 194 + ] + }, + { + "entity_name": "preprint", + "entity_type": "FILE_TYPE", + "description": "preprint indicates the document is a preliminary version of a research paper", + "source_ids": [ + 194 + ] + } + ], + "relations": [ + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "shuai bai is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "keqin chen", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "keqin chen is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "xuejing liu", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "xuejing liu is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "jialin wang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "jialin wang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "wenbin ge", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "wenbin ge is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "sibo song", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "sibo song is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "kai dang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "kai dang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "peng wang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "peng wang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shijie wang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "shijie wang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "jun tang", + "tgt_entity_name": "qwen2 5 vl technical report", + "relation_name": "", + "weight": 10.0, + "description": "jun tang is an author of the qwen2 5 vl technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the qwen2 5 vl technical report was published as a preprint on arxiv", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "the qwen2 5 vl technical report was published in the year 2025", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "arxiv 2502 13923", + "relation_name": "", + "weight": 9.0, + "description": "the qwen2 5 vl technical report is identified by the preprint number arxiv 2502 13923", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "keqin chen", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and keqin chen are co authors of the same document", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "xuejing liu", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and xuejing liu are co authors of the same document", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "jialin wang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and jialin wang are co authors of the same document", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "wenbin ge", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and wenbin ge are co authors of the same document", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "sibo song", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and sibo song are co authors of the same document", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "kai dang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and kai dang are co authors of the same document", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "peng wang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and peng wang are co authors of the same document", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "shijie wang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and shijie wang are co authors of the same document", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "jun tang", + "relation_name": "", + "weight": 8.0, + "description": "shuai bai and jun tang are co authors of the same document", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "qwen2 5 vl", + "relation_name": "", + "weight": 10.0, + "description": "the report is about the qwen2 5 vl model architecture", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "qwen2 5 vl technical report", + "tgt_entity_name": "technical report", + "relation_name": "", + "weight": 9.0, + "description": "the document is identified as a technical report", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "arxiv", + "tgt_entity_name": "preprint", + "relation_name": "", + "weight": 8.0, + "description": "arxiv is a platform for preprints", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shuai bai", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "shuai bai is the first author listed before et al", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "keqin chen", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "keqin chen is listed as an author before et al", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "xuejing liu", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "xuejing liu is listed as an author before et al", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "jialin wang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "jialin wang is listed as an author before et al", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "wenbin ge", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "wenbin ge is listed as an author before et al", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "sibo song", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "sibo song is listed as an author before et al", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "kai dang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "kai dang is listed as an author before et al", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "peng wang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "peng wang is listed as an author before et al", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "shijie wang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "shijie wang is listed as an author before et al", + "source_ids": [ + 194 + ] + }, + { + "src_entity_name": "jun tang", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 7.0, + "description": "jun tang is listed as an author before et al", + "source_ids": [ + 194 + ] + } + ], + "node_idx": 194 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_195.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_195.json new file mode 100644 index 0000000..92a1fa1 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_195.json @@ -0,0 +1,271 @@ +{ + "entities": [ + { + "entity_name": "camille barboule", + "entity_type": "PERSON", + "description": "camille barboule is one of the authors of the 2025 survey on question answering over visually rich documents", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "benjamin piwowarski", + "entity_type": "PERSON", + "description": "benjamin piwowarski is one of the authors of the 2025 survey on question answering over visually rich documents", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "yoan chabot", + "entity_type": "PERSON", + "description": "yoan chabot is one of the authors of the 2025 survey on question answering over visually rich documents", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "entity_type": "BOOK", + "description": "this is the title of the survey paper published in 2025", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv is the preprint server where the survey paper was published", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "2025", + "entity_type": "DATE", + "description": "2025 is the year the survey paper was published", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "arxiv 2501 02235", + "entity_type": "FILE_TYPE", + "description": "arxiv 2501 02235 is the specific identifier for the preprint version of the survey", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "question answering", + "entity_type": "TASK_OR_PROBLEM", + "description": "question answering is the specific task addressed by the survey over visually rich documents", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "visually rich documents", + "entity_type": "DATASET_OR_CORPUS", + "description": "visually rich documents are the type of documents analyzed in the survey", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "methods", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "methods refers to the techniques discussed in the survey for handling visually rich documents", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "challenges", + "entity_type": "TASK_OR_PROBLEM", + "description": "challenges refers to the difficulties identified in the field of question answering over visually rich documents", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "trends", + "entity_type": "RESEARCH_FIELD", + "description": "trends refers to the current directions and future outlooks in the research area", + "source_ids": [ + 195 + ] + }, + { + "entity_name": "preprint", + "entity_type": "FILE_TYPE", + "description": "preprint indicates the document is a preliminary version of a research paper", + "source_ids": [ + 195 + ] + } + ], + "relations": [ + { + "src_entity_name": "camille barboule", + "tgt_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "relation_name": "", + "weight": 10.0, + "description": "camille barboule is an author of the survey paper", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "benjamin piwowarski", + "tgt_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "relation_name": "", + "weight": 10.0, + "description": "benjamin piwowarski is an author of the survey paper", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "yoan chabot", + "tgt_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "relation_name": "", + "weight": 10.0, + "description": "yoan chabot is an author of the survey paper", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper was published as a preprint on arxiv", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper was published in the year 2025", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "arxiv 2501 02235", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper is identified by the preprint number arxiv 2501 02235", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "camille barboule", + "tgt_entity_name": "benjamin piwowarski", + "relation_name": "", + "weight": 8.0, + "description": "camille barboule and benjamin piwowarski are co authors of the same survey paper", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "camille barboule", + "tgt_entity_name": "yoan chabot", + "relation_name": "", + "weight": 8.0, + "description": "camille barboule and yoan chabot are co authors of the same survey paper", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "benjamin piwowarski", + "tgt_entity_name": "yoan chabot", + "relation_name": "", + "weight": 8.0, + "description": "benjamin piwowarski and yoan chabot are co authors of the same survey paper", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 9.0, + "description": "the survey focuses on the task of question answering", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "visually rich documents", + "relation_name": "", + "weight": 9.0, + "description": "the survey specifically addresses visually rich documents", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "methods", + "relation_name": "", + "weight": 8.0, + "description": "the survey covers various methods used in the field", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "challenges", + "relation_name": "", + "weight": 8.0, + "description": "the survey discusses the challenges present in the field", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "survey on question answering over visually rich documents methods challenges and trends", + "tgt_entity_name": "trends", + "relation_name": "", + "weight": 8.0, + "description": "the survey outlines the trends in the research area", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "arxiv 2501 02235", + "tgt_entity_name": "preprint", + "relation_name": "", + "weight": 9.0, + "description": "arxiv 2501 02235 is identified as a preprint document", + "source_ids": [ + 195 + ] + }, + { + "src_entity_name": "question answering", + "tgt_entity_name": "visually rich documents", + "relation_name": "", + "weight": 8.0, + "description": "question answering is performed over visually rich documents in the context of the survey", + "source_ids": [ + 195 + ] + } + ], + "node_idx": 195 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_196.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_196.json new file mode 100644 index 0000000..69aca28 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_196.json @@ -0,0 +1,533 @@ +{ + "entities": [ + { + "entity_name": "yukun cao", + "entity_type": "PERSON", + "description": "yukun cao is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "zengyi gao", + "entity_type": "PERSON", + "description": "zengyi gao is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "zhiyang li", + "entity_type": "PERSON", + "description": "zhiyang li is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "xike xie", + "entity_type": "PERSON", + "description": "xike xie is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "s kevin zhou", + "entity_type": "PERSON", + "description": "s kevin zhou is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "jianliang xu", + "entity_type": "PERSON", + "description": "jianliang xu is listed as one of the authors of the paper titled lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "lego graphrag", + "entity_type": "PRODUCT", + "description": "lego graphrag is a modularized graph based retrieval augmented generation system designed for design space exploration", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "proc vldb endow", + "entity_type": "PUBLICATION_VENUE", + "description": "proc vldb endow is the publication venue where the paper was published", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "june 2025", + "entity_type": "DATE", + "description": "june 2025 is the specific date of publication for the paper", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "2025", + "entity_type": "DATE", + "description": "2025 is the year associated with the publication and the authors work", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "3269 3283", + "entity_type": "MEASUREMENT", + "description": "3269 3283 represents the page range of the article in the publication", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "10", + "entity_type": "MEASUREMENT", + "description": "10 is the issue number of the publication volume", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "18", + "entity_type": "MEASUREMENT", + "description": "18 is the volume number of the publication", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "design space exploration", + "entity_type": "TASK_OR_PROBLEM", + "description": "design space exploration is the specific problem domain that the lego graphrag system is designed to address", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "graph based retrieval augmented generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graph based retrieval augmented generation is the underlying technique being modularized in the paper", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "modularizing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "modularizing is the specific method or approach applied to the graph based retrieval augmented generation system", + "source_ids": [ + 196 + ] + }, + { + "entity_name": "https doi org 10 14778 3748191 3748194", + "entity_type": "URL", + "description": "https doi org 10 14778 3748191 3748194 is the digital object identifier link for the paper", + "source_ids": [ + 196 + ] + } + ], + "relations": [ + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "yukun cao is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "zengyi gao is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "zhiyang li is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "xike xie", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "xike xie is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "s kevin zhou", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "s kevin zhou is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "jianliang xu", + "tgt_entity_name": "lego graphrag", + "relation_name": "", + "weight": 10.0, + "description": "jianliang xu is an author of the paper describing lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "yukun cao is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "zengyi gao is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "zhiyang li is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "xike xie", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "xike xie is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "s kevin zhou", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "s kevin zhou is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "jianliang xu", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 9.0, + "description": "jianliang xu is an author of a paper published in proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "zengyi gao", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and zengyi gao are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "zhiyang li", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and zhiyang li are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "xike xie", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and xike xie are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "s kevin zhou", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and s kevin zhou are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "yukun cao", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "yukun cao and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "zhiyang li", + "relation_name": "", + "weight": 8.0, + "description": "zengyi gao and zhiyang li are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "xike xie", + "relation_name": "", + "weight": 8.0, + "description": "zengyi gao and xike xie are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "s kevin zhou", + "relation_name": "", + "weight": 8.0, + "description": "zengyi gao and s kevin zhou are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zengyi gao", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "zengyi gao and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "xike xie", + "relation_name": "", + "weight": 8.0, + "description": "zhiyang li and xike xie are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "s kevin zhou", + "relation_name": "", + "weight": 8.0, + "description": "zhiyang li and s kevin zhou are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "zhiyang li", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "zhiyang li and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "xike xie", + "tgt_entity_name": "s kevin zhou", + "relation_name": "", + "weight": 8.0, + "description": "xike xie and s kevin zhou are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "xike xie", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "xike xie and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "s kevin zhou", + "tgt_entity_name": "jianliang xu", + "relation_name": "", + "weight": 8.0, + "description": "s kevin zhou and jianliang xu are co authors on the same paper", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "proc vldb endow", + "relation_name": "", + "weight": 10.0, + "description": "lego graphrag is the subject of a paper published in proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "june 2025", + "relation_name": "", + "weight": 9.0, + "description": "lego graphrag was published in june 2025", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "lego graphrag was published in the year 2025", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "june 2025", + "relation_name": "", + "weight": 9.0, + "description": "proc vldb endow published the paper in june 2025", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "proc vldb endow published the paper in 2025", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "18", + "relation_name": "", + "weight": 8.0, + "description": "the paper was published in volume 18 of proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "10", + "relation_name": "", + "weight": 8.0, + "description": "the paper was published in issue 10 of proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "proc vldb endow", + "tgt_entity_name": "3269 3283", + "relation_name": "", + "weight": 8.0, + "description": "the paper appears on pages 3269 3283 of proc vldb endow", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "design space exploration", + "relation_name": "", + "weight": 10.0, + "description": "lego graphrag is developed specifically for design space exploration", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "graph based retrieval augmented generation", + "relation_name": "", + "weight": 10.0, + "description": "lego graphrag is a modularized version of graph based retrieval augmented generation", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "modularizing", + "relation_name": "", + "weight": 9.0, + "description": "the paper describes the process of modularizing graph based retrieval augmented generation to create lego graphrag", + "source_ids": [ + 196 + ] + }, + { + "src_entity_name": "lego graphrag", + "tgt_entity_name": "https doi org 10 14778 3748191 3748194", + "relation_name": "", + "weight": 10.0, + "description": "the paper describing lego graphrag is accessible via the provided doi link", + "source_ids": [ + 196 + ] + } + ], + "node_idx": 196 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_197.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_197.json new file mode 100644 index 0000000..e3b26ae --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_197.json @@ -0,0 +1,467 @@ +{ + "entities": [ + { + "entity_name": "chengliang chai", + "entity_type": "PERSON", + "description": "chengliang chai is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "jiajun li", + "entity_type": "PERSON", + "description": "jiajun li is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "yuhao deng", + "entity_type": "PERSON", + "description": "yuhao deng is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "yuanhao zhong", + "entity_type": "PERSON", + "description": "yuanhao zhong is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "ye yuan", + "entity_type": "PERSON", + "description": "ye yuan is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "guoren wang", + "entity_type": "PERSON", + "description": "guoren wang is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "lei cao", + "entity_type": "PERSON", + "description": "lei cao is an author of the paper titled doctopus budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "doctopus", + "entity_type": "PRODUCT", + "description": "doctopus is a system or method for budget aware structural table extraction from unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "proceedings of the vldb endowment", + "entity_type": "PUBLICATION_VENUE", + "description": "proceedings of the vldb endowment is the publication venue where the paper was published in 2025", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "2025", + "entity_type": "DATE", + "description": "2025 is the year the paper was published and the year associated with the volume and issue number", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "budget aware structural table extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "budget aware structural table extraction is the specific task addressed by the doctopus system described in the text", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "unstructured documents", + "entity_type": "DATASET_OR_CORPUS", + "description": "unstructured documents are the source material from which structural tables are extracted in the described work", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "18", + "entity_type": "MEASUREMENT", + "description": "18 is the volume number of the proceedings of the vldb endowment where the paper was published", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "11", + "entity_type": "MEASUREMENT", + "description": "11 is the issue number of the proceedings of the vldb endowment where the paper was published", + "source_ids": [ + 197 + ] + }, + { + "entity_name": "3695 3707", + "entity_type": "MEASUREMENT", + "description": "3695 3707 represents the page range of the paper within the publication", + "source_ids": [ + 197 + ] + } + ], + "relations": [ + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "chengliang chai is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "jiajun li", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "jiajun li is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "yuhao deng", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "yuhao deng is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "yuanhao zhong", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "yuanhao zhong is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "ye yuan", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "ye yuan is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "guoren wang", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "guoren wang is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "lei cao", + "tgt_entity_name": "doctopus", + "relation_name": "", + "weight": 9.0, + "description": "lei cao is an author of the paper describing the doctopus system", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "jiajun li", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "jiajun li is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "yuhao deng", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "yuhao deng is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "yuanhao zhong", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "yuanhao zhong is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "ye yuan", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "ye yuan is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "guoren wang", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "guoren wang is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "lei cao", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 8.0, + "description": "lei cao is an author of a paper published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "doctopus", + "tgt_entity_name": "proceedings of the vldb endowment", + "relation_name": "", + "weight": 10.0, + "description": "the doctopus paper was published in the proceedings of the vldb endowment", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "doctopus", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 10.0, + "description": "doctopus is the system designed to perform budget aware structural table extraction", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "doctopus", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 10.0, + "description": "doctopus processes unstructured documents to extract structural tables", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "18", + "relation_name": "", + "weight": 9.0, + "description": "the proceedings of the vldb endowment volume 18 contains the paper", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "11", + "relation_name": "", + "weight": 9.0, + "description": "the proceedings of the vldb endowment issue 11 contains the paper", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "proceedings of the vldb endowment", + "tgt_entity_name": "3695 3707", + "relation_name": "", + "weight": 9.0, + "description": "the paper appears on pages 3695 3707 of the proceedings of the vldb endowment", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "jiajun li", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "jiajun li is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "yuhao deng", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "yuhao deng is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "yuanhao zhong", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "yuanhao zhong is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "ye yuan", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "ye yuan is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "guoren wang", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "guoren wang is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "lei cao", + "tgt_entity_name": "budget aware structural table extraction", + "relation_name": "", + "weight": 8.0, + "description": "lei cao is an author of the work on budget aware structural table extraction", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "jiajun li", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "jiajun li is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "yuhao deng", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "yuhao deng is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "yuanhao zhong", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "yuanhao zhong is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "ye yuan", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "ye yuan is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "guoren wang", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "guoren wang is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ] + }, + { + "src_entity_name": "lei cao", + "tgt_entity_name": "unstructured documents", + "relation_name": "", + "weight": 8.0, + "description": "lei cao is an author of the work involving unstructured documents", + "source_ids": [ + 197 + ] + } + ], + "node_idx": 197 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_198.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_198.json new file mode 100644 index 0000000..aba4d69 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_198.json @@ -0,0 +1,277 @@ +{ + "entities": [ + { + "entity_name": "ilias chalkidis", + "entity_type": "PERSON", + "description": "ilias chalkidis is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ] + }, + { + "entity_name": "manos fergadiotis", + "entity_type": "PERSON", + "description": "manos fergadiotis is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ] + }, + { + "entity_name": "prodromos malakasiotis", + "entity_type": "PERSON", + "description": "prodromos malakasiotis is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ] + }, + { + "entity_name": "nikolaos aletras", + "entity_type": "PERSON", + "description": "nikolaos aletras is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ] + }, + { + "entity_name": "ion androutsopoulos", + "entity_type": "PERSON", + "description": "ion androutsopoulos is one of the authors of the 2020 arxiv preprint titled legal bert", + "source_ids": [ + 198 + ] + }, + { + "entity_name": "legal bert", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "legal bert is a model described as the muppets straight out of law school in the text", + "source_ids": [ + 198 + ] + }, + { + "entity_name": "arxiv preprint arxiv 2010 02559", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2010 02559 is the specific publication venue and identifier for the paper", + "source_ids": [ + 198 + ] + }, + { + "entity_name": "2020", + "entity_type": "DATE", + "description": "2020 is the year the paper was published", + "source_ids": [ + 198 + ] + }, + { + "entity_name": "muppets", + "entity_type": "PRODUCT", + "description": "muppets is a metaphorical term used in the text to describe the legal bert model", + "source_ids": [ + 198 + ] + }, + { + "entity_name": "law school", + "entity_type": "LOCATION", + "description": "law school is a location mentioned metaphorically to indicate the origin or training context of the legal bert model", + "source_ids": [ + 198 + ] + } + ], + "relations": [ + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "ilias chalkidis is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "manos fergadiotis", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "manos fergadiotis is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "prodromos malakasiotis", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "prodromos malakasiotis is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "nikolaos aletras", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "nikolaos aletras is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "ion androutsopoulos", + "tgt_entity_name": "legal bert", + "relation_name": "", + "weight": 9.0, + "description": "ion androutsopoulos is an author of the paper introducing the legal bert model", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "legal bert", + "tgt_entity_name": "arxiv preprint arxiv 2010 02559", + "relation_name": "", + "weight": 10.0, + "description": "legal bert is the subject of the publication arxiv preprint arxiv 2010 02559", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "legal bert", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "legal bert was published in the year 2020", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "manos fergadiotis", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "prodromos malakasiotis", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "nikolaos aletras", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "ilias chalkidis", + "tgt_entity_name": "ion androutsopoulos", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "manos fergadiotis", + "tgt_entity_name": "prodromos malakasiotis", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "manos fergadiotis", + "tgt_entity_name": "nikolaos aletras", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "manos fergadiotis", + "tgt_entity_name": "ion androutsopoulos", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "prodromos malakasiotis", + "tgt_entity_name": "nikolaos aletras", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "prodromos malakasiotis", + "tgt_entity_name": "ion androutsopoulos", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "nikolaos aletras", + "tgt_entity_name": "ion androutsopoulos", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "legal bert", + "tgt_entity_name": "muppets", + "relation_name": "", + "weight": 9.0, + "description": "legal bert is described as being straight out of the muppets in the text", + "source_ids": [ + 198 + ] + }, + { + "src_entity_name": "legal bert", + "tgt_entity_name": "law school", + "relation_name": "", + "weight": 9.0, + "description": "legal bert is described as coming straight out of law school in the text", + "source_ids": [ + 198 + ] + } + ], + "node_idx": 198 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_199.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_199.json new file mode 100644 index 0000000..caa8795 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_199.json @@ -0,0 +1,701 @@ +{ + "entities": [ + { + "entity_name": "sibei chen", + "entity_type": "PERSON", + "description": "sibei chen is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "yeye he", + "entity_type": "PERSON", + "description": "yeye he is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "weiwei cui", + "entity_type": "PERSON", + "description": "weiwei cui is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "ju fan", + "entity_type": "PERSON", + "description": "ju fan is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "song ge", + "entity_type": "PERSON", + "description": "song ge is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "haidong zhang", + "entity_type": "PERSON", + "description": "haidong zhang is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "dongmei zhang", + "entity_type": "PERSON", + "description": "dongmei zhang is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "surajit chaudhuri", + "entity_type": "PERSON", + "description": "surajit chaudhuri is listed as an author of the paper titled auto formula", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "auto formula", + "entity_type": "PRODUCT", + "description": "auto formula is a system or method recommended in the paper for recommending formulas in spreadsheets using contrastive learning", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "proceedings of the acm on management of data", + "entity_type": "PUBLICATION_VENUE", + "description": "proceedings of the acm on management of data is the venue where the paper was published in 2024", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year the paper was published", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "1 27", + "entity_type": "MEASUREMENT", + "description": "1 27 represents the page range of the article in the publication", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "table representations", + "entity_type": "DATASET_OR_CORPUS", + "description": "table representations is the subject of the contrastive learning method used in the paper", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "contrastive learning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "contrastive learning is the technique used to recommend formulas in spreadsheets", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "spreadsheets", + "entity_type": "PRODUCT", + "description": "spreadsheets are the application domain where the auto formula system recommends formulas", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "formulas", + "entity_type": "PRODUCT", + "description": "formulas are the specific items being recommended by the auto formula system", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "2", + "entity_type": "MEASUREMENT", + "description": "2 is the volume number of the publication", + "source_ids": [ + 199 + ] + }, + { + "entity_name": "3", + "entity_type": "MEASUREMENT", + "description": "3 is the issue number of the publication", + "source_ids": [ + 199 + ] + } + ], + "relations": [ + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "sibei chen is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "yeye he is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "weiwei cui is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "ju fan is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "song ge is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "haidong zhang", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "haidong zhang is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "dongmei zhang", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "dongmei zhang is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "surajit chaudhuri", + "tgt_entity_name": "auto formula", + "relation_name": "", + "weight": 9.0, + "description": "surajit chaudhuri is an author of the paper describing the auto formula system", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen is an author of a paper published in this venue", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "yeye he is an author of a paper published in this venue", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui is an author of a paper published in this venue", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "ju fan is an author of a paper published in this venue", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "song ge is an author of a paper published in this venue", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "haidong zhang", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "haidong zhang is an author of a paper published in this venue", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "dongmei zhang", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "dongmei zhang is an author of a paper published in this venue", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "surajit chaudhuri", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 8.0, + "description": "surajit chaudhuri is an author of a paper published in this venue", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 9.0, + "description": "auto formula is the subject of a paper published in this venue", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "the paper about auto formula was published in 2024", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "yeye he", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and yeye he are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "weiwei cui", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and weiwei cui are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "ju fan", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and ju fan are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "song ge", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and song ge are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "weiwei cui", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and weiwei cui are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "ju fan", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and ju fan are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "song ge", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and song ge are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "yeye he", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "yeye he and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "ju fan", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and ju fan are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "song ge", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and song ge are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "weiwei cui", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "weiwei cui and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "song ge", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and song ge are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "haidong zhang", + "relation_name": "", + "weight": 8.0, + "description": "song ge and haidong zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "song ge and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "song ge", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "song ge and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "haidong zhang", + "tgt_entity_name": "dongmei zhang", + "relation_name": "", + "weight": 8.0, + "description": "haidong zhang and dongmei zhang are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "haidong zhang", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "haidong zhang and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "dongmei zhang", + "tgt_entity_name": "surajit chaudhuri", + "relation_name": "", + "weight": 8.0, + "description": "dongmei zhang and surajit chaudhuri are co authors on the same paper", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "contrastive learning", + "relation_name": "", + "weight": 10.0, + "description": "auto formula uses contrastive learning as its core method", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "spreadsheets", + "relation_name": "", + "weight": 9.0, + "description": "auto formula operates within the context of spreadsheets", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "formulas", + "relation_name": "", + "weight": 10.0, + "description": "auto formula is designed to recommend formulas", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "auto formula", + "tgt_entity_name": "table representations", + "relation_name": "", + "weight": 9.0, + "description": "auto formula relies on table representations for its learning process", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "proceedings of the acm on management of data", + "tgt_entity_name": "2", + "relation_name": "", + "weight": 10.0, + "description": "the publication volume is 2", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "proceedings of the acm on management of data", + "tgt_entity_name": "3", + "relation_name": "", + "weight": 10.0, + "description": "the publication issue is 3", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "proceedings of the acm on management of data", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 10.0, + "description": "the publication year is 2024", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "proceedings of the acm on management of data", + "tgt_entity_name": "1 27", + "relation_name": "", + "weight": 10.0, + "description": "the publication page range is 1 27", + "source_ids": [ + 199 + ] + }, + { + "src_entity_name": "contrastive learning", + "tgt_entity_name": "table representations", + "relation_name": "", + "weight": 9.0, + "description": "contrastive learning is applied to table representations", + "source_ids": [ + 199 + ] + } + ], + "node_idx": 199 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_2.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_2.json new file mode 100644 index 0000000..ad463fe --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_2.json @@ -0,0 +1,411 @@ +{ + "entities": [ + { + "entity_name": "shu wang", + "entity_type": "PERSON", + "description": "shu wang is an author of the paper affiliated with the chinese university of hong kong shenzhen", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "yingli zhou", + "entity_type": "PERSON", + "description": "yingli zhou is an author of the paper affiliated with the chinese university of hong kong shenzhen", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "yixiang fang", + "entity_type": "PERSON", + "description": "yixiang fang is an author of the paper affiliated with the chinese university of hong kong shenzhen", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "the chinese university of hong kong shenzhen", + "entity_type": "ORGANIZATION", + "description": "the chinese university of hong kong shenzhen is the institution where the authors are affiliated", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "large language models", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "large language models are the models whose performance is being boosted by the proposed method", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "retrievalaugmented generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "retrievalaugmented generation is a method that queries external documents to boost llm performance", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "bookrag is a novel rag approach targeted for documents with hierarchical structures", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "SOFTWARE", + "description": "bookindex is a novel index structure built by extracting a hierarchical tree from documents", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "information foraging theory", + "entity_type": "SCIENTIFIC_THEORY", + "description": "information foraging theory is the theory inspiring the agent based query method", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "question answering", + "entity_type": "TASK_OR_PROBLEM", + "description": "question answering is the task where the proposed methods aim to improve performance", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "books", + "entity_type": "BOOK", + "description": "books are examples of real world documents with hierarchical structures", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "booklets", + "entity_type": "BOOK", + "description": "booklets are examples of real world documents with hierarchical structures", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "handbooks", + "entity_type": "BOOK", + "description": "handbooks are examples of real world documents with hierarchical structures", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "three widely adopted benchmarks", + "entity_type": "BENCHMARK", + "description": "three widely adopted benchmarks were used to demonstrate the performance of bookrag", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "industry", + "entity_type": "ORGANIZATION", + "description": "industry is a sector that has attracted attention to retrievalaugmented generation", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "academia", + "entity_type": "ORGANIZATION", + "description": "academia is a sector that has attracted attention to retrievalaugmented generation", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "graph", + "entity_type": "SOFTWARE", + "description": "a graph is used to capture intricate relationships between entities in the bookindex", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "tree", + "entity_type": "SOFTWARE", + "description": "a hierarchical tree is extracted from documents to serve as the role of a table of contents", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "table of contents", + "entity_type": "SOFTWARE", + "description": "the table of contents is the role served by the hierarchical tree in the bookindex", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "retrieval recall", + "entity_type": "EVALUATION_METRIC", + "description": "retrieval recall is a metric where bookrag significantly outperforms baselines", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "qa accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "qa accuracy is a metric where bookrag significantly outperforms baselines", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "efficiency", + "entity_type": "EVALUATION_METRIC", + "description": "efficiency is a metric where bookrag maintains competitive performance", + "source_ids": [ + 2 + ] + }, + { + "entity_name": "baselines", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "baselines are existing methods that bookrag outperforms in retrieval recall and qa accuracy", + "source_ids": [ + 2 + ] + } + ], + "relations": [ + { + "src_entity_name": "shu wang", + "tgt_entity_name": "the chinese university of hong kong shenzhen", + "relation_name": "", + "weight": 10.0, + "description": "shu wang is affiliated with the chinese university of hong kong shenzhen", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "yingli zhou", + "tgt_entity_name": "the chinese university of hong kong shenzhen", + "relation_name": "", + "weight": 10.0, + "description": "yingli zhou is affiliated with the chinese university of hong kong shenzhen", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "yixiang fang", + "tgt_entity_name": "the chinese university of hong kong shenzhen", + "relation_name": "", + "weight": 10.0, + "description": "yixiang fang is affiliated with the chinese university of hong kong shenzhen", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "retrievalaugmented generation", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 9.0, + "description": "retrievalaugmented generation is used to boost the performance of large language models", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrievalaugmented generation", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is a novel approach within the category of retrievalaugmented generation", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is designed to improve performance on the question answering task", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is specifically targeted for documents like books that have hierarchical structures", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes the bookindex structure to exploit logical hierarchies and trace entity relations", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "books", + "relation_name": "", + "weight": 8.0, + "description": "bookindex is built by extracting a hierarchical tree from documents such as books", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "information foraging theory", + "relation_name": "", + "weight": 8.0, + "description": "the agent based query method in bookrag is inspired by information foraging theory", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "three widely adopted benchmarks", + "relation_name": "", + "weight": 9.0, + "description": "bookrag was evaluated and demonstrated state of the art performance on three widely adopted benchmarks", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "retrievalaugmented generation", + "tgt_entity_name": "industry", + "relation_name": "", + "weight": 7.0, + "description": "industry has attracted attention to retrievalaugmented generation", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "retrievalaugmented generation", + "tgt_entity_name": "academia", + "relation_name": "", + "weight": 7.0, + "description": "academia has attracted attention to retrievalaugmented generation", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "booklets", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is specifically targeted for documents like booklets that have hierarchical structures", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "handbooks", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is specifically targeted for documents like handbooks that have hierarchical structures", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 9.0, + "description": "bookindex is built by extracting a hierarchical tree from the document", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "graph", + "relation_name": "", + "weight": 8.0, + "description": "bookindex uses a graph to capture the intricate relationships between entities", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "table of contents", + "relation_name": "", + "weight": 8.0, + "description": "the hierarchical tree serves as the role of the table of contents", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "bookrag significantly outperforms baselines in retrieval recall", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 9.0, + "description": "bookrag significantly outperforms baselines in qa accuracy", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 7.0, + "description": "bookrag maintains competitive efficiency", + "source_ids": [ + 2 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "baselines", + "relation_name": "", + "weight": 9.0, + "description": "bookrag significantly outperforms baselines in both retrieval recall and qa accuracy", + "source_ids": [ + 2 + ] + } + ], + "node_idx": 2 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_20.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_20.json new file mode 100644 index 0000000..4be4f4d --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_20.json @@ -0,0 +1,197 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "TECHNOLOGY", + "description": "bookrag is a retrieval augmented generation method introduced to bridge a gap in document qa tasks", + "source_ids": [ + 20 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is a document native structure used by bookrag to organize information through hierarchical and graph based methods", + "source_ids": [ + 20 + ] + }, + { + "entity_name": "document qa tasks", + "entity_type": "TASK_OR_PROBLEM", + "description": "document qa tasks are the specific problems that bookrag and bookindex are designed to address", + "source_ids": [ + 20 + ] + }, + { + "entity_name": "hierarchical tree structure", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the hierarchical tree structure is a method used to preserve the document s native logical hierarchy by organizing parsed content blocks", + "source_ids": [ + 20 + ] + }, + { + "entity_name": "kg", + "entity_type": "TECHNOLOGY", + "description": "kg refers to a knowledge graph constructed to capture intricate relations within document blocks", + "source_ids": [ + 20 + ] + }, + { + "entity_name": "table of contents", + "entity_type": "PRODUCT", + "description": "the table of contents is the role served by the hierarchical tree structure in organizing the document s logical hierarchy", + "source_ids": [ + 20 + ] + }, + { + "entity_name": "parsed content blocks", + "entity_type": "MATERIAL", + "description": "parsed content blocks are the units of document content organized into a hierarchical tree structure", + "source_ids": [ + 20 + ] + }, + { + "entity_name": "fine grained entities", + "entity_type": "DATASET_OR_CORPUS", + "description": "fine grained entities are the specific data points contained within the document blocks that are captured by the knowledge graph", + "source_ids": [ + 20 + ] + }, + { + "entity_name": "relation", + "entity_type": "CONCEPT", + "description": "the relation refers to the deep connections within the document that the method aims to capture", + "source_ids": [ + 20 + ] + }, + { + "entity_name": "tree nodes", + "entity_type": "PRODUCT", + "description": "tree nodes are the specific components of the hierarchical tree structure to which kg entities are mapped", + "source_ids": [ + 20 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is built upon the document native bookindex", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "document qa tasks", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is designed specifically for document qa tasks", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "hierarchical tree structure", + "relation_name": "", + "weight": 9.0, + "description": "bookindex organizes information using a hierarchical tree structure to preserve logical hierarchy", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "bookindex constructs a kg to capture intricate relations within document blocks", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "hierarchical tree structure", + "tgt_entity_name": "table of contents", + "relation_name": "", + "weight": 8.0, + "description": "the hierarchical tree structure serves the role of the document s table of contents", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "hierarchical tree structure", + "relation_name": "", + "weight": 8.0, + "description": "the kg entities are mapped to their corresponding tree nodes to unify the two structures", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "parsed content blocks", + "relation_name": "", + "weight": 9.0, + "description": "bookindex organizes parsed content blocks into a hierarchical tree structure", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "fine grained entities", + "relation_name": "", + "weight": 9.0, + "description": "the kg is constructed containing fine grained entities to capture intricate relations", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "relation", + "relation_name": "", + "weight": 8.0, + "description": "bookrag is designed to capture the deep connection of the relation in the document", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "tree nodes", + "relation_name": "", + "weight": 9.0, + "description": "kg entities are mapped to their corresponding tree nodes to unify the structures", + "source_ids": [ + 20 + ] + }, + { + "src_entity_name": "parsed content blocks", + "tgt_entity_name": "tree nodes", + "relation_name": "", + "weight": 7.0, + "description": "parsed content blocks are organized into the hierarchical tree structure which consists of tree nodes", + "source_ids": [ + 20 + ] + } + ], + "node_idx": 20 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_200.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_200.json new file mode 100644 index 0000000..c30b306 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_200.json @@ -0,0 +1,545 @@ +{ + "entities": [ + { + "entity_name": "sibei chen", + "entity_type": "PERSON", + "description": "sibei chen is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "nan tang", + "entity_type": "PERSON", + "description": "nan tang is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "ju fan", + "entity_type": "PERSON", + "description": "ju fan is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "xuemi yan", + "entity_type": "PERSON", + "description": "xuemi yan is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "chengliang chai", + "entity_type": "PERSON", + "description": "chengliang chai is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "guoliang li", + "entity_type": "PERSON", + "description": "guoliang li is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "xiaoyong du", + "entity_type": "PERSON", + "description": "xiaoyong du is listed as one of the authors of the paper titled haipipe", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "haipipe", + "entity_type": "PRODUCT", + "description": "haipipe is a system or method described in the paper that combines human generated and machine generated pipelines for data preparation", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "2023", + "entity_type": "DATE", + "description": "2023 is the year the paper was published", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "proceedings of the acm on management of data", + "entity_type": "PUBLICATION_VENUE", + "description": "proceedings of the acm on management of data is the venue where the paper was published", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "1 26", + "entity_type": "MEASUREMENT", + "description": "1 26 refers to the page range of the paper in the publication", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "acm", + "entity_type": "ORGANIZATION", + "description": "acm is the organization associated with the publication venue mentioned in the text", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "data preparation", + "entity_type": "TASK_OR_PROBLEM", + "description": "data preparation is the specific task addressed by the haipipe system described in the text", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "human generated pipelines", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "human generated pipelines are a type of pipeline combined with machine generated ones in the haipipe system", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "machine generated pipelines", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "machine generated pipelines are a type of pipeline combined with human generated ones in the haipipe system", + "source_ids": [ + 200 + ] + }, + { + "entity_name": "1", + "entity_type": "MEASUREMENT", + "description": "1 refers to the page count or a specific metric mentioned in the context of the publication details", + "source_ids": [ + 200 + ] + } + ], + "relations": [ + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "sibei chen is an author of the paper describing haipipe", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "nan tang is an author of the paper describing haipipe", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "ju fan is an author of the paper describing haipipe", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "xuemi yan is an author of the paper describing haipipe", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "chengliang chai is an author of the paper describing haipipe", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "guoliang li", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "guoliang li is an author of the paper describing haipipe", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "xiaoyong du", + "tgt_entity_name": "haipipe", + "relation_name": "", + "weight": 9.0, + "description": "xiaoyong du is an author of the paper describing haipipe", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "proceedings of the acm on management of data", + "relation_name": "", + "weight": 10.0, + "description": "haipipe is published in the proceedings of the acm on management of data", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "nan tang", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and nan tang are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "ju fan", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and ju fan are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "xuemi yan", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and xuemi yan are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "chengliang chai", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and chengliang chai are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "sibei chen and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "ju fan", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and ju fan are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "xuemi yan", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and xuemi yan are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "chengliang chai", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and chengliang chai are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "nan tang and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "xuemi yan", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and xuemi yan are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "chengliang chai", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and chengliang chai are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "ju fan and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "chengliang chai", + "relation_name": "", + "weight": 8.0, + "description": "xuemi yan and chengliang chai are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "xuemi yan and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "xuemi yan and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "guoliang li", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai and guoliang li are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "chengliang chai and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "guoliang li", + "tgt_entity_name": "xiaoyong du", + "relation_name": "", + "weight": 8.0, + "description": "guoliang li and xiaoyong du are co authors on the same paper", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 9.0, + "description": "haipipe was published in the year 2023", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "data preparation", + "relation_name": "", + "weight": 10.0, + "description": "haipipe is a system designed for data preparation", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "human generated pipelines", + "relation_name": "", + "weight": 9.0, + "description": "haipipe combines human generated pipelines as part of its methodology", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "machine generated pipelines", + "relation_name": "", + "weight": 9.0, + "description": "haipipe combines machine generated pipelines as part of its methodology", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "haipipe", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 8.0, + "description": "haipipe is published by the acm organization", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "sibei chen", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "sibei chen is an author of a paper published by the acm", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "nan tang", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "nan tang is an author of a paper published by the acm", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "ju fan", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "ju fan is an author of a paper published by the acm", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "xuemi yan", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "xuemi yan is an author of a paper published by the acm", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "chengliang chai", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "chengliang chai is an author of a paper published by the acm", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "guoliang li", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "guoliang li is an author of a paper published by the acm", + "source_ids": [ + 200 + ] + }, + { + "src_entity_name": "xiaoyong du", + "tgt_entity_name": "acm", + "relation_name": "", + "weight": 7.0, + "description": "xiaoyong du is an author of a paper published by the acm", + "source_ids": [ + 200 + ] + } + ], + "node_idx": 200 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_201.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_201.json new file mode 100644 index 0000000..ca50895 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_201.json @@ -0,0 +1,323 @@ +{ + "entities": [ + { + "entity_name": "jaemin cho", + "entity_type": "PERSON", + "description": "jaemin cho is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "debanjan mahata", + "entity_type": "PERSON", + "description": "debanjan mahata is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "ozan irsoy", + "entity_type": "PERSON", + "description": "ozan irsoy is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "yujie he", + "entity_type": "PERSON", + "description": "yujie he is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "mohit bansal", + "entity_type": "PERSON", + "description": "mohit bansal is an author of the 2024 arxiv preprint titled m3docrag", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "m3docrag", + "entity_type": "PRODUCT", + "description": "m3docrag is a multi modal retrieval system designed for multi page multidocument understanding", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv is the platform where the preprint m3docrag was published", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year the m3docrag preprint was published", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "arxiv 2411 04952", + "entity_type": "FILE_TYPE", + "description": "arxiv 2411 04952 is the specific identifier for the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "multi modal retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "multi modal retrieval is the technique described as what is needed for multi page multidocument understanding in the m3docrag paper", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "multi page multidocument understanding", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi page multidocument understanding is the specific task or problem that the m3docrag system addresses", + "source_ids": [ + 201 + ] + }, + { + "entity_name": "arxiv preprint", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint is the type of publication venue where the m3docrag paper was released", + "source_ids": [ + 201 + ] + } + ], + "relations": [ + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "jaemin cho is an author of the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "debanjan mahata", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "debanjan mahata is an author of the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "ozan irsoy", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "ozan irsoy is an author of the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "yujie he", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "yujie he is an author of the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "mohit bansal", + "tgt_entity_name": "m3docrag", + "relation_name": "", + "weight": 10.0, + "description": "mohit bansal is an author of the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag was published as a preprint on arxiv", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag was published in the year 2024", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "arxiv 2411 04952", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag is identified by the file type arxiv 2411 04952", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "debanjan mahata", + "relation_name": "", + "weight": 8.0, + "description": "jaemin cho and debanjan mahata are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "ozan irsoy", + "relation_name": "", + "weight": 8.0, + "description": "jaemin cho and ozan irsoy are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "yujie he", + "relation_name": "", + "weight": 8.0, + "description": "jaemin cho and yujie he are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "jaemin cho", + "tgt_entity_name": "mohit bansal", + "relation_name": "", + "weight": 8.0, + "description": "jaemin cho and mohit bansal are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "debanjan mahata", + "tgt_entity_name": "ozan irsoy", + "relation_name": "", + "weight": 8.0, + "description": "debanjan mahata and ozan irsoy are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "debanjan mahata", + "tgt_entity_name": "yujie he", + "relation_name": "", + "weight": 8.0, + "description": "debanjan mahata and yujie he are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "debanjan mahata", + "tgt_entity_name": "mohit bansal", + "relation_name": "", + "weight": 8.0, + "description": "debanjan mahata and mohit bansal are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "ozan irsoy", + "tgt_entity_name": "yujie he", + "relation_name": "", + "weight": 8.0, + "description": "ozan irsoy and yujie he are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "ozan irsoy", + "tgt_entity_name": "mohit bansal", + "relation_name": "", + "weight": 8.0, + "description": "ozan irsoy and mohit bansal are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "yujie he", + "tgt_entity_name": "mohit bansal", + "relation_name": "", + "weight": 8.0, + "description": "yujie he and mohit bansal are co authors on the m3docrag preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "multi modal retrieval", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag utilizes multi modal retrieval as its core technique", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "multi page multidocument understanding", + "relation_name": "", + "weight": 10.0, + "description": "m3docrag is designed to solve the problem of multi page multidocument understanding", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "m3docrag", + "tgt_entity_name": "arxiv preprint", + "relation_name": "", + "weight": 9.0, + "description": "m3docrag was published as an arxiv preprint", + "source_ids": [ + 201 + ] + }, + { + "src_entity_name": "multi modal retrieval", + "tgt_entity_name": "multi page multidocument understanding", + "relation_name": "", + "weight": 8.0, + "description": "multi modal retrieval is identified as the necessary method for achieving multi page multidocument understanding", + "source_ids": [ + 201 + ] + } + ], + "node_idx": 201 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_202.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_202.json new file mode 100644 index 0000000..fc023aa --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_202.json @@ -0,0 +1,469 @@ +{ + "entities": [ + { + "entity_name": "vassilis christophides", + "entity_type": "PERSON", + "description": "vassilis christophides is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "vasilis efthymiou", + "entity_type": "PERSON", + "description": "vasilis efthymiou is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "themis palpanas", + "entity_type": "PERSON", + "description": "themis palpanas is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "george papadakis", + "entity_type": "PERSON", + "description": "george papadakis is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "kostas stefanidis", + "entity_type": "PERSON", + "description": "kostas stefanidis is an author of the 2020 paper on end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "2020", + "entity_type": "DATE", + "description": "2020 is the year the paper was published", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "acm computing surveys", + "entity_type": "PUBLICATION_VENUE", + "description": "acm computing surveys is the journal where the paper was published", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "an overview of end to end entity resolution for big data", + "entity_type": "BOOK", + "description": "an overview of end to end entity resolution for big data is the title of the paper discussed in the text", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "csur", + "entity_type": "PUBLICATION_VENUE", + "description": "csur is the abbreviation for acm computing surveys the journal where the paper was published", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "53", + "entity_type": "MEASUREMENT", + "description": "53 is the volume number of the journal acm computing surveys where the paper was published", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "6", + "entity_type": "MEASUREMENT", + "description": "6 is the issue number of the journal acm computing surveys where the paper was published", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "1 42", + "entity_type": "MEASUREMENT", + "description": "1 42 represents the page range of the paper within the journal", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "end to end entity resolution", + "entity_type": "TASK_OR_PROBLEM", + "description": "end to end entity resolution is the specific technical problem addressed in the paper", + "source_ids": [ + 202 + ] + }, + { + "entity_name": "big data", + "entity_type": "DATASET_OR_CORPUS", + "description": "big data is the domain or subject matter discussed in the paper", + "source_ids": [ + 202 + ] + } + ], + "relations": [ + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "vasilis efthymiou", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "themis palpanas", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "george papadakis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "kostas stefanidis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "vassilis christophides is an author of a paper published in 2020", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "vassilis christophides is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vassilis christophides", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "vassilis christophides is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "themis palpanas", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "george papadakis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "kostas stefanidis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "vasilis efthymiou is an author of a paper published in 2020", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "vasilis efthymiou is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "vasilis efthymiou", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "vasilis efthymiou is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "george papadakis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "kostas stefanidis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "themis palpanas is an author of a paper published in 2020", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "themis palpanas is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "themis palpanas", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "themis palpanas is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "george papadakis", + "tgt_entity_name": "kostas stefanidis", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "george papadakis", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "george papadakis is an author of a paper published in 2020", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "george papadakis", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "george papadakis is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "george papadakis", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "george papadakis is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "kostas stefanidis", + "tgt_entity_name": "2020", + "relation_name": "", + "weight": 8.0, + "description": "kostas stefanidis is an author of a paper published in 2020", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "kostas stefanidis", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 8.0, + "description": "kostas stefanidis is an author of a paper published in acm computing surveys", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "kostas stefanidis", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "kostas stefanidis is an author of the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "2020", + "tgt_entity_name": "acm computing surveys", + "relation_name": "", + "weight": 9.0, + "description": "the paper was published in acm computing surveys in the year 2020", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "2020", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "the paper titled an overview of end to end entity resolution for big data was published in 2020", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "an overview of end to end entity resolution for big data", + "relation_name": "", + "weight": 10.0, + "description": "acm computing surveys is the publication venue for the paper titled an overview of end to end entity resolution for big data", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "csur", + "relation_name": "", + "weight": 10.0, + "description": "csur is the abbreviation used for the publication venue acm computing surveys", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "53", + "relation_name": "", + "weight": 9.0, + "description": "the paper was published in volume 53 of acm computing surveys", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "6", + "relation_name": "", + "weight": 9.0, + "description": "the paper was published in issue 6 of acm computing surveys", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "acm computing surveys", + "tgt_entity_name": "1 42", + "relation_name": "", + "weight": 9.0, + "description": "the paper spans pages 1 42 in acm computing surveys", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "an overview of end to end entity resolution for big data", + "tgt_entity_name": "end to end entity resolution", + "relation_name": "", + "weight": 10.0, + "description": "the paper title indicates it provides an overview of the task of end to end entity resolution", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "an overview of end to end entity resolution for big data", + "tgt_entity_name": "big data", + "relation_name": "", + "weight": 10.0, + "description": "the paper title indicates it discusses the application of entity resolution to big data", + "source_ids": [ + 202 + ] + }, + { + "src_entity_name": "end to end entity resolution", + "tgt_entity_name": "big data", + "relation_name": "", + "weight": 8.0, + "description": "the text links the task of end to end entity resolution with the domain of big data", + "source_ids": [ + 202 + ] + } + ], + "node_idx": 202 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_203.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_203.json new file mode 100644 index 0000000..cfe9861 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_203.json @@ -0,0 +1,475 @@ +{ + "entities": [ + { + "entity_name": "gheorghe comanici", + "entity_type": "PERSON", + "description": "gheorghe comanici is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "eric bieber", + "entity_type": "PERSON", + "description": "eric bieber is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "mike schaekermann", + "entity_type": "PERSON", + "description": "mike schaekermann is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "ice pasupat", + "entity_type": "PERSON", + "description": "ice pasupat is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "noveen sachdeva", + "entity_type": "PERSON", + "description": "noveen sachdeva is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "inderjit dhillon", + "entity_type": "PERSON", + "description": "inderjit dhillon is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "marcel blistein", + "entity_type": "PERSON", + "description": "marcel blistein is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "ori ram", + "entity_type": "PERSON", + "description": "ori ram is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "dan zhang", + "entity_type": "PERSON", + "description": "dan zhang is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "evan rosen", + "entity_type": "PERSON", + "description": "evan rosen is listed as one of the authors of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "gemini 2 5", + "entity_type": "PRODUCT", + "description": "gemini 2 5 is a product described as pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv is the venue where the preprint is published", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "2025", + "entity_type": "DATE", + "description": "2025 is the year the paper was published", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "arxiv 2507 06261", + "entity_type": "FILE_TYPE", + "description": "arxiv 2507 06261 is the specific identifier for the preprint document", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "et al", + "entity_type": "PERSON", + "description": "et al indicates additional authors not explicitly listed in the text", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "advanced reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "advanced reasoning is a capability of gemini 2 5 mentioned in the text", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "multimodality", + "entity_type": "TASK_OR_PROBLEM", + "description": "multimodality is a capability of gemini 2 5 mentioned in the text", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "long context", + "entity_type": "TASK_OR_PROBLEM", + "description": "long context is a capability of gemini 2 5 mentioned in the text", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "next generation agentic capabilities", + "entity_type": "TASK_OR_PROBLEM", + "description": "next generation agentic capabilities are capabilities of gemini 2 5 mentioned in the text", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "gemini 2 5 pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities", + "entity_type": "BOOK", + "description": "gemini 2 5 pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities is the title of the paper", + "source_ids": [ + 203 + ] + }, + { + "entity_name": "arxiv preprint", + "entity_type": "FILE_TYPE", + "description": "arxiv preprint describes the type of document published", + "source_ids": [ + 203 + ] + } + ], + "relations": [ + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "gheorghe comanici is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "eric bieber", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "eric bieber is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "mike schaekermann", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "mike schaekermann is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "ice pasupat", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "ice pasupat is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "noveen sachdeva", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "noveen sachdeva is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "inderjit dhillon", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "inderjit dhillon is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "marcel blistein", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "marcel blistein is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "ori ram", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "ori ram is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "dan zhang", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "dan zhang is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "evan rosen", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 9.0, + "description": "evan rosen is an author of the paper describing gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici is an author of the paper published on arxiv", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the paper describing gemini 2 5 is published on arxiv", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 8.0, + "description": "gemini 2 5 is the subject of a paper published in 2025", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "arxiv 2507 06261", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 10.0, + "description": "arxiv 2507 06261 is the specific identifier for the paper on arxiv", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "eric bieber", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and eric bieber are co authors on the same paper", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "mike schaekermann", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and mike schaekermann are co authors on the same paper", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "ice pasupat", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and ice pasupat are co authors on the same paper", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "noveen sachdeva", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and noveen sachdeva are co authors on the same paper", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "inderjit dhillon", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and inderjit dhillon are co authors on the same paper", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "marcel blistein", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and marcel blistein are co authors on the same paper", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "ori ram", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and ori ram are co authors on the same paper", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "dan zhang", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and dan zhang are co authors on the same paper", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "evan rosen", + "relation_name": "", + "weight": 8.0, + "description": "gheorghe comanici and evan rosen are co authors on the same paper", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gheorghe comanici", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 9.0, + "description": "gheorghe comanici is listed before et al indicating they are among the authors represented by the abbreviation", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "advanced reasoning", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is described as having advanced reasoning capabilities", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "multimodality", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is described as having multimodality capabilities", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "long context", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is described as having long context capabilities", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gemini 2 5", + "tgt_entity_name": "next generation agentic capabilities", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is described as having next generation agentic capabilities", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "gemini 2 5 pushing the frontier with advanced reasoning multimodality long context and next generation agentic capabilities", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 10.0, + "description": "the title refers to the product gemini 2 5", + "source_ids": [ + 203 + ] + }, + { + "src_entity_name": "arxiv 2507 06261", + "tgt_entity_name": "arxiv preprint", + "relation_name": "", + "weight": 10.0, + "description": "arxiv 2507 06261 is identified as an arxiv preprint", + "source_ids": [ + 203 + ] + } + ], + "node_idx": 203 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_204.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_204.json new file mode 100644 index 0000000..f5c4695 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_204.json @@ -0,0 +1,273 @@ +{ + "entities": [ + { + "entity_name": "pradeep dasigi", + "entity_type": "PERSON", + "description": "pradeep dasigi is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "kyle lo", + "entity_type": "PERSON", + "description": "kyle lo is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "iz beltagy", + "entity_type": "PERSON", + "description": "iz beltagy is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "arman cohan", + "entity_type": "PERSON", + "description": "arman cohan is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "noah a smith", + "entity_type": "PERSON", + "description": "noah a smith is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "matt gardner", + "entity_type": "PERSON", + "description": "matt gardner is one of the authors of the 2021 arxiv preprint", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "entity_type": "PRODUCT", + "description": "a dataset of information seeking questions and answers anchored in research papers is the title of the work described in the text", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "arxiv preprint arxiv 2105 03011", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2105 03011 is the specific publication venue and identifier for the work", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "2021", + "entity_type": "DATE", + "description": "2021 is the year the preprint was published", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "research papers", + "entity_type": "DATASET_OR_CORPUS", + "description": "research papers are the source material from which the information seeking questions and answers are anchored", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "information seeking questions", + "entity_type": "TASK_OR_PROBLEM", + "description": "information seeking questions are the specific type of queries included in the dataset", + "source_ids": [ + 204 + ] + }, + { + "entity_name": "answers", + "entity_type": "TASK_OR_PROBLEM", + "description": "answers are the responses paired with the questions in the dataset", + "source_ids": [ + 204 + ] + } + ], + "relations": [ + { + "src_entity_name": "pradeep dasigi", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "pradeep dasigi is an author of the dataset work", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "kyle lo", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "kyle lo is an author of the dataset work", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "iz beltagy", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "iz beltagy is an author of the dataset work", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "arman cohan", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "arman cohan is an author of the dataset work", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "noah a smith", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "noah a smith is an author of the dataset work", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "matt gardner", + "tgt_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "relation_name": "", + "weight": 10.0, + "description": "matt gardner is an author of the dataset work", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "pradeep dasigi", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "pradeep dasigi is an author of the work published in this venue", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "kyle lo", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "kyle lo is an author of the work published in this venue", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "iz beltagy", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "iz beltagy is an author of the work published in this venue", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "arman cohan", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "arman cohan is an author of the work published in this venue", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "noah a smith", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "noah a smith is an author of the work published in this venue", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "matt gardner", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 9.0, + "description": "matt gardner is an author of the work published in this venue", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "arxiv preprint arxiv 2105 03011", + "relation_name": "", + "weight": 10.0, + "description": "the dataset work is published as the arxiv preprint arxiv 2105 03011", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "2021", + "relation_name": "", + "weight": 10.0, + "description": "the dataset work was published in the year 2021", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "research papers", + "relation_name": "", + "weight": 10.0, + "description": "the dataset is anchored in research papers meaning it derives its content from them", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "information seeking questions", + "relation_name": "", + "weight": 10.0, + "description": "the dataset consists of information seeking questions", + "source_ids": [ + 204 + ] + }, + { + "src_entity_name": "a dataset of information seeking questions and answers anchored in research papers", + "tgt_entity_name": "answers", + "relation_name": "", + "weight": 10.0, + "description": "the dataset consists of answers corresponding to the questions", + "source_ids": [ + 204 + ] + } + ], + "node_idx": 204 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_205.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_205.json new file mode 100644 index 0000000..ef7429b --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_205.json @@ -0,0 +1,237 @@ +{ + "entities": [ + { + "entity_name": "xavier daull", + "entity_type": "PERSON", + "description": "xavier daull is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ] + }, + { + "entity_name": "patrice bellot", + "entity_type": "PERSON", + "description": "patrice bellot is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ] + }, + { + "entity_name": "emmanuel bruno", + "entity_type": "PERSON", + "description": "emmanuel bruno is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ] + }, + { + "entity_name": "vincent martin", + "entity_type": "PERSON", + "description": "vincent martin is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ] + }, + { + "entity_name": "elisabeth murisasco", + "entity_type": "PERSON", + "description": "elisabeth murisasco is one of the authors of the 2023 survey on complex qa and language models hybrid architectures", + "source_ids": [ + 205 + ] + }, + { + "entity_name": "2023", + "entity_type": "DATE", + "description": "2023 is the year the survey was published and the year associated with the arxiv preprint", + "source_ids": [ + 205 + ] + }, + { + "entity_name": "arxiv preprint arxiv 2302 09051", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2302 09051 is the specific identifier for the preprint where the survey was published", + "source_ids": [ + 205 + ] + }, + { + "entity_name": "complex qa and language models hybrid architectures survey", + "entity_type": "BOOK", + "description": "complex qa and language models hybrid architectures survey is the title of the work authored by the listed individuals", + "source_ids": [ + 205 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "ORGANIZATION", + "description": "arxiv is the organization or platform hosting the preprint arxiv 2302 09051", + "source_ids": [ + 205 + ] + }, + { + "entity_name": "2302 09051", + "entity_type": "FILE_TYPE", + "description": "2302 09051 is the unique identifier code for the specific preprint document", + "source_ids": [ + 205 + ] + } + ], + "relations": [ + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "patrice bellot", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "emmanuel bruno", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "vincent martin", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "elisabeth murisasco", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "patrice bellot", + "tgt_entity_name": "emmanuel bruno", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "patrice bellot", + "tgt_entity_name": "vincent martin", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "patrice bellot", + "tgt_entity_name": "elisabeth murisasco", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "emmanuel bruno", + "tgt_entity_name": "vincent martin", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "emmanuel bruno", + "tgt_entity_name": "elisabeth murisasco", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "vincent martin", + "tgt_entity_name": "elisabeth murisasco", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same survey document", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 8.0, + "description": "xavier daull is an author of the work published in 2023", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "arxiv preprint arxiv 2302 09051", + "relation_name": "", + "weight": 8.0, + "description": "xavier daull is an author of the work identified by this preprint number", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "xavier daull", + "tgt_entity_name": "complex qa and language models hybrid architectures survey", + "relation_name": "", + "weight": 10.0, + "description": "xavier daull is the author of this specific survey title", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "arxiv preprint arxiv 2302 09051", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the preprint is hosted by the arxiv organization", + "source_ids": [ + 205 + ] + }, + { + "src_entity_name": "arxiv preprint arxiv 2302 09051", + "tgt_entity_name": "2302 09051", + "relation_name": "", + "weight": 10.0, + "description": "the preprint identifier contains the specific code 2302 09051", + "source_ids": [ + 205 + ] + } + ], + "node_idx": 205 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_206.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_206.json new file mode 100644 index 0000000..f9e4b6c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_206.json @@ -0,0 +1,735 @@ +{ + "entities": [ + { + "entity_name": "darren edge", + "entity_type": "PERSON", + "description": "darren edge is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "ha trinh", + "entity_type": "PERSON", + "description": "ha trinh is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "newman cheng", + "entity_type": "PERSON", + "description": "newman cheng is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "joshua bradley", + "entity_type": "PERSON", + "description": "joshua bradley is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "alex chao", + "entity_type": "PERSON", + "description": "alex chao is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "apurva mody", + "entity_type": "PERSON", + "description": "apurva mody is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "steven truitt", + "entity_type": "PERSON", + "description": "steven truitt is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "jonathan larson", + "entity_type": "PERSON", + "description": "jonathan larson is listed as one of the authors of the 2024 arxiv preprint", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year the arxiv preprint was published", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "from local to global a graph rag approach to query focused summarization", + "entity_type": "BOOK", + "description": "from local to global a graph rag approach to query focused summarization is the title of the arxiv preprint", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv is the venue where the preprint arxiv 2404 16130 was published", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "arxiv 2404 16130", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv 2404 16130 is the specific identifier for the preprint document", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "graph rag", + "entity_type": "TECHNOLOGY", + "description": "graph rag is a technology approach mentioned in the title of the paper as a method for query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "query focused summarization", + "entity_type": "TASK_OR_PROBLEM", + "description": "query focused summarization is the specific task or problem addressed by the graph rag approach in the paper", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "local", + "entity_type": "CONCEPT", + "description": "local refers to a scope or scale mentioned in the paper s title contrasting with global", + "source_ids": [ + 206 + ] + }, + { + "entity_name": "global", + "entity_type": "CONCEPT", + "description": "global refers to a scope or scale mentioned in the paper s title contrasting with local", + "source_ids": [ + 206 + ] + } + ], + "relations": [ + { + "src_entity_name": "darren edge", + "tgt_entity_name": "ha trinh", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "newman cheng", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "joshua bradley", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "alex chao", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "newman cheng", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "joshua bradley", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "alex chao", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "joshua bradley", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "alex chao", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "alex chao", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "apurva mody", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "steven truitt", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "steven truitt", + "tgt_entity_name": "jonathan larson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "darren edge is an author of a document published in 2024", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "ha trinh is an author of a document published in 2024", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "newman cheng is an author of a document published in 2024", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "joshua bradley is an author of a document published in 2024", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "alex chao is an author of a document published in 2024", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "apurva mody is an author of a document published in 2024", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "steven truitt", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "steven truitt is an author of a document published in 2024", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "jonathan larson", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "jonathan larson is an author of a document published in 2024", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "darren edge is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "ha trinh is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "newman cheng is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "joshua bradley is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "alex chao is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "apurva mody is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "steven truitt", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "steven truitt is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "jonathan larson", + "tgt_entity_name": "from local to global a graph rag approach to query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "jonathan larson is an author of the document titled from local to global a graph rag approach to query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "darren edge", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "darren edge is an author of a document published in arxiv", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "ha trinh", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "ha trinh is an author of a document published in arxiv", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "newman cheng", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "newman cheng is an author of a document published in arxiv", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "joshua bradley", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "joshua bradley is an author of a document published in arxiv", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "alex chao", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "alex chao is an author of a document published in arxiv", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "apurva mody", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "apurva mody is an author of a document published in arxiv", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "steven truitt", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "steven truitt is an author of a document published in arxiv", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "jonathan larson", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "jonathan larson is an author of a document published in arxiv", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "from local to global a graph rag approach to query focused summarization", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 10.0, + "description": "the document from local to global a graph rag approach to query focused summarization is published in arxiv", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "from local to global a graph rag approach to query focused summarization", + "tgt_entity_name": "arxiv 2404 16130", + "relation_name": "", + "weight": 10.0, + "description": "the document from local to global a graph rag approach to query focused summarization is identified by the preprint number arxiv 2404 16130", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "2024", + "tgt_entity_name": "arxiv 2404 16130", + "relation_name": "", + "weight": 9.0, + "description": "the preprint arxiv 2404 16130 was published in 2024", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "graph rag", + "tgt_entity_name": "query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "graph rag is the approach used to solve the task of query focused summarization", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "from local to global a graph rag approach to query focused summarization", + "tgt_entity_name": "graph rag", + "relation_name": "", + "weight": 10.0, + "description": "the paper title explicitly names graph rag as the core approach discussed", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "from local to global a graph rag approach to query focused summarization", + "tgt_entity_name": "query focused summarization", + "relation_name": "", + "weight": 10.0, + "description": "the paper title explicitly names query focused summarization as the target task", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "graph rag", + "tgt_entity_name": "local", + "relation_name": "", + "weight": 7.0, + "description": "the graph rag approach is described as a transition from local to global implying it handles local data", + "source_ids": [ + 206 + ] + }, + { + "src_entity_name": "graph rag", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 7.0, + "description": "the graph rag approach is described as a transition from local to global implying it handles global data", + "source_ids": [ + 206 + ] + } + ], + "node_idx": 206 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_207.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_207.json new file mode 100644 index 0000000..5c8dc17 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_207.json @@ -0,0 +1,655 @@ +{ + "entities": [ + { + "entity_name": "yunfan gao", + "entity_type": "PERSON", + "description": "yunfan gao is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "yun xiong", + "entity_type": "PERSON", + "description": "yun xiong is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "xinyu gao", + "entity_type": "PERSON", + "description": "xinyu gao is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "kangxiang jia", + "entity_type": "PERSON", + "description": "kangxiang jia is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "jinliu pan", + "entity_type": "PERSON", + "description": "jinliu pan is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "yuxi bi", + "entity_type": "PERSON", + "description": "yuxi bi is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "yi dai", + "entity_type": "PERSON", + "description": "yi dai is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "jiawei sun", + "entity_type": "PERSON", + "description": "jiawei sun is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "haofen wang", + "entity_type": "PERSON", + "description": "haofen wang is one of the authors of the 2023 survey on retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "2023", + "entity_type": "DATE", + "description": "2023 is the year the survey was published and the year associated with the arxiv preprint", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "retrieval augmented generation for large language models a survey", + "entity_type": "BOOK", + "description": "retrieval augmented generation for large language models a survey is the title of the document authored by the listed individuals", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "arxiv preprint arxiv 2312 10997", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv preprint arxiv 2312 10997 is the specific identifier and venue where the survey was published", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "retrieval augmented generation", + "entity_type": "TECHNOLOGY", + "description": "retrieval augmented generation is the specific technology discussed in the survey", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "large language models", + "entity_type": "TECHNOLOGY", + "description": "large language models are the subject of the survey and the technology being augmented", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "ORGANIZATION", + "description": "arxiv is the organization or platform hosting the preprint", + "source_ids": [ + 207 + ] + }, + { + "entity_name": "2312 10997", + "entity_type": "FILE_TYPE", + "description": "2312 10997 is the unique identifier code for the preprint document", + "source_ids": [ + 207 + ] + } + ], + "relations": [ + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "yunfan gao is an author of the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "yun xiong is an author of the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "xinyu gao is an author of the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "kangxiang jia is an author of the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "jinliu pan is an author of the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yuxi bi", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "yuxi bi is an author of the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yi dai", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "yi dai is an author of the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "jiawei sun", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "jiawei sun is an author of the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "haofen wang", + "tgt_entity_name": "retrieval augmented generation for large language models a survey", + "relation_name": "", + "weight": 10.0, + "description": "haofen wang is an author of the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "retrieval augmented generation for large language models a survey", + "tgt_entity_name": "2023", + "relation_name": "", + "weight": 9.0, + "description": "the survey was published in the year 2023", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "retrieval augmented generation for large language models a survey", + "tgt_entity_name": "arxiv preprint arxiv 2312 10997", + "relation_name": "", + "weight": 10.0, + "description": "the survey is identified as the arxiv preprint with the number 2312 10997", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "yun xiong", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and yun xiong are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "xinyu gao", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and xinyu gao are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "kangxiang jia", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and kangxiang jia are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "jinliu pan", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and jinliu pan are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yunfan gao", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "yunfan gao and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "xinyu gao", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and xinyu gao are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "kangxiang jia", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and kangxiang jia are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "jinliu pan", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and jinliu pan are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yun xiong", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "yun xiong and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "kangxiang jia", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and kangxiang jia are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "jinliu pan", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and jinliu pan are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "xinyu gao", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "xinyu gao and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "jinliu pan", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and jinliu pan are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "kangxiang jia", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "kangxiang jia and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "yuxi bi", + "relation_name": "", + "weight": 8.0, + "description": "jinliu pan and yuxi bi are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "jinliu pan and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "jinliu pan and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "jinliu pan", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "jinliu pan and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yuxi bi", + "tgt_entity_name": "yi dai", + "relation_name": "", + "weight": 8.0, + "description": "yuxi bi and yi dai are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yuxi bi", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "yuxi bi and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yuxi bi", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "yuxi bi and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yi dai", + "tgt_entity_name": "jiawei sun", + "relation_name": "", + "weight": 8.0, + "description": "yi dai and jiawei sun are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "yi dai", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "yi dai and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "jiawei sun", + "tgt_entity_name": "haofen wang", + "relation_name": "", + "weight": 8.0, + "description": "jiawei sun and haofen wang are co authors of the same survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 10.0, + "description": "retrieval augmented generation is applied to large language models as described in the survey", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "retrieval augmented generation for large language models a survey", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 9.0, + "description": "the survey is about the technology of retrieval augmented generation", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "retrieval augmented generation for large language models a survey", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 9.0, + "description": "the survey covers the topic of large language models", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "arxiv preprint arxiv 2312 10997", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 10.0, + "description": "the preprint is hosted by arxiv", + "source_ids": [ + 207 + ] + }, + { + "src_entity_name": "arxiv preprint arxiv 2312 10997", + "tgt_entity_name": "2312 10997", + "relation_name": "", + "weight": 10.0, + "description": "2312 10997 is the specific identifier for the arxiv preprint", + "source_ids": [ + 207 + ] + } + ], + "node_idx": 207 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_208.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_208.json new file mode 100644 index 0000000..fc6d5f9 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_208.json @@ -0,0 +1,353 @@ +{ + "entities": [ + { + "entity_name": "zirui guo", + "entity_type": "PERSON", + "description": "zirui guo is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "lianghao xia", + "entity_type": "PERSON", + "description": "lianghao xia is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "yanhua yu", + "entity_type": "PERSON", + "description": "yanhua yu is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "tu ao", + "entity_type": "PERSON", + "description": "tu ao is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "chao huang", + "entity_type": "PERSON", + "description": "chao huang is listed as an author of the paper titled lightrag", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "lightrag", + "entity_type": "PRODUCT", + "description": "lightrag is a retrieval augmented generation system described as simple and fast", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "arxiv e prints", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv e prints is the publication venue where the paper was released in 2024", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year the paper was published and the date associated with the arxiv identifier", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "arxiv2410", + "entity_type": "FILE_TYPE", + "description": "arxiv2410 is the specific identifier for the paper on arxiv", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "retrieval augmented generation", + "entity_type": "TECHNOLOGY", + "description": "retrieval augmented generation is the technology category that lightrag belongs to as described in the text", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "simple", + "entity_type": "CONCEPT", + "description": "simple is an attribute used to describe the lightrag system", + "source_ids": [ + 208 + ] + }, + { + "entity_name": "fast", + "entity_type": "CONCEPT", + "description": "fast is an attribute used to describe the lightrag system", + "source_ids": [ + 208 + ] + } + ], + "relations": [ + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "zirui guo is an author of the lightrag paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "lianghao xia is an author of the lightrag paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "yanhua yu", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "yanhua yu is an author of the lightrag paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "tu ao", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "tu ao is an author of the lightrag paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "chao huang", + "tgt_entity_name": "lightrag", + "relation_name": "", + "weight": 10.0, + "description": "chao huang is an author of the lightrag paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "arxiv e prints", + "relation_name": "", + "weight": 9.0, + "description": "lightrag was published in arxiv e prints", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "lightrag was published in the year 2024", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "arxiv2410", + "relation_name": "", + "weight": 9.0, + "description": "lightrag is identified by the arxiv identifier arxiv2410", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "lianghao xia", + "relation_name": "", + "weight": 8.0, + "description": "zirui guo and lianghao xia are co authors on the same paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "tu ao", + "relation_name": "", + "weight": 8.0, + "description": "zirui guo and tu ao are co authors on the same paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "chao huang", + "relation_name": "", + "weight": 8.0, + "description": "zirui guo and chao huang are co authors on the same paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "yanhua yu", + "relation_name": "", + "weight": 8.0, + "description": "lianghao xia and yanhua yu are co authors on the same paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "tu ao", + "relation_name": "", + "weight": 8.0, + "description": "lianghao xia and tu ao are co authors on the same paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "chao huang", + "relation_name": "", + "weight": 8.0, + "description": "lianghao xia and chao huang are co authors on the same paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "yanhua yu", + "tgt_entity_name": "tu ao", + "relation_name": "", + "weight": 8.0, + "description": "yanhua yu and tu ao are co authors on the same paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "yanhua yu", + "tgt_entity_name": "chao huang", + "relation_name": "", + "weight": 8.0, + "description": "yanhua yu and chao huang are co authors on the same paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "tu ao", + "tgt_entity_name": "chao huang", + "relation_name": "", + "weight": 8.0, + "description": "tu ao and chao huang are co authors on the same paper", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 10.0, + "description": "lightrag is a type of retrieval augmented generation system", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "simple", + "relation_name": "", + "weight": 8.0, + "description": "lightrag is described as being simple", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lightrag", + "tgt_entity_name": "fast", + "relation_name": "", + "weight": 8.0, + "description": "lightrag is described as being fast", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "zirui guo", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "zirui guo is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "lianghao xia", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "lianghao xia is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "yanhua yu", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "yanhua yu is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "tu ao", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "tu ao is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ] + }, + { + "src_entity_name": "chao huang", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 7.0, + "description": "chao huang is an author of a paper about retrieval augmented generation", + "source_ids": [ + 208 + ] + } + ], + "node_idx": 208 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_209.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_209.json new file mode 100644 index 0000000..32872aa --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_209.json @@ -0,0 +1,285 @@ +{ + "entities": [ + { + "entity_name": "bernal jim nez guti rrez", + "entity_type": "PERSON", + "description": "bernal jim nez guti rrez is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "yiheng shu", + "entity_type": "PERSON", + "description": "yiheng shu is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "yu gu", + "entity_type": "PERSON", + "description": "yu gu is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "michihiro yasunaga", + "entity_type": "PERSON", + "description": "michihiro yasunaga is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "yu su", + "entity_type": "PERSON", + "description": "yu su is one of the authors of the paper titled hipporag", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "hipporag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "hipporag is a neurobiologically inspired long term memory system designed for large language models", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv is the venue where the preprint of the paper was published", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year the paper was published", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "arxiv 2405 14831", + "entity_type": "FILE_TYPE", + "description": "arxiv 2405 14831 is the specific identifier for the preprint document", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "large language models", + "entity_type": "PRODUCT", + "description": "large language models are the target systems for which hipporag is designed as a memory solution", + "source_ids": [ + 209 + ] + }, + { + "entity_name": "neurobiologically inspired long term memory", + "entity_type": "TASK_OR_PROBLEM", + "description": "neurobiologically inspired long term memory is the specific problem domain or concept that hipporag addresses", + "source_ids": [ + 209 + ] + } + ], + "relations": [ + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "bernal jim nez guti rrez is an author of the paper describing hipporag", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "yiheng shu", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "yiheng shu is an author of the paper describing hipporag", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "yu gu", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "yu gu is an author of the paper describing hipporag", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "michihiro yasunaga", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "michihiro yasunaga is an author of the paper describing hipporag", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "yu su", + "tgt_entity_name": "hipporag", + "relation_name": "", + "weight": 9.0, + "description": "yu su is an author of the paper describing hipporag", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 10.0, + "description": "the paper describing hipporag was published as a preprint on arxiv", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 10.0, + "description": "the paper describing hipporag was published in the year 2024", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "yiheng shu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "yu gu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "michihiro yasunaga", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "bernal jim nez guti rrez", + "tgt_entity_name": "yu su", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "yiheng shu", + "tgt_entity_name": "yu gu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "yiheng shu", + "tgt_entity_name": "michihiro yasunaga", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "yiheng shu", + "tgt_entity_name": "yu su", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "yu gu", + "tgt_entity_name": "michihiro yasunaga", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "yu gu", + "tgt_entity_name": "yu su", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "michihiro yasunaga", + "tgt_entity_name": "yu su", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 10.0, + "description": "hipporag is explicitly designed to provide long term memory capabilities for large language models", + "source_ids": [ + 209 + ] + }, + { + "src_entity_name": "hipporag", + "tgt_entity_name": "neurobiologically inspired long term memory", + "relation_name": "", + "weight": 10.0, + "description": "hipporag is defined as a system for neurobiologically inspired long term memory", + "source_ids": [ + 209 + ] + } + ], + "node_idx": 209 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_21.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_21.json new file mode 100644 index 0000000..517288c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_21.json @@ -0,0 +1,205 @@ +{ + "entities": [ + { + "entity_name": "kg", + "entity_type": "CONCEPT", + "description": "kg refers to a knowledge graph which is a data structure used for multi hop reasoning", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "llm", + "entity_type": "PRODUCT", + "description": "llm is an example of a distinct entity name mentioned in the context of entity ambiguity", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "large language model", + "entity_type": "PRODUCT", + "description": "large language model is an example of a distinct entity name mentioned in the context of entity ambiguity", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "gradient based entity resolution method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the gradient based entity resolution method is a novel approach proposed to address entity ambiguity by analyzing similarity distributions", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "multi hop reasoning", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi hop reasoning is a task that relies on a high quality knowledge graph", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "entity ambiguity", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity ambiguity is a problem where distinct entities share similar names compromising the knowledge graph", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "similarity distribution", + "entity_type": "CONCEPT", + "description": "similarity distribution is the data pattern analyzed by the proposed method to identify sharp drops in scores", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "candidate entities", + "entity_type": "CONCEPT", + "description": "candidate entities are the potential matches analyzed to distinguish and merge coreferent entities", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "coreferent entities", + "entity_type": "CONCEPT", + "description": "coreferent entities are distinct entities that refer to the same real world object and need to be merged", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "graph connectivity", + "entity_type": "CONCEPT", + "description": "graph connectivity is a property of the knowledge graph that is ensured by the proposed method", + "source_ids": [ + 21 + ] + }, + { + "entity_name": "reasoning capabilities", + "entity_type": "CONCEPT", + "description": "reasoning capabilities are the skills of the system that are enhanced by the proposed method", + "source_ids": [ + 21 + ] + } + ], + "relations": [ + { + "src_entity_name": "kg", + "tgt_entity_name": "gradient based entity resolution method", + "relation_name": "", + "weight": 9.0, + "description": "the gradient based entity resolution method is proposed to ensure the high quality of the kg by resolving entity ambiguity", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "large language model", + "relation_name": "", + "weight": 8.0, + "description": "llm and large language model are cited as examples of distinct entities that cause ambiguity in the kg", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "multi hop reasoning", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 10.0, + "description": "multi hop reasoning relies on a high quality kg for its execution", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "entity ambiguity", + "relation_name": "", + "weight": 9.0, + "description": "entity ambiguity compromises the quality of the kg", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "similarity distribution", + "relation_name": "", + "weight": 9.0, + "description": "the method analyzes the similarity distribution of candidate entities to function", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "candidate entities", + "relation_name": "", + "weight": 9.0, + "description": "the method analyzes candidate entities to identify sharp drops in similarity scores", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "coreferent entities", + "relation_name": "", + "weight": 10.0, + "description": "the method distinguishes and merges coreferent entities", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "graph connectivity", + "relation_name": "", + "weight": 8.0, + "description": "the method ensures graph connectivity by resolving entity ambiguity", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "gradient based entity resolution method", + "tgt_entity_name": "reasoning capabilities", + "relation_name": "", + "weight": 8.0, + "description": "the method enhances reasoning capabilities by improving the kg", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "entity ambiguity", + "relation_name": "", + "weight": 7.0, + "description": "llm is an example of a name that contributes to entity ambiguity", + "source_ids": [ + 21 + ] + }, + { + "src_entity_name": "large language model", + "tgt_entity_name": "entity ambiguity", + "relation_name": "", + "weight": 7.0, + "description": "large language model is an example of a name that contributes to entity ambiguity", + "source_ids": [ + 21 + ] + } + ], + "node_idx": 21 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_210.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_210.json new file mode 100644 index 0000000..64d74e8 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_210.json @@ -0,0 +1,105 @@ +{ + "entities": [ + { + "entity_name": "taher h haveliwala", + "entity_type": "PERSON", + "description": "taher h haveliwala is the author of the paper titled topic sensitive pagerank", + "source_ids": [ + 210 + ] + }, + { + "entity_name": "2002", + "entity_type": "DATE", + "description": "2002 is the year the paper topic sensitive pagerank was published", + "source_ids": [ + 210 + ] + }, + { + "entity_name": "topic sensitive pagerank", + "entity_type": "TECHNOLOGY", + "description": "topic sensitive pagerank is the title of a paper presented at a conference", + "source_ids": [ + 210 + ] + }, + { + "entity_name": "11th international conference on world wide web", + "entity_type": "EVENT", + "description": "the 11th international conference on world wide web is the venue where the paper was presented", + "source_ids": [ + 210 + ] + }, + { + "entity_name": "world wide web", + "entity_type": "TECHNOLOGY", + "description": "world wide web is the technology platform associated with the conference where the paper was presented", + "source_ids": [ + 210 + ] + }, + { + "entity_name": "517 526", + "entity_type": "MEASUREMENT", + "description": "517 526 represents the page range of the paper in the conference proceedings", + "source_ids": [ + 210 + ] + } + ], + "relations": [ + { + "src_entity_name": "taher h haveliwala", + "tgt_entity_name": "topic sensitive pagerank", + "relation_name": "", + "weight": 10.0, + "description": "taher h haveliwala is the author of the paper topic sensitive pagerank", + "source_ids": [ + 210 + ] + }, + { + "src_entity_name": "topic sensitive pagerank", + "tgt_entity_name": "11th international conference on world wide web", + "relation_name": "", + "weight": 9.0, + "description": "the paper topic sensitive pagerank was presented at the 11th international conference on world wide web", + "source_ids": [ + 210 + ] + }, + { + "src_entity_name": "taher h haveliwala", + "tgt_entity_name": "2002", + "relation_name": "", + "weight": 8.0, + "description": "taher h haveliwala published the paper in the year 2002", + "source_ids": [ + 210 + ] + }, + { + "src_entity_name": "11th international conference on world wide web", + "tgt_entity_name": "world wide web", + "relation_name": "", + "weight": 9.0, + "description": "the conference is named after and focused on the world wide web technology", + "source_ids": [ + 210 + ] + }, + { + "src_entity_name": "topic sensitive pagerank", + "tgt_entity_name": "517 526", + "relation_name": "", + "weight": 8.0, + "description": "the paper topic sensitive pagerank spans pages 517 to 526 in the proceedings", + "source_ids": [ + 210 + ] + } + ], + "node_idx": 210 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_211.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_211.json new file mode 100644 index 0000000..d1037ab --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_211.json @@ -0,0 +1,575 @@ +{ + "entities": [ + { + "entity_name": "xiaoxin he", + "entity_type": "PERSON", + "description": "xiaoxin he is listed as one of the authors of the paper", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "yijun tian", + "entity_type": "PERSON", + "description": "yijun tian is listed as one of the authors of the paper", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "yifei sun", + "entity_type": "PERSON", + "description": "yifei sun is listed as one of the authors of the paper", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "nitesh v chawla", + "entity_type": "PERSON", + "description": "nitesh v chawla is listed as one of the authors of the paper", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "thomas laurent", + "entity_type": "PERSON", + "description": "thomas laurent is listed as one of the authors of the paper", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "yann lecun", + "entity_type": "PERSON", + "description": "yann lecun is listed as one of the authors of the paper", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "xavier bresson", + "entity_type": "PERSON", + "description": "xavier bresson is listed as one of the authors of the paper", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "bryan hooi", + "entity_type": "PERSON", + "description": "bryan hooi is listed as one of the authors of the paper", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "g retriever", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "g retriever is a retrieval augmented generation model for textual graph understanding and question answering", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year the paper was published and the year associated with the arxiv preprint", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "arxiv 2402 07630", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv 2402 07630 is the identifier for the preprint publication", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv is the platform where the preprint is hosted", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "retrieval augmented generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "retrieval augmented generation is the technique used by g retriever for textual graph understanding", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "textual graph understanding", + "entity_type": "TASK_OR_PROBLEM", + "description": "textual graph understanding is a specific task addressed by the g retriever model", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "question answering", + "entity_type": "TASK_OR_PROBLEM", + "description": "question answering is a specific task addressed by the g retriever model", + "source_ids": [ + 211 + ] + }, + { + "entity_name": "arxiv preprint", + "entity_type": "FILE_TYPE", + "description": "arxiv preprint is the type of document in which the work was published", + "source_ids": [ + 211 + ] + } + ], + "relations": [ + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "yijun tian", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "yifei sun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "nitesh v chawla", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "thomas laurent", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "yifei sun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "nitesh v chawla", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "thomas laurent", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "nitesh v chawla", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "thomas laurent", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "thomas laurent", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "thomas laurent", + "tgt_entity_name": "yann lecun", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "thomas laurent", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "thomas laurent", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yann lecun", + "tgt_entity_name": "xavier bresson", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yann lecun", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "xavier bresson", + "tgt_entity_name": "bryan hooi", + "relation_name": "", + "weight": 9.0, + "description": "listed as co authors on the same paper", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 8.0, + "description": "g retriever was published in the year 2024", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "arxiv 2402 07630", + "relation_name": "", + "weight": 9.0, + "description": "g retriever is identified by the preprint number arxiv 2402 07630", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "g retriever is published on the arxiv platform", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "xiaoxin he", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "xiaoxin he is an author of the paper describing g retriever", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yijun tian", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "yijun tian is an author of the paper describing g retriever", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yifei sun", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "yifei sun is an author of the paper describing g retriever", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "nitesh v chawla", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "nitesh v chawla is an author of the paper describing g retriever", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "thomas laurent", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "thomas laurent is an author of the paper describing g retriever", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "yann lecun", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "yann lecun is an author of the paper describing g retriever", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "xavier bresson", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "xavier bresson is an author of the paper describing g retriever", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "bryan hooi", + "tgt_entity_name": "g retriever", + "relation_name": "", + "weight": 10.0, + "description": "bryan hooi is an author of the paper describing g retriever", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 10.0, + "description": "g retriever utilizes the retrieval augmented generation method", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "textual graph understanding", + "relation_name": "", + "weight": 10.0, + "description": "g retriever is designed to solve the problem of textual graph understanding", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 10.0, + "description": "g retriever is designed to solve the problem of question answering", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "arxiv 2402 07630", + "tgt_entity_name": "arxiv preprint", + "relation_name": "", + "weight": 9.0, + "description": "arxiv 2402 07630 is an instance of an arxiv preprint", + "source_ids": [ + 211 + ] + }, + { + "src_entity_name": "g retriever", + "tgt_entity_name": "arxiv preprint", + "relation_name": "", + "weight": 9.0, + "description": "g retriever is published as an arxiv preprint", + "source_ids": [ + 211 + ] + } + ], + "node_idx": 211 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_212.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_212.json new file mode 100644 index 0000000..c24ec86 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_212.json @@ -0,0 +1,141 @@ +{ + "entities": [ + { + "entity_name": "yucheng hu", + "entity_type": "PERSON", + "description": "yucheng hu is one of the authors of the 2024 survey on retrieval augmented language models", + "source_ids": [ + 212 + ] + }, + { + "entity_name": "yuxing lu", + "entity_type": "PERSON", + "description": "yuxing lu is one of the authors of the 2024 survey on retrieval augmented language models", + "source_ids": [ + 212 + ] + }, + { + "entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "entity_type": "BOOK", + "description": "rag and rau is the title of a survey paper published in 2024", + "source_ids": [ + 212 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv is the preprint server where the survey paper was published", + "source_ids": [ + 212 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year the survey paper was published", + "source_ids": [ + 212 + ] + }, + { + "entity_name": "natural language processing", + "entity_type": "RESEARCH_FIELD", + "description": "natural language processing is the field of study addressed by the survey paper", + "source_ids": [ + 212 + ] + }, + { + "entity_name": "arxiv 2404 19543", + "entity_type": "PRODUCT", + "description": "arxiv 2404 19543 is the specific identifier for the preprint paper mentioned in the text", + "source_ids": [ + 212 + ] + }, + { + "entity_name": "retrieval augmented language model", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "retrieval augmented language model is the specific technology subject of the survey", + "source_ids": [ + 212 + ] + } + ], + "relations": [ + { + "src_entity_name": "yucheng hu", + "tgt_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "relation_name": "", + "weight": 10.0, + "description": "yucheng hu is an author of the survey paper", + "source_ids": [ + 212 + ] + }, + { + "src_entity_name": "yuxing lu", + "tgt_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "relation_name": "", + "weight": 10.0, + "description": "yuxing lu is an author of the survey paper", + "source_ids": [ + 212 + ] + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper was published on the arxiv preprint server", + "source_ids": [ + 212 + ] + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper was published in the year 2024", + "source_ids": [ + 212 + ] + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "natural language processing", + "relation_name": "", + "weight": 8.0, + "description": "the survey paper focuses on the research field of natural language processing", + "source_ids": [ + 212 + ] + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "arxiv 2404 19543", + "relation_name": "", + "weight": 10.0, + "description": "the survey paper is identified by the preprint number arxiv 2404 19543", + "source_ids": [ + 212 + ] + }, + { + "src_entity_name": "rag and rau a survey on retrieval augmented language model in natural language processing", + "tgt_entity_name": "retrieval augmented language model", + "relation_name": "", + "weight": 9.0, + "description": "the survey paper is about the retrieval augmented language model technology", + "source_ids": [ + 212 + ] + } + ], + "node_idx": 212 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_213.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_213.json new file mode 100644 index 0000000..db0ba35 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_213.json @@ -0,0 +1,187 @@ +{ + "entities": [ + { + "entity_name": "soyeong jeong", + "entity_type": "PERSON", + "description": "soyeong jeong is an author of the 2024 arxiv preprint titled adaptive rag", + "source_ids": [ + 213 + ] + }, + { + "entity_name": "jinheon baek", + "entity_type": "PERSON", + "description": "jinheon baek is an author of the 2024 arxiv preprint titled adaptive rag", + "source_ids": [ + 213 + ] + }, + { + "entity_name": "adaptive rag", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "adaptive rag is a model described as learning to adapt retrieval augmented large language models through question complexity", + "source_ids": [ + 213 + ] + }, + { + "entity_name": "retrieval augmented large language models", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "retrieval augmented large language models are the subject of adaptation in the adaptive rag study", + "source_ids": [ + 213 + ] + }, + { + "entity_name": "arxiv", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv is the venue where the preprint arxiv 2403 14403 was published", + "source_ids": [ + 213 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year the preprint was published and the year associated with the authors work", + "source_ids": [ + 213 + ] + }, + { + "entity_name": "arxiv 2403 14403", + "entity_type": "PUBLICATION_VENUE", + "description": "arxiv 2403 14403 is the specific identifier for the preprint document", + "source_ids": [ + 213 + ] + }, + { + "entity_name": "et al", + "entity_type": "PERSON", + "description": "et al refers to additional authors of the paper not explicitly named in the text", + "source_ids": [ + 213 + ] + }, + { + "entity_name": "question complexity", + "entity_type": "TASK_OR_PROBLEM", + "description": "question complexity is the factor through which adaptive rag learns to adapt models", + "source_ids": [ + 213 + ] + }, + { + "entity_name": "learning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "learning is the process by which adaptive rag adapts to question complexity", + "source_ids": [ + 213 + ] + } + ], + "relations": [ + { + "src_entity_name": "soyeong jeong", + "tgt_entity_name": "adaptive rag", + "relation_name": "", + "weight": 9.0, + "description": "soyeong jeong is an author of the work on adaptive rag", + "source_ids": [ + 213 + ] + }, + { + "src_entity_name": "jinheon baek", + "tgt_entity_name": "adaptive rag", + "relation_name": "", + "weight": 9.0, + "description": "jinheon baek is an author of the work on adaptive rag", + "source_ids": [ + 213 + ] + }, + { + "src_entity_name": "adaptive rag", + "tgt_entity_name": "retrieval augmented large language models", + "relation_name": "", + "weight": 10.0, + "description": "adaptive rag is designed to adapt retrieval augmented large language models", + "source_ids": [ + 213 + ] + }, + { + "src_entity_name": "soyeong jeong", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "soyeong jeong s work was published on arxiv", + "source_ids": [ + 213 + ] + }, + { + "src_entity_name": "jinheon baek", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 8.0, + "description": "jinheon baek s work was published on arxiv", + "source_ids": [ + 213 + ] + }, + { + "src_entity_name": "adaptive rag", + "tgt_entity_name": "arxiv", + "relation_name": "", + "weight": 9.0, + "description": "the adaptive rag preprint is hosted on arxiv", + "source_ids": [ + 213 + ] + }, + { + "src_entity_name": "soyeong jeong", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 9.0, + "description": "soyeong jeong is listed alongside et al as authors of the paper", + "source_ids": [ + 213 + ] + }, + { + "src_entity_name": "jinheon baek", + "tgt_entity_name": "et al", + "relation_name": "", + "weight": 9.0, + "description": "jinheon baek is listed alongside et al as authors of the paper", + "source_ids": [ + 213 + ] + }, + { + "src_entity_name": "adaptive rag", + "tgt_entity_name": "question complexity", + "relation_name": "", + "weight": 10.0, + "description": "adaptive rag adapts specifically through the lens of question complexity", + "source_ids": [ + 213 + ] + }, + { + "src_entity_name": "adaptive rag", + "tgt_entity_name": "learning", + "relation_name": "", + "weight": 8.0, + "description": "adaptive rag utilizes learning to adapt its retrieval mechanisms", + "source_ids": [ + 213 + ] + } + ], + "node_idx": 213 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_214.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_214.json new file mode 100644 index 0000000..298bd8f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_214.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "13", + "entity_type": "NUMBER", + "description": "13 is a number mentioned in the text though its specific context or role is not defined", + "source_ids": [ + 214 + ] + } + ], + "relations": [], + "node_idx": 214 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_215.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_215.json new file mode 100644 index 0000000..9dea28c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_215.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "table: node 215...", + "entity_type": "TABLE", + "description": "A table with no available description.", + "source_ids": [ + 215 + ] + } + ], + "relations": [], + "node_idx": 215 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_216.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_216.json new file mode 100644 index 0000000..be743f5 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_216.json @@ -0,0 +1,537 @@ +{ + "entities": [ + { + "entity_name": "timo schick", + "entity_type": "PERSON", + "description": "timo schick is listed as one of the authors of the document", + "source_ids": [ + 216 + ] + }, + { + "entity_name": "jane dwivedi yu", + "entity_type": "PERSON", + "description": "jane dwivedi yu is listed as one of the authors of the document", + "source_ids": [ + 216 + ] + }, + { + "entity_name": "roberto dess", + "entity_type": "PERSON", + "description": "roberto dess is listed as one of the authors of the document", + "source_ids": [ + 216 + ] + }, + { + "entity_name": "roberta raileanu", + "entity_type": "PERSON", + "description": "roberta raileanu is listed as one of the authors of the document", + "source_ids": [ + 216 + ] + }, + { + "entity_name": "maria lomeli", + "entity_type": "PERSON", + "description": "maria lomeli is listed as one of the authors of the document", + "source_ids": [ + 216 + ] + }, + { + "entity_name": "eric hambro", + "entity_type": "PERSON", + "description": "eric hambro is listed as one of the authors of the document", + "source_ids": [ + 216 + ] + }, + { + "entity_name": "luke zettlemoyer", + "entity_type": "PERSON", + "description": "luke zettlemoyer is listed as one of the authors of the document", + "source_ids": [ + 216 + ] + }, + { + "entity_name": "nicola cancedda", + "entity_type": "PERSON", + "description": "nicola cancedda is listed as one of the authors of the document", + "source_ids": [ + 216 + ] + }, + { + "entity_name": "thomas scialom", + "entity_type": "PERSON", + "description": "thomas scialom is listed as one of the authors of the document", + "source_ids": [ + 216 + ] + }, + { + "entity_name": "2024", + "entity_type": "DATE", + "description": "2024 is the year associated with the publication or work by the listed authors", + "source_ids": [ + 216 + ] + } + ], + "relations": [ + { + "src_entity_name": "timo schick", + "tgt_entity_name": "jane dwivedi yu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "roberto dess", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "roberta raileanu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "maria lomeli", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "roberto dess", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "roberta raileanu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "maria lomeli", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "roberta raileanu", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "maria lomeli", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "maria lomeli", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "eric hambro", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "eric hambro", + "tgt_entity_name": "luke zettlemoyer", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "eric hambro", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "eric hambro", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "luke zettlemoyer", + "tgt_entity_name": "nicola cancedda", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "luke zettlemoyer", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "nicola cancedda", + "tgt_entity_name": "thomas scialom", + "relation_name": "", + "weight": 8.0, + "description": "listed as co authors on the same document", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "timo schick", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "timo schick is an author of the work published in 2024", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "jane dwivedi yu", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "jane dwivedi yu is an author of the work published in 2024", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberto dess", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "roberto dess is an author of the work published in 2024", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "roberta raileanu", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "roberta raileanu is an author of the work published in 2024", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "maria lomeli", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "maria lomeli is an author of the work published in 2024", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "eric hambro", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "eric hambro is an author of the work published in 2024", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "luke zettlemoyer", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "luke zettlemoyer is an author of the work published in 2024", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "nicola cancedda", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "nicola cancedda is an author of the work published in 2024", + "source_ids": [ + 216 + ] + }, + { + "src_entity_name": "thomas scialom", + "tgt_entity_name": "2024", + "relation_name": "", + "weight": 9.0, + "description": "thomas scialom is an author of the work published in 2024", + "source_ids": [ + 216 + ] + } + ], + "node_idx": 216 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_217.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_217.json new file mode 100644 index 0000000..ce64aa5 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_217.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "table: node 217...", + "entity_type": "TABLE", + "description": "A table with no available description.", + "source_ids": [ + 217 + ] + } + ], + "relations": [], + "node_idx": 217 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_218.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_218.json new file mode 100644 index 0000000..4885642 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_218.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "table: node 218...", + "entity_type": "TABLE", + "description": "A table with no available description.", + "source_ids": [ + 218 + ] + } + ], + "relations": [], + "node_idx": 218 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_219.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_219.json new file mode 100644 index 0000000..4319f0f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_219.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "14", + "entity_type": "MEASUREMENT", + "description": "14 is a numerical value mentioned in the text potentially representing a measurement or count", + "source_ids": [ + 219 + ] + } + ], + "relations": [], + "node_idx": 219 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_22.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_22.json new file mode 100644 index 0000000..56c42a1 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_22.json @@ -0,0 +1,207 @@ +{ + "entities": [ + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is a system or component that serves as the foundation for the described agent based retrieval approach", + "source_ids": [ + 22 + ] + }, + { + "entity_name": "information foraging theory", + "entity_type": "SCIENTIFIC_THEORY", + "description": "information foraging theory is the theoretical framework grounding the retrieval process described in the text", + "source_ids": [ + 22 + ] + }, + { + "entity_name": "selector", + "entity_type": "SOFTWARE", + "description": "selector is a component used to narrow down the search space via information scents", + "source_ids": [ + 22 + ] + }, + { + "entity_name": "reasoner", + "entity_type": "SOFTWARE", + "description": "reasoner is a component used to locate highly relevant evidence", + "source_ids": [ + 22 + ] + }, + { + "entity_name": "user queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "user queries are the input items that the agent classifies based on intent and complexity", + "source_ids": [ + 22 + ] + }, + { + "entity_name": "retrieval workflows", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval workflows are the static processes being addressed and dynamically generated by the agent", + "source_ids": [ + 22 + ] + }, + { + "entity_name": "search space", + "entity_type": "TASK_OR_PROBLEM", + "description": "the search space is the area narrowed down by the selector component", + "source_ids": [ + 22 + ] + }, + { + "entity_name": "information scents", + "entity_type": "CONCEPT", + "description": "information scents are the signals used by the selector to narrow down the search space", + "source_ids": [ + 22 + ] + }, + { + "entity_name": "evidence", + "entity_type": "CONCEPT", + "description": "evidence refers to the highly relevant information located by the reasoner", + "source_ids": [ + 22 + ] + }, + { + "entity_name": "agent", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 22 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookindex", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 8.0, + "description": "the system builds upon bookindex to implement an agent that uses selector for retrieval workflows", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 8.0, + "description": "the system builds upon bookindex to implement an agent that uses reasoner for retrieval workflows", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "the retrieval process using selector is grounded in information foraging theory", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "the retrieval process using reasoner is grounded in information foraging theory", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "selector and reasoner work together within the agent based retrieval process to narrow search space and locate evidence", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "user queries", + "tgt_entity_name": "retrieval workflows", + "relation_name": "", + "weight": 9.0, + "description": "user queries are classified to dynamically generate tailored retrieval workflows", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "user queries", + "relation_name": "", + "weight": 10.0, + "description": "the agent classifies user queries based on their intent and complexity", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "retrieval workflows", + "relation_name": "", + "weight": 10.0, + "description": "the agent dynamically generates tailored retrieval workflows", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "search space", + "relation_name": "", + "weight": 9.0, + "description": "the selector narrows down the search space", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "information scents", + "relation_name": "", + "weight": 9.0, + "description": "the selector uses information scents to narrow down the search space", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "evidence", + "relation_name": "", + "weight": 9.0, + "description": "the reasoner locates highly relevant evidence", + "source_ids": [ + 22 + ] + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "retrieval workflows", + "relation_name": "", + "weight": 8.0, + "description": "the retrieval process mimics foraging as described by information foraging theory", + "source_ids": [ + 22 + ] + } + ], + "node_idx": 22 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_220.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_220.json new file mode 100644 index 0000000..d1487f9 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_220.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "a experimental details", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section provides the specific configuration, setup, and parameters used to conduct the experiments described in the study.", + "source_ids": [ + 220 + ] + } + ], + "relations": [], + "node_idx": 220 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_221.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_221.json new file mode 100644 index 0000000..f4274b4 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_221.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "a.1 evaluation metrics", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' within the paper 'BookRAG', this section defines the specific quantitative measures used to assess the performance of the retrieval-augmented generation system.", + "source_ids": [ + 221 + ] + }, + { + "entity_name": "accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "A primary metric discussed in section A.1, defined as the proportion of cases where the set of named entities in the model's response is a subset of those in the ground truth.", + "source_ids": [ + 221 + ] + } + ], + "relations": [ + { + "src_entity_name": "accuracy", + "tgt_entity_name": "a.1 evaluation metrics", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Accuracy' is a specific evaluation metric detailed as a topic within section A.1.", + "source_ids": [ + 221 + ] + } + ], + "node_idx": 221 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_222.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_222.json new file mode 100644 index 0000000..d84e405 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_222.json @@ -0,0 +1,89 @@ +{ + "entities": [ + { + "entity_name": "main experiments", + "entity_type": "EVENT", + "description": "main experiments are the primary experiments for which metrics are defined and calculated in the text", + "source_ids": [ + 222 + ] + }, + { + "entity_name": "metrics", + "entity_type": "EVALUATION_METRIC", + "description": "metrics are the specific measures defined and calculated in the text for the main experiments", + "source_ids": [ + 222 + ] + }, + { + "entity_name": "definitions", + "entity_type": "CONCEPT", + "description": "definitions are the detailed descriptions provided for the metrics in the text", + "source_ids": [ + 222 + ] + }, + { + "entity_name": "calculation procedures", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "calculation procedures are the step by step methods described for computing the metrics", + "source_ids": [ + 222 + ] + } + ], + "relations": [ + { + "src_entity_name": "main experiments", + "tgt_entity_name": "main experiments", + "relation_name": "", + "weight": 1.0, + "description": "the text refers to the metrics used in the main experiments implying a self referential context for the definitions", + "source_ids": [ + 222 + ] + }, + { + "src_entity_name": "metrics", + "tgt_entity_name": "main experiments", + "relation_name": "", + "weight": 10.0, + "description": "metrics are explicitly stated to be used in the main experiments", + "source_ids": [ + 222 + ] + }, + { + "src_entity_name": "definitions", + "tgt_entity_name": "metrics", + "relation_name": "", + "weight": 9.0, + "description": "definitions are provided for the metrics", + "source_ids": [ + 222 + ] + }, + { + "src_entity_name": "calculation procedures", + "tgt_entity_name": "metrics", + "relation_name": "", + "weight": 9.0, + "description": "calculation procedures are provided for the metrics", + "source_ids": [ + 222 + ] + }, + { + "src_entity_name": "definitions", + "tgt_entity_name": "calculation procedures", + "relation_name": "", + "weight": 8.0, + "description": "both definitions and calculation procedures are provided together for the metrics in the text", + "source_ids": [ + 222 + ] + } + ], + "node_idx": 222 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_223.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_223.json new file mode 100644 index 0000000..851d8da --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_223.json @@ -0,0 +1,133 @@ +{ + "entities": [ + { + "entity_name": "standard rag models", + "entity_type": "TECHNOLOGY", + "description": "standard rag models are described as systems that generate free form natural language responses", + "source_ids": [ + 223 + ] + }, + { + "entity_name": "natural language responses", + "entity_type": "PRODUCT", + "description": "natural language responses are the output generated by standard rag models often containing extraneous conversational text", + "source_ids": [ + 223 + ] + }, + { + "entity_name": "ground truth labels", + "entity_type": "PRODUCT", + "description": "ground truth labels are concise reference answers e g option a or 12 5 used for comparison against model outputs", + "source_ids": [ + 223 + ] + }, + { + "entity_name": "a 1 1 answer extraction and normalization", + "entity_type": "SECTION_TITLE", + "description": "a 1 1 answer extraction and normalization is the title of the section discussing the process of extracting and normalizing answers", + "source_ids": [ + 223 + ] + }, + { + "entity_name": "option a", + "entity_type": "PRODUCT", + "description": "option a is an example of a concise ground truth label mentioned in the text", + "source_ids": [ + 223 + ] + }, + { + "entity_name": "12 5", + "entity_type": "MEASUREMENT", + "description": "12 5 is an example of a concise ground truth label mentioned in the text", + "source_ids": [ + 223 + ] + }, + { + "entity_name": "the answer is", + "entity_type": "PRODUCT", + "description": "the answer is is an example of extraneous conversational text that may appear in raw model outputs", + "source_ids": [ + 223 + ] + } + ], + "relations": [ + { + "src_entity_name": "standard rag models", + "tgt_entity_name": "natural language responses", + "relation_name": "", + "weight": 10.0, + "description": "standard rag models generate natural language responses as their output", + "source_ids": [ + 223 + ] + }, + { + "src_entity_name": "natural language responses", + "tgt_entity_name": "ground truth labels", + "relation_name": "", + "weight": 8.0, + "description": "natural language responses are compared against ground truth labels a process that can lead to false negatives if not normalized", + "source_ids": [ + 223 + ] + }, + { + "src_entity_name": "a 1 1 answer extraction and normalization", + "tgt_entity_name": "standard rag models", + "relation_name": "", + "weight": 9.0, + "description": "the section a 1 1 answer extraction and normalization describes the behavior of standard rag models", + "source_ids": [ + 223 + ] + }, + { + "src_entity_name": "a 1 1 answer extraction and normalization", + "tgt_entity_name": "ground truth labels", + "relation_name": "", + "weight": 9.0, + "description": "the section a 1 1 answer extraction and normalization discusses the comparison with ground truth labels", + "source_ids": [ + 223 + ] + }, + { + "src_entity_name": "ground truth labels", + "tgt_entity_name": "option a", + "relation_name": "", + "weight": 10.0, + "description": "option a is cited as an example of a ground truth label", + "source_ids": [ + 223 + ] + }, + { + "src_entity_name": "ground truth labels", + "tgt_entity_name": "12 5", + "relation_name": "", + "weight": 10.0, + "description": "12 5 is cited as an example of a ground truth label", + "source_ids": [ + 223 + ] + }, + { + "src_entity_name": "natural language responses", + "tgt_entity_name": "the answer is", + "relation_name": "", + "weight": 10.0, + "description": "the answer is is cited as an example of the extraneous conversational text found in natural language responses", + "source_ids": [ + 223 + ] + } + ], + "node_idx": 223 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_224.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_224.json new file mode 100644 index 0000000..4f77ed2 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_224.json @@ -0,0 +1,285 @@ +{ + "entities": [ + { + "entity_name": "llm based extraction step", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "llm based extraction step is a method used to align model output with the ground truth format before calculation", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "rag system", + "entity_type": "SYSTEM", + "description": "rag system is the system that generates the raw response denoted as y raw", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "llmextract", + "entity_type": "SOFTWARE", + "description": "llmextract is a component or function that extracts key information from the raw response", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "y raw", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "y raw denotes the raw response generated by the rag system", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "y gold", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "y gold denotes the ground truth", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "y hat", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "y hat denotes the extracted answer", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "n", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "n is a standard normalization function applied to y hat and y gold", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "equation 16", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 16 defines the relationship between the extracted answer the raw response and the instruction", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "official evaluation protocols", + "entity_type": "TASK_OR_PROBLEM", + "description": "official evaluation protocols are the standards followed to ensure the extraction step aligns with the ground truth format", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "ground truth", + "entity_type": "CONCEPT", + "description": "ground truth refers to the correct or expected answer used as a benchmark for evaluation", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "key information", + "entity_type": "CONCEPT", + "description": "key information refers to the essential data such as key entities for span extraction that llmextract retrieves", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "key entity", + "entity_type": "CONCEPT", + "description": "key entity is an example of the key information extracted for span extraction", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "span extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "span extraction is a specific task mentioned as an example of where key entities are extracted", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "lowercasing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "lowercasing is a standard normalization technique applied to the text", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "removing punctuation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "removing punctuation is a standard normalization technique applied to the text", + "source_ids": [ + 224 + ] + }, + { + "entity_name": "instruction", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "instruction is a parameter provided to the llmextract function to guide the extraction process", + "source_ids": [ + 224 + ] + } + ], + "relations": [ + { + "src_entity_name": "llm based extraction step", + "tgt_entity_name": "rag system", + "relation_name": "", + "weight": 9.0, + "description": "the llm based extraction step is employed to process the output from the rag system", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "y raw", + "relation_name": "", + "weight": 10.0, + "description": "llmextract extracts key information from y raw", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "y hat", + "relation_name": "", + "weight": 10.0, + "description": "llmextract is used to define the extracted answer y hat", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "n", + "tgt_entity_name": "y hat", + "relation_name": "", + "weight": 9.0, + "description": "n is applied to normalize y hat", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "n", + "tgt_entity_name": "y gold", + "relation_name": "", + "weight": 9.0, + "description": "n is applied to normalize y gold", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "y raw", + "tgt_entity_name": "y gold", + "relation_name": "", + "weight": 8.0, + "description": "y raw and y gold are compared after normalization to calculate the evaluation metric", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "equation 16", + "tgt_entity_name": "llmextract", + "relation_name": "", + "weight": 9.0, + "description": "equation 16 utilizes llmextract to define the extracted answer", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "official evaluation protocols", + "tgt_entity_name": "llm based extraction step", + "relation_name": "", + "weight": 9.0, + "description": "the llm based extraction step is employed following official evaluation protocols", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "llm based extraction step", + "tgt_entity_name": "ground truth", + "relation_name": "", + "weight": 9.0, + "description": "the llm based extraction step aligns the model output with the ground truth format", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "key information", + "relation_name": "", + "weight": 10.0, + "description": "llmextract is responsible for extracting key information from the raw response", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "key entity", + "relation_name": "", + "weight": 8.0, + "description": "key entity is a specific type of key information extracted by llmextract", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "span extraction", + "relation_name": "", + "weight": 8.0, + "description": "span extraction is the context in which llmextract extracts key entities", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "n", + "tgt_entity_name": "lowercasing", + "relation_name": "", + "weight": 9.0, + "description": "lowercasing is an example of the standard normalization n applied to the data", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "n", + "tgt_entity_name": "removing punctuation", + "relation_name": "", + "weight": 9.0, + "description": "removing punctuation is an example of the standard normalization n applied to the data", + "source_ids": [ + 224 + ] + }, + { + "src_entity_name": "llmextract", + "tgt_entity_name": "instruction", + "relation_name": "", + "weight": 10.0, + "description": "llmextract uses the instruction parameter to perform the extraction", + "source_ids": [ + 224 + ] + } + ], + "node_idx": 224 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_225.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_225.json new file mode 100644 index 0000000..d9c3fd4 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_225.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (16)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the predicted output y_hat as a function of raw input and instruction. LaTeX: ˆ 𝑦 = LLMextract ( 𝑦 𝑟𝑎𝑤 , Instruction ) (16)", + "source_ids": [ + 225 + ] + } + ], + "relations": [], + "node_idx": 225 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_226.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_226.json new file mode 100644 index 0000000..349485e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_226.json @@ -0,0 +1,105 @@ +{ + "entities": [ + { + "entity_name": "a.1.2 qa performance metrics", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' within the BookRAG paper, this section defines the specific metrics used to evaluate Question Answering performance, detailing the calculation of Accuracy based on substring inclusion between ground truth and model responses.", + "source_ids": [ + 226 + ] + }, + { + "entity_name": "qa performance metrics", + "entity_type": "EVALUATION_METRIC", + "description": "Refers to the set of quantitative measures defined in section A.1.2 for assessing the quality of answers generated by the model.", + "source_ids": [ + 226 + ] + }, + { + "entity_name": "accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "A specific metric defined in section A.1.2 that calculates correctness based on whether the normalized ground truth is a substring of the normalized raw response.", + "source_ids": [ + 226 + ] + }, + { + "entity_name": "ground truth (y_gold)", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The reference answer or expected output used as the baseline for calculating accuracy in section A.1.2.", + "source_ids": [ + 226 + ] + }, + { + "entity_name": "model response (y_raw)", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The raw output generated by the model, which is compared against the ground truth in section A.1.2.", + "source_ids": [ + 226 + ] + }, + { + "entity_name": "substring inclusion relation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The logical operation (denoted by ⊆) used in section A.1.2 to determine if one text sequence is contained within another for the purpose of evaluation.", + "source_ids": [ + 226 + ] + } + ], + "relations": [ + { + "src_entity_name": "qa performance metrics", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'QA Performance Metrics' is the primary topic covered in section A.1.2.", + "source_ids": [ + 226 + ] + }, + { + "src_entity_name": "accuracy", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 10.0, + "description": "The metric 'Accuracy' is explicitly defined and detailed within section A.1.2.", + "source_ids": [ + 226 + ] + }, + { + "src_entity_name": "ground truth (y_gold)", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 9.5, + "description": "The variable 'Ground Truth' is a fundamental component used in the definitions provided in section A.1.2.", + "source_ids": [ + 226 + ] + }, + { + "src_entity_name": "model response (y_raw)", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 9.5, + "description": "The variable 'Model Response' is a fundamental component used in the definitions provided in section A.1.2.", + "source_ids": [ + 226 + ] + }, + { + "src_entity_name": "substring inclusion relation", + "tgt_entity_name": "a.1.2 qa performance metrics", + "relation_name": "", + "weight": 9.0, + "description": "The technique 'Substring Inclusion Relation' is the core logic applied in section A.1.2 to compute the metrics.", + "source_ids": [ + 226 + ] + } + ], + "node_idx": 226 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_227.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_227.json new file mode 100644 index 0000000..fff2ceb --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_227.json @@ -0,0 +1,107 @@ +{ + "entities": [ + { + "entity_name": "accuracy inclusion based", + "entity_type": "EVALUATION_METRIC", + "description": "accuracy inclusion based is a soft match metric used to evaluate model predictions by checking if the normalized gold answer is included in the generated response", + "source_ids": [ + 227 + ] + }, + { + "entity_name": "llm", + "entity_type": "TECHNOLOGY", + "description": "llm refers to large language models the type of technology whose generation nature is described as uncontrollable in the text", + "source_ids": [ + 227 + ] + }, + { + "entity_name": "prior works", + "entity_type": "PUBLICATION_VENUE", + "description": "prior works refer to previous research studies cited in the text as a basis for the methodology", + "source_ids": [ + 227 + ] + }, + { + "entity_name": "3", + "entity_type": "PUBLICATION_VENUE", + "description": "3 is a citation number referring to a specific prior work mentioned in the text", + "source_ids": [ + 227 + ] + }, + { + "entity_name": "34", + "entity_type": "PUBLICATION_VENUE", + "description": "34 is a citation number referring to a specific prior work mentioned in the text", + "source_ids": [ + 227 + ] + }, + { + "entity_name": "46", + "entity_type": "PUBLICATION_VENUE", + "description": "46 is a citation number referring to a specific prior work mentioned in the text", + "source_ids": [ + 227 + ] + }, + { + "entity_name": "soft match metric", + "entity_type": "EVALUATION_METRIC", + "description": "soft match metric is a category of evaluation methods described as being used in the text", + "source_ids": [ + 227 + ] + }, + { + "entity_name": "normalized gold answer", + "entity_type": "DATASET_OR_CORPUS", + "description": "normalized gold answer is the reference data used to determine if a prediction is correct", + "source_ids": [ + 227 + ] + }, + { + "entity_name": "model s generated response", + "entity_type": "PRODUCT", + "description": "model s generated response is the output produced by the model being evaluated", + "source_ids": [ + 227 + ] + }, + { + "entity_name": "strict exact match", + "entity_type": "EVALUATION_METRIC", + "description": "strict exact match is a comparison method explicitly contrasted with the soft match metric in the text", + "source_ids": [ + 227 + ] + } + ], + "relations": [ + { + "src_entity_name": "accuracy inclusion based", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "accuracy inclusion based is utilized to account for the uncontrollable nature of llm generation", + "source_ids": [ + 227 + ] + }, + { + "src_entity_name": "accuracy inclusion based", + "tgt_entity_name": "prior works", + "relation_name": "", + "weight": 9.0, + "description": "accuracy inclusion based is utilized following prior works cited as 3 34 46", + "source_ids": [ + 227 + ] + } + ], + "node_idx": 227 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_228.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_228.json new file mode 100644 index 0000000..9ee5a17 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_228.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (17)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the Accuracy metric as the average of an indicator function comparing neighborhood sets. LaTeX: Accuracy = 1 𝑁 𝑁 ∑︁ 𝑖 = 1 I (N( 𝑦 𝑔𝑜𝑙𝑑,𝑖 ) ⊆ N( 𝑦 𝑟𝑎𝑤,𝑖 )) (17)", + "source_ids": [ + 228 + ] + } + ], + "relations": [], + "node_idx": 228 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_229.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_229.json new file mode 100644 index 0000000..2dc3ec7 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_229.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "exact match", + "entity_type": "EVALUATION_METRIC", + "description": "exact match is a strict metric that measures whether the normalized extracted answer is character for character identical to the ground truth", + "source_ids": [ + 229 + ] + }, + { + "entity_name": "accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "accuracy is mentioned as a metric that is contrasted with exact match implying it is less strict", + "source_ids": [ + 229 + ] + } + ], + "relations": [ + { + "src_entity_name": "exact match", + "tgt_entity_name": "accuracy", + "relation_name": "", + "weight": 9.0, + "description": "exact match is described as being stricter than accuracy", + "source_ids": [ + 229 + ] + } + ], + "node_idx": 229 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_23.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_23.json new file mode 100644 index 0000000..ba307da --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_23.json @@ -0,0 +1,183 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system or product being evaluated for its effectiveness and efficiency in retrieval and qa tasks", + "source_ids": [ + 23 + ] + }, + { + "entity_name": "kg", + "entity_type": "PRODUCT", + "description": "kg refers to a high quality knowledge graph identified as a key feature contributing to the system s performance", + "source_ids": [ + 23 + ] + }, + { + "entity_name": "agent based retrieval mechanism", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the agent based retrieval mechanism is a key feature of the system validated for its critical contributions", + "source_ids": [ + 23 + ] + }, + { + "entity_name": "retrieval recall", + "entity_type": "EVALUATION_METRIC", + "description": "retrieval recall is a metric used to measure the performance of the system", + "source_ids": [ + 23 + ] + }, + { + "entity_name": "qa accuracy", + "entity_type": "EVALUATION_METRIC", + "description": "qa accuracy is a metric used to measure the performance of the system", + "source_ids": [ + 23 + ] + }, + { + "entity_name": "three widely adopted datasets", + "entity_type": "DATASET_OR_CORPUS", + "description": "three widely adopted datasets are the data sources used to conduct extensive experiments and validate the system", + "source_ids": [ + 23 + ] + }, + { + "entity_name": "state of the art baselines", + "entity_type": "PRODUCT", + "description": "state of the art baselines are the existing systems against which bookrag is compared in the experiments", + "source_ids": [ + 23 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes a high quality kg as a key feature contributing to its performance", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based retrieval mechanism", + "relation_name": "", + "weight": 9.0, + "description": "bookrag employs an agent based retrieval mechanism as a key feature contributing to its performance", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 10.0, + "description": "bookrag achieves superior performance in retrieval recall as demonstrated by experimental results", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 10.0, + "description": "bookrag achieves superior performance in qa accuracy as demonstrated by experimental results", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 7.0, + "description": "the high quality kg is a feature that contributes to the performance in retrieval recall", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "agent based retrieval mechanism", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 7.0, + "description": "the agent based retrieval mechanism is a feature that contributes to the performance in qa accuracy", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "three widely adopted datasets", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is extensively experimented upon using three widely adopted datasets to validate its effectiveness", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "state of the art baselines", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is compared against several state of the art baselines to demonstrate its superior performance", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "three widely adopted datasets", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 8.0, + "description": "the three widely adopted datasets are used to measure the retrieval recall performance of the system", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "three widely adopted datasets", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 8.0, + "description": "the three widely adopted datasets are used to measure the qa accuracy performance of the system", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "state of the art baselines", + "tgt_entity_name": "retrieval recall", + "relation_name": "", + "weight": 7.0, + "description": "state of the art baselines are evaluated on retrieval recall to compare against bookrag", + "source_ids": [ + 23 + ] + }, + { + "src_entity_name": "state of the art baselines", + "tgt_entity_name": "qa accuracy", + "relation_name": "", + "weight": 7.0, + "description": "state of the art baselines are evaluated on qa accuracy to compare against bookrag", + "source_ids": [ + 23 + ] + } + ], + "node_idx": 23 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_230.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_230.json new file mode 100644 index 0000000..3836b28 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_230.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (18)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the Error Metric (EM) as the average of indicator functions comparing predicted and ground truth labels. LaTeX: EM = 1 𝑁 𝑁 ∑︁ 𝑖 = 1 I (N( ˆ 𝑦 𝑖 ) = N( 𝑦 𝑔𝑜𝑙𝑑,𝑖 )) (18)", + "source_ids": [ + 230 + ] + } + ], + "relations": [], + "node_idx": 230 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_231.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_231.json new file mode 100644 index 0000000..9cc1b9e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_231.json @@ -0,0 +1,95 @@ +{ + "entities": [ + { + "entity_name": "f1 score", + "entity_type": "EVALUATION_METRIC", + "description": "f1 score is an evaluation metric used to measure the performance of text span answers by comparing extracted answers to ground truth", + "source_ids": [ + 231 + ] + }, + { + "entity_name": "token level f1 score", + "entity_type": "EVALUATION_METRIC", + "description": "token level f1 score is a specific type of f1 score used for questions requiring text span answers", + "source_ids": [ + 231 + ] + }, + { + "entity_name": "p", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "p represents precision calculated as the intersection of extracted and ground truth tokens divided by the extracted tokens", + "source_ids": [ + 231 + ] + }, + { + "entity_name": "r", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "r represents recall calculated as the intersection of extracted and ground truth tokens divided by the ground truth tokens", + "source_ids": [ + 231 + ] + }, + { + "entity_name": "f1", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "f1 is the harmonic mean of precision p and recall r calculated using the formula 2 p r p r", + "source_ids": [ + 231 + ] + }, + { + "entity_name": "equation 19", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 19 defines the calculation for the f1 score based on precision and recall", + "source_ids": [ + 231 + ] + } + ], + "relations": [ + { + "src_entity_name": "f1 score", + "tgt_entity_name": "token level f1 score", + "relation_name": "", + "weight": 9.0, + "description": "the token level f1 score is a specific application of the f1 score for text span answers", + "source_ids": [ + 231 + ] + }, + { + "src_entity_name": "f1 score", + "tgt_entity_name": "equation 19", + "relation_name": "", + "weight": 10.0, + "description": "equation 19 provides the mathematical formula for calculating the f1 score", + "source_ids": [ + 231 + ] + }, + { + "src_entity_name": "p", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 10.0, + "description": "p precision is a component used in the calculation of the f1 score", + "source_ids": [ + 231 + ] + }, + { + "src_entity_name": "r", + "tgt_entity_name": "f1", + "relation_name": "", + "weight": 10.0, + "description": "r recall is a component used in the calculation of the f1 score", + "source_ids": [ + 231 + ] + } + ], + "node_idx": 231 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_232.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_232.json new file mode 100644 index 0000000..2b1d256 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_232.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (19)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining Precision, Recall, and F1 score metrics using set intersections. LaTeX: 𝑃 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 ˆ 𝑦 | , 𝑅 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 𝑔𝑜𝑙𝑑 | , F1 = 2 · 𝑃 · 𝑅 𝑃 + 𝑅 (19)", + "source_ids": [ + 232 + ] + } + ], + "relations": [], + "node_idx": 232 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_233.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_233.json new file mode 100644 index 0000000..0a2e027 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_233.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "15", + "entity_type": "MEASUREMENT", + "description": "15 is a numerical value mentioned in the text potentially representing a measurement or count", + "source_ids": [ + 233 + ] + } + ], + "relations": [], + "node_idx": 233 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_234.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_234.json new file mode 100644 index 0000000..b65b11a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_234.json @@ -0,0 +1,123 @@ +{ + "entities": [ + { + "entity_name": "a.1.3 retrieval recall", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' within the 'BookRAG' paper, this section defines the Retrieval Recall metric used to evaluate retrieval quality based on parsed PDF block granularity (paragraphs, tables, images).", + "source_ids": [ + 234 + ] + }, + { + "entity_name": "retrieval quality", + "entity_type": "EVALUATION_METRIC", + "description": "The specific aspect of system performance being measured in this section, assessed via the granularity of retrieved blocks.", + "source_ids": [ + 234 + ] + }, + { + "entity_name": "pdf blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "The fundamental units of data (paragraphs, tables, images) from which ground-truth and retrieved sets are constructed for evaluation.", + "source_ids": [ + 234 + ] + }, + { + "entity_name": "query q", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The input query variable used to define the set of required ground-truth blocks.", + "source_ids": [ + 234 + ] + }, + { + "entity_name": "b_gold", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The set of manually labeled ground-truth blocks required to answer a given query.", + "source_ids": [ + 234 + ] + }, + { + "entity_name": "b_ret", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "The set of unique blocks retrieved by the system for a given query.", + "source_ids": [ + 234 + ] + }, + { + "entity_name": "recall_ret", + "entity_type": "EVALUATION_METRIC", + "description": "The specific mathematical formula defined in this section to calculate retrieval recall, handling parsing errors.", + "source_ids": [ + 234 + ] + } + ], + "relations": [ + { + "src_entity_name": "retrieval quality", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 9.5, + "description": "Retrieval Quality is the primary concept evaluated within section A.1.3.", + "source_ids": [ + 234 + ] + }, + { + "src_entity_name": "pdf blocks", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "PDF Blocks serve as the granular units of analysis for the evaluation described in section A.1.3.", + "source_ids": [ + 234 + ] + }, + { + "src_entity_name": "query q", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 8.5, + "description": "The variable 'Query q' is a key parameter defined in the context of section A.1.3.", + "source_ids": [ + 234 + ] + }, + { + "src_entity_name": "b_gold", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "The variable 'B_gold' represents the ground truth set utilized in the definition provided in section A.1.3.", + "source_ids": [ + 234 + ] + }, + { + "src_entity_name": "b_ret", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 9.0, + "description": "The variable 'B_ret' represents the retrieved set utilized in the definition provided in section A.1.3.", + "source_ids": [ + 234 + ] + }, + { + "src_entity_name": "recall_ret", + "tgt_entity_name": "a.1.3 retrieval recall", + "relation_name": "", + "weight": 10.0, + "description": "The metric 'Recall_ret' is the central formula and subject explicitly defined in section A.1.3.", + "source_ids": [ + 234 + ] + } + ], + "node_idx": 234 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_235.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_235.json new file mode 100644 index 0000000..ffe5c09 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_235.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (20)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the recall metric r_et as a conditional value based on parsing errors and set intersections. LaTeX: Recall 𝑟𝑒𝑡 = ( 0 if parsing error occurs on B 𝑔𝑜𝑙𝑑 | B 𝑟𝑒𝑡 ∩B 𝑔𝑜𝑙𝑑 | | B 𝑔𝑜𝑙𝑑 | otherwise (20)", + "source_ids": [ + 235 + ] + } + ], + "relations": [], + "node_idx": 235 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_236.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_236.json new file mode 100644 index 0000000..6ef9409 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_236.json @@ -0,0 +1,87 @@ +{ + "entities": [ + { + "entity_name": "pdf", + "entity_type": "FILE_TYPE", + "description": "pdf is a file format mentioned in the context of parsing failures", + "source_ids": [ + 236 + ] + }, + { + "entity_name": "ground truth block", + "entity_type": "TASK_OR_PROBLEM", + "description": "a ground truth block is a specific unit of data that may be lost during parsing", + "source_ids": [ + 236 + ] + }, + { + "entity_name": "candidate pool", + "entity_type": "DATASET_OR_CORPUS", + "description": "the candidate pool is a collection of items from which blocks are retrieved", + "source_ids": [ + 236 + ] + }, + { + "entity_name": "recall", + "entity_type": "EVALUATION_METRIC", + "description": "recall is an evaluation metric used to measure the contribution of retrieved blocks", + "source_ids": [ + 236 + ] + }, + { + "entity_name": "0", + "entity_type": "NUMBER", + "description": "0 is the specific numerical value representing the recall contribution when a block is lost", + "source_ids": [ + 236 + ] + } + ], + "relations": [ + { + "src_entity_name": "ground truth block", + "tgt_entity_name": "pdf", + "relation_name": "", + "weight": 9.0, + "description": "a ground truth block can be lost due to pdf parsing failures", + "source_ids": [ + 236 + ] + }, + { + "src_entity_name": "ground truth block", + "tgt_entity_name": "candidate pool", + "relation_name": "", + "weight": 9.0, + "description": "a ground truth block is considered unretrievable if it does not exist in the candidate pool", + "source_ids": [ + 236 + ] + }, + { + "src_entity_name": "ground truth block", + "tgt_entity_name": "recall", + "relation_name": "", + "weight": 10.0, + "description": "the loss of a ground truth block results in a recall contribution of 0", + "source_ids": [ + 236 + ] + }, + { + "src_entity_name": "recall", + "tgt_entity_name": "0", + "relation_name": "", + "weight": 10.0, + "description": "the recall contribution is explicitly stated as 0 when a ground truth block is lost", + "source_ids": [ + 236 + ] + } + ], + "node_idx": 236 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_237.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_237.json new file mode 100644 index 0000000..eb27b17 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_237.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "a.2 implementation details", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' and following 'Evaluation Metrics', this section provides the specific technical configurations, software environments, and parameter settings used to realize the BookRAG system.", + "source_ids": [ + 237 + ] + } + ], + "relations": [], + "node_idx": 237 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_238.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_238.json new file mode 100644 index 0000000..0b7eeec --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_238.json @@ -0,0 +1,861 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system implemented in python for robust document layout parsing", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "python", + "entity_type": "PROGRAMMING_LANGUAGE", + "description": "python is the programming language used to implement bookrag", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "mineru", + "entity_type": "SOFTWARE", + "description": "mineru is a tool utilized for robust document layout parsing", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "qwen family", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "the qwen family is a set of state of the art backbone models used to power bookrag and baseline methods", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "llm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "llm refers to large language models a type of model within the qwen family used in the experiments", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "vlm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "vlm stands for vision language model a type of model within the qwen family used in the experiments", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "embedding models", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "embedding models are a type of model within the qwen family used for text and multi modal embedding", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "qwen3 8b", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen3 8b is the default llm used in the experiments", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "qwen2 5vl 30b", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen2 5vl 30b is the vision language model vlm used in the experiments", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "qwen3 embedding 0 6b", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen3 embedding 0 6b is the model used for text embedding", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "gme qwen2 vl 2b instruct", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "gme qwen2 vl 2b instruct is the model used for multi modal embedding", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "qwen3 reranker 4b", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "qwen3 reranker 4b is the model used for reranking", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "linux", + "entity_type": "SOFTWARE", + "description": "linux is the operating system on which the experiments were conducted", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "intel xeon 2 0ghz cpu", + "entity_type": "HARDWARE", + "description": "intel xeon 2 0ghz cpu is the processor used in the high performance server", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "nvidia geforce rtx a5000", + "entity_type": "HARDWARE", + "description": "nvidia geforce rtx a5000 is the gpu model used in the high performance server", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "1024gb", + "entity_type": "MEASUREMENT", + "description": "1024gb refers to the amount of memory in the server", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "24 gb", + "entity_type": "MEASUREMENT", + "description": "24 gb refers to the vram capacity of each gpu", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "500 tokens", + "entity_type": "MEASUREMENT", + "description": "500 tokens is the standardized chunk size used for document chunking", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "10", + "entity_type": "MEASUREMENT", + "description": "10 is the retrieval top k value set for consistent candidate pool sizes", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "10b parameter scale", + "entity_type": "MEASUREMENT", + "description": "10b parameter scale is the size range of models primarily selected to balance efficiency and effectiveness", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "30b version", + "entity_type": "MEASUREMENT", + "description": "the 30b version refers to the specific size of the vlm adopted due to performance deficits in the 8b counterpart", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "8b counterpart", + "entity_type": "MEASUREMENT", + "description": "the 8b counterpart refers to the smaller version of the vlm that exhibited significant performance deficits", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "github repository", + "entity_type": "LOCATION", + "description": "the github repository is the location where source code and implementation configurations are publicly available", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "https github com sam234990 bookrag", + "entity_type": "LOCATION", + "description": "https github com sam234990 bookrag is the specific url of the repository", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "sam234990", + "entity_type": "PERSON", + "description": "sam234990 is the username associated with the github repository where the source code is hosted", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "baseline methods", + "entity_type": "TASK_OR_PROBLEM", + "description": "baseline methods refer to the existing methods used for fair comparison against bookrag", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "ground truth images", + "entity_type": "IMAGE", + "description": "ground truth images are the correct reference images provided to the models during evaluation", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "document chunking", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "document chunking is a technique used to split documents into smaller parts for processing", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "retrieval ranking", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "retrieval ranking is a technique used to order retrieved candidates based on relevance", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "sequential processing mode", + "entity_type": "TASK_OR_PROBLEM", + "description": "sequential processing mode is the execution mode used to ensure fair comparison of efficiency", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "candidate pool", + "entity_type": "TASK_OR_PROBLEM", + "description": "the candidate pool refers to the set of items retrieved for ranking standardized across baselines", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "efficiency", + "entity_type": "CONCEPT", + "description": "efficiency is a key metric balanced against effectiveness in model selection and execution", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "effectiveness", + "entity_type": "CONCEPT", + "description": "effectiveness is a key metric balanced against efficiency in model selection and execution", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "performance deficits", + "entity_type": "CONCEPT", + "description": "performance deficits describe the failure of the 8b vlm counterpart to answer correctly", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "reproducibility", + "entity_type": "CONCEPT", + "description": "reproducibility is the goal achieved by making source code and configurations publicly available", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "fair comparison", + "entity_type": "CONCEPT", + "description": "fair comparison is the objective driving the use of unified models and standardized parameters", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "robust document layout parsing", + "entity_type": "TASK_OR_PROBLEM", + "description": "robust document layout parsing is the specific task that mineru is utilized for", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "text embedding", + "entity_type": "TASK_OR_PROBLEM", + "description": "text embedding is the task performed by the qwen3 embedding 0 6b model", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "multi modal embedding", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi modal embedding is the task performed by the gme qwen2 vl 2b instruct model", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "reranking", + "entity_type": "TASK_OR_PROBLEM", + "description": "reranking is the task performed by the qwen3 reranker 4b model", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "high performance server", + "entity_type": "LOCATION", + "description": "the high performance server is the physical location where all experiments were conducted", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "source code", + "entity_type": "PRODUCT", + "description": "source code refers to the implementation files of bookrag made available for download", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "implementation configurations", + "entity_type": "PRODUCT", + "description": "implementation configurations refer to the detailed settings used to run the experiments", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "reference 52", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 52 is the citation for the mineru tool", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "reference 4", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 4 is the citation for the qwen2 5vl 30b model", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "reference 60", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 60 is the citation for the qwen3 8b model", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "reference 63", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 63 is the citation for the gme qwen2 vl 2b instruct model", + "source_ids": [ + 238 + ] + }, + { + "entity_name": "reference 64", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 64 is the citation for the qwen3 embedding 0 6b and qwen3 reranker 4b models", + "source_ids": [ + 238 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "python", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is implemented in python", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "mineru", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes mineru for robust document layout parsing", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "qwen family", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is powered by models from the qwen family", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the qwen family includes llms used in the experiments", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "vlm", + "relation_name": "", + "weight": 9.0, + "description": "the qwen family includes vlms used in the experiments", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "embedding models", + "relation_name": "", + "weight": 9.0, + "description": "the qwen family includes embedding models used in the experiments", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "qwen3 8b", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 8b is a specific model from the qwen family used as the default llm", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "qwen2 5vl 30b", + "relation_name": "", + "weight": 10.0, + "description": "qwen2 5vl 30b is a specific model from the qwen family used as the vlm", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "qwen3 embedding 0 6b", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 embedding 0 6b is a specific model from the qwen family used for text embedding", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "gme qwen2 vl 2b instruct", + "relation_name": "", + "weight": 10.0, + "description": "gme qwen2 vl 2b instruct is a specific model from the qwen family used for multi modal embedding", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen family", + "tgt_entity_name": "qwen3 reranker 4b", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 reranker 4b is a specific model from the qwen family used for reranking", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "linux", + "relation_name": "", + "weight": 8.0, + "description": "experiments for bookrag were conducted on a linux operating system", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "linux", + "tgt_entity_name": "intel xeon 2 0ghz cpu", + "relation_name": "", + "weight": 9.0, + "description": "the linux operating system runs on a server equipped with an intel xeon 2 0ghz cpu", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "linux", + "tgt_entity_name": "nvidia geforce rtx a5000", + "relation_name": "", + "weight": 9.0, + "description": "the linux operating system runs on a server equipped with nvidia geforce rtx a5000 gpus", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "intel xeon 2 0ghz cpu", + "tgt_entity_name": "1024gb", + "relation_name": "", + "weight": 8.0, + "description": "the server with the intel xeon 2 0ghz cpu has 1024gb of memory", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "nvidia geforce rtx a5000", + "tgt_entity_name": "24 gb", + "relation_name": "", + "weight": 9.0, + "description": "each nvidia geforce rtx a5000 gpu has 24 gb of vram", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "500 tokens", + "relation_name": "", + "weight": 8.0, + "description": "bookrag standardizes the chunk size at 500 tokens for document chunking", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "10", + "relation_name": "", + "weight": 8.0, + "description": "bookrag sets the retrieval top k to 10 for consistent candidate pool sizes", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "10b parameter scale", + "relation_name": "", + "weight": 9.0, + "description": "bookrag primarily selects models under the 10b parameter scale", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "30b version", + "relation_name": "", + "weight": 9.0, + "description": "bookrag adopts the 30b version of the vlm due to performance issues with the 8b counterpart", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "8b counterpart", + "relation_name": "", + "weight": 8.0, + "description": "the 8b counterpart of the vlm exhibited significant performance deficits leading to the adoption of the 30b version", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "https github com sam234990 bookrag", + "relation_name": "", + "weight": 10.0, + "description": "the source code and configurations for bookrag are available at the specified github url", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "sam234990", + "tgt_entity_name": "https github com sam234990 bookrag", + "relation_name": "", + "weight": 10.0, + "description": "sam234990 is the owner of the github repository url", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "baseline methods", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is compared against baseline methods to ensure a fair comparison", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen3 8b", + "tgt_entity_name": "ground truth images", + "relation_name": "", + "weight": 7.0, + "description": "the 8b counterpart related to qwen3 8b context failed to answer correctly even with ground truth images", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "document chunking", + "relation_name": "", + "weight": 8.0, + "description": "bookrag involves document chunking as part of its processing pipeline", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval ranking", + "relation_name": "", + "weight": 8.0, + "description": "bookrag involves retrieval ranking as part of its processing pipeline", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "sequential processing mode", + "relation_name": "", + "weight": 9.0, + "description": "bookrag methods were executed in sequential processing mode to ensure fair efficiency comparison", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "candidate pool", + "relation_name": "", + "weight": 8.0, + "description": "bookrag standardizes the candidate pool size across baselines", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "efficiency", + "relation_name": "", + "weight": 9.0, + "description": "bookrag balances efficiency and effectiveness in model selection", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "effectiveness", + "relation_name": "", + "weight": 9.0, + "description": "bookrag balances efficiency and effectiveness in model selection", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "8b counterpart", + "tgt_entity_name": "performance deficits", + "relation_name": "", + "weight": 10.0, + "description": "the 8b counterpart exhibited performance deficits", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "reproducibility", + "relation_name": "", + "weight": 9.0, + "description": "bookrag aims for reproducibility by making code and configs public", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "fair comparison", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is designed to enable a fair comparison with other methods", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "mineru", + "tgt_entity_name": "robust document layout parsing", + "relation_name": "", + "weight": 10.0, + "description": "mineru is utilized for robust document layout parsing", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen3 embedding 0 6b", + "tgt_entity_name": "text embedding", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 embedding 0 6b is used for text embedding", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "gme qwen2 vl 2b instruct", + "tgt_entity_name": "multi modal embedding", + "relation_name": "", + "weight": 10.0, + "description": "gme qwen2 vl 2b instruct is used for multi modal embedding", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen3 reranker 4b", + "tgt_entity_name": "reranking", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 reranker 4b is used for reranking", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "linux", + "tgt_entity_name": "high performance server", + "relation_name": "", + "weight": 9.0, + "description": "the linux operating system runs on the high performance server", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "source code", + "relation_name": "", + "weight": 10.0, + "description": "the source code for bookrag is available at the repository", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "implementation configurations", + "relation_name": "", + "weight": 10.0, + "description": "the implementation configurations for bookrag are available at the repository", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "mineru", + "tgt_entity_name": "reference 52", + "relation_name": "", + "weight": 10.0, + "description": "mineru is cited in reference 52", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen2 5vl 30b", + "tgt_entity_name": "reference 4", + "relation_name": "", + "weight": 10.0, + "description": "qwen2 5vl 30b is cited in reference 4", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen3 8b", + "tgt_entity_name": "reference 60", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 8b is cited in reference 60", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "gme qwen2 vl 2b instruct", + "tgt_entity_name": "reference 63", + "relation_name": "", + "weight": 10.0, + "description": "gme qwen2 vl 2b instruct is cited in reference 63", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen3 embedding 0 6b", + "tgt_entity_name": "reference 64", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 embedding 0 6b is cited in reference 64", + "source_ids": [ + 238 + ] + }, + { + "src_entity_name": "qwen3 reranker 4b", + "tgt_entity_name": "reference 64", + "relation_name": "", + "weight": 10.0, + "description": "qwen3 reranker 4b is cited in reference 64", + "source_ids": [ + 238 + ] + } + ], + "node_idx": 238 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_239.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_239.json new file mode 100644 index 0000000..0d7dacc --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_239.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "a.3 prompts", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Experimental Details' within the BookRAG paper, this section details the specific text prompts engineered and utilized to guide the Retrieval-Augmented Generation (RAG) system in processing complex documents.", + "source_ids": [ + 239 + ] + }, + { + "entity_name": "prompts", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the structured input instructions provided to the language model to elicit specific behaviors or outputs, as defined in section A.3.", + "source_ids": [ + 239 + ] + } + ], + "relations": [ + { + "src_entity_name": "prompts", + "tgt_entity_name": "a.3 prompts", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Prompts' is the primary topic of section A.3.", + "source_ids": [ + 239 + ] + } + ], + "node_idx": 239 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_24.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_24.json new file mode 100644 index 0000000..75aade4 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_24.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "our contributions", + "entity_type": "TASK_OR_PROBLEM", + "description": "our contributions refers to the summary of work or achievements presented in the text", + "source_ids": [ + 24 + ] + } + ], + "relations": [], + "node_idx": 24 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_240.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_240.json new file mode 100644 index 0000000..a3ddbee --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_240.json @@ -0,0 +1,217 @@ +{ + "entities": [ + { + "entity_name": "agent based query classification", + "entity_type": "TASK_OR_PROBLEM", + "description": "agent based query classification is a task for which prompts are designed as illustrated in figure 10", + "source_ids": [ + 240 + ] + }, + { + "entity_name": "question decomposition", + "entity_type": "TASK_OR_PROBLEM", + "description": "question decomposition is a task for which prompts are designed as illustrated in figure 11", + "source_ids": [ + 240 + ] + }, + { + "entity_name": "filter operator generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "filter operator generation is a task for which prompts are designed as illustrated in figure 12", + "source_ids": [ + 240 + ] + }, + { + "entity_name": "entity resolution judgment", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity resolution judgment is a task for which a prompt is employed during the graph construction phase as illustrated in figure 13", + "source_ids": [ + 240 + ] + }, + { + "entity_name": "graph construction phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "graph construction phase is the specific phase during which entity resolution judgment is performed", + "source_ids": [ + 240 + ] + }, + { + "entity_name": "prompts", + "entity_type": "PRODUCT", + "description": "prompts are the specific designed items mentioned in the text for various tasks", + "source_ids": [ + 240 + ] + }, + { + "entity_name": "figure 10", + "entity_type": "IMAGE", + "description": "figure 10 is a visual element illustrating prompts for agent based query classification", + "source_ids": [ + 240 + ] + }, + { + "entity_name": "figure 11", + "entity_type": "IMAGE", + "description": "figure 11 is a visual element illustrating prompts for question decomposition", + "source_ids": [ + 240 + ] + }, + { + "entity_name": "figure 12", + "entity_type": "IMAGE", + "description": "figure 12 is a visual element illustrating prompts for filter operator generation", + "source_ids": [ + 240 + ] + }, + { + "entity_name": "figure 13", + "entity_type": "IMAGE", + "description": "figure 13 is a visual element illustrating the prompt for entity resolution judgment", + "source_ids": [ + 240 + ] + } + ], + "relations": [ + { + "src_entity_name": "agent based query classification", + "tgt_entity_name": "figure 10", + "relation_name": "", + "weight": 10.0, + "description": "figure 10 illustrates the prompts designed for agent based query classification", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "question decomposition", + "tgt_entity_name": "figure 11", + "relation_name": "", + "weight": 10.0, + "description": "figure 11 illustrates the prompts designed for question decomposition", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "filter operator generation", + "tgt_entity_name": "figure 12", + "relation_name": "", + "weight": 10.0, + "description": "figure 12 illustrates the prompts designed for filter operator generation", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "entity resolution judgment", + "tgt_entity_name": "figure 13", + "relation_name": "", + "weight": 10.0, + "description": "figure 13 illustrates the prompt employed for entity resolution judgment", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "entity resolution judgment", + "tgt_entity_name": "graph construction phase", + "relation_name": "", + "weight": 9.0, + "description": "entity resolution judgment is performed during the graph construction phase", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "prompts", + "tgt_entity_name": "agent based query classification", + "relation_name": "", + "weight": 10.0, + "description": "prompts are designed specifically for agent based query classification", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "prompts", + "tgt_entity_name": "question decomposition", + "relation_name": "", + "weight": 10.0, + "description": "prompts are designed specifically for question decomposition", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "prompts", + "tgt_entity_name": "filter operator generation", + "relation_name": "", + "weight": 10.0, + "description": "prompts are designed specifically for filter operator generation", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "prompts", + "tgt_entity_name": "entity resolution judgment", + "relation_name": "", + "weight": 10.0, + "description": "a prompt is employed for entity resolution judgment", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "figure 10", + "tgt_entity_name": "agent based query classification", + "relation_name": "", + "weight": 10.0, + "description": "figure 10 presents the prompts for agent based query classification", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "figure 11", + "tgt_entity_name": "question decomposition", + "relation_name": "", + "weight": 10.0, + "description": "figure 11 presents the prompts for question decomposition", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "figure 12", + "tgt_entity_name": "filter operator generation", + "relation_name": "", + "weight": 10.0, + "description": "figure 12 presents the prompts for filter operator generation", + "source_ids": [ + 240 + ] + }, + { + "src_entity_name": "figure 13", + "tgt_entity_name": "entity resolution judgment", + "relation_name": "", + "weight": 10.0, + "description": "figure 13 illustrates the prompt for entity resolution judgment", + "source_ids": [ + 240 + ] + } + ], + "node_idx": 240 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_241.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_241.json new file mode 100644 index 0000000..991f280 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_241.json @@ -0,0 +1,105 @@ +{ + "entities": [ + { + "entity_name": "expert query analyzer", + "entity_type": "PERSON", + "description": "an expert query analyzer is a role described as someone tasked with classifying user questions into specific categories", + "source_ids": [ + 241 + ] + }, + { + "entity_name": "simple", + "entity_type": "TASK_OR_PROBLEM", + "description": "simple is one of the three categories used to classify user questions", + "source_ids": [ + 241 + ] + }, + { + "entity_name": "complex", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex is one of the three categories used to classify user questions", + "source_ids": [ + 241 + ] + }, + { + "entity_name": "global", + "entity_type": "TASK_OR_PROBLEM", + "description": "global is one of the three categories used to classify user questions", + "source_ids": [ + 241 + ] + }, + { + "entity_name": "user", + "entity_type": "PERSON", + "description": "the user is the entity whose questions are being classified by the expert query analyzer", + "source_ids": [ + 241 + ] + }, + { + "entity_name": "json object", + "entity_type": "FILE_TYPE", + "description": "the json object is the required format for the response from the expert query analyzer", + "source_ids": [ + 241 + ] + } + ], + "relations": [ + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "simple", + "relation_name": "", + "weight": 9.0, + "description": "the expert query analyzer classifies questions into the simple category", + "source_ids": [ + 241 + ] + }, + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "complex", + "relation_name": "", + "weight": 9.0, + "description": "the expert query analyzer classifies questions into the complex category", + "source_ids": [ + 241 + ] + }, + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 9.0, + "description": "the expert query analyzer classifies questions into the global category", + "source_ids": [ + 241 + ] + }, + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "user", + "relation_name": "", + "weight": 8.0, + "description": "the expert query analyzer processes questions submitted by the user", + "source_ids": [ + 241 + ] + }, + { + "src_entity_name": "expert query analyzer", + "tgt_entity_name": "json object", + "relation_name": "", + "weight": 9.0, + "description": "the expert query analyzer must respond using the specified json object format", + "source_ids": [ + 241 + ] + } + ], + "node_idx": 241 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_242.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_242.json new file mode 100644 index 0000000..099e6ec --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_242.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "category definitions", + "entity_type": "SECTION_TITLE", + "description": "category definitions is the title of the section containing definitions for entity types", + "source_ids": [ + 242 + ] + } + ], + "relations": [], + "node_idx": 242 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_243.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_243.json new file mode 100644 index 0000000..db3f957 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_243.json @@ -0,0 +1,199 @@ +{ + "entities": [ + { + "entity_name": "single hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "single hop is a task type where a question can be answered by retrieving information from a single location", + "source_ids": [ + 243 + ] + }, + { + "entity_name": "question", + "entity_type": "TASK_OR_PROBLEM", + "description": "question is the item that needs to be answered in the single hop task", + "source_ids": [ + 243 + ] + }, + { + "entity_name": "information", + "entity_type": "CONCEPT", + "description": "information is the data retrieved to answer the question", + "source_ids": [ + 243 + ] + }, + { + "entity_name": "document", + "entity_type": "CONCEPT", + "description": "document is the source material containing the information", + "source_ids": [ + 243 + ] + }, + { + "entity_name": "paragraph", + "entity_type": "SECTION_TITLE", + "description": "paragraph is an example of a contiguous location within a document", + "source_ids": [ + 243 + ] + }, + { + "entity_name": "table", + "entity_type": "SECTION_TITLE", + "description": "table is an example of a contiguous location within a document", + "source_ids": [ + 243 + ] + }, + { + "entity_name": "figure", + "entity_type": "SECTION_TITLE", + "description": "figure is an example of a contiguous location within a document", + "source_ids": [ + 243 + ] + }, + { + "entity_name": "single", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 243 + ] + }, + { + "entity_name": "contiguous location", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 243 + ] + } + ], + "relations": [ + { + "src_entity_name": "single hop", + "tgt_entity_name": "single", + "relation_name": "", + "weight": 9.0, + "description": "the single hop task requires retrieving information from a single location", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "contiguous location", + "relation_name": "", + "weight": 8.0, + "description": "the single hop task involves information found in a contiguous location", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 7.0, + "description": "the single hop task is defined within the context of a document", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "question", + "relation_name": "", + "weight": 10.0, + "description": "the single hop task is defined by the ability to answer a question", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "information", + "relation_name": "", + "weight": 10.0, + "description": "the single hop task involves retrieving information", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "information", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "information is retrieved from the document", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "paragraph", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "a paragraph is a part of a document", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "table", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "a table is a part of a document", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "figure", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "a figure is a part of a document", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "paragraph", + "relation_name": "", + "weight": 9.0, + "description": "a single hop question can be answered by retrieving information from a paragraph", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 9.0, + "description": "a single hop question can be answered by retrieving information from a table", + "source_ids": [ + 243 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "figure", + "relation_name": "", + "weight": 9.0, + "description": "a single hop question can be answered by retrieving information from a figure", + "source_ids": [ + 243 + ] + } + ], + "node_idx": 243 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_244.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_244.json new file mode 100644 index 0000000..50ac9aa --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_244.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 244 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_245.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_245.json new file mode 100644 index 0000000..aa39832 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_245.json @@ -0,0 +1,25 @@ +{ + "entities": [ + { + "entity_name": "figure 2", + "entity_type": "IMAGE", + "description": "figure 2 is an image referenced in the text with its title being the subject of a question", + "source_ids": [ + 245 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 2", + "tgt_entity_name": "figure 2", + "relation_name": "", + "weight": 5.0, + "description": "the text asks for the title of figure 2 indicating a self referential query about the entity s attribute", + "source_ids": [ + 245 + ] + } + ], + "node_idx": 245 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_246.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_246.json new file mode 100644 index 0000000..4e38c25 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_246.json @@ -0,0 +1,79 @@ +{ + "entities": [ + { + "entity_name": "5", + "entity_type": "PERCENTAGE", + "description": "5 represents a specific portion of the latino population mentioned in the context of economic upward mobility", + "source_ids": [ + 246 + ] + }, + { + "entity_name": "latinos", + "entity_type": "NATIONALITY", + "description": "latinos are the demographic group whose views on economic upward mobility for their children are being queried", + "source_ids": [ + 246 + ] + }, + { + "entity_name": "economic upward mobility", + "entity_type": "TASK_OR_PROBLEM", + "description": "economic upward mobility is the specific issue regarding the children of latinos that is the subject of the inquiry", + "source_ids": [ + 246 + ] + }, + { + "entity_name": "children", + "entity_type": "PERSON", + "description": "children are the offspring of the latinos whose economic upward mobility is being discussed", + "source_ids": [ + 246 + ] + } + ], + "relations": [ + { + "src_entity_name": "5", + "tgt_entity_name": "latinos", + "relation_name": "", + "weight": 9.0, + "description": "the percentage 5 specifically refers to a subset of the latino population", + "source_ids": [ + 246 + ] + }, + { + "src_entity_name": "latinos", + "tgt_entity_name": "economic upward mobility", + "relation_name": "", + "weight": 10.0, + "description": "latinos are the group whose perspective on economic upward mobility for their children is being examined", + "source_ids": [ + 246 + ] + }, + { + "src_entity_name": "latinos", + "tgt_entity_name": "children", + "relation_name": "", + "weight": 10.0, + "description": "the children belong to the latino demographic group mentioned in the text", + "source_ids": [ + 246 + ] + }, + { + "src_entity_name": "economic upward mobility", + "tgt_entity_name": "children", + "relation_name": "", + "weight": 9.0, + "description": "economic upward mobility is the specific attribute or outcome being considered for the children", + "source_ids": [ + 246 + ] + } + ], + "node_idx": 246 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_247.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_247.json new file mode 100644 index 0000000..798e176 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_247.json @@ -0,0 +1,25 @@ +{ + "entities": [ + { + "entity_name": "multi hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "multi hop is a task that requires decomposition into multiple simple sub questions", + "source_ids": [ + 247 + ] + } + ], + "relations": [ + { + "src_entity_name": "multi hop", + "tgt_entity_name": "multi hop", + "relation_name": "", + "weight": 10.0, + "description": "the entity multi hop is described as requiring decomposition into sub questions indicating its nature as a task", + "source_ids": [ + 247 + ] + } + ], + "node_idx": 247 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_248.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_248.json new file mode 100644 index 0000000..c01c8d2 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_248.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 248 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_249.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_249.json new file mode 100644 index 0000000..e6c976d --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_249.json @@ -0,0 +1,25 @@ +{ + "entities": [ + { + "entity_name": "personality vector", + "entity_type": "TASK_OR_PROBLEM", + "description": "the personality vector is a concept mentioned in a question regarding its color indicating it is a complex retrieval task", + "source_ids": [ + 249 + ] + } + ], + "relations": [ + { + "src_entity_name": "personality vector", + "tgt_entity_name": "personality vector", + "relation_name": "", + "weight": 5.0, + "description": "the entity is the subject of a question asking for its color implying a self referential query about its attributes", + "source_ids": [ + 249 + ] + } + ], + "node_idx": 249 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_25.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_25.json new file mode 100644 index 0000000..fea3f8b --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_25.json @@ -0,0 +1,145 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "bookrag is a novel method introduced in the text that constructs a document native bookindex", + "source_ids": [ + 25 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is a document native index constructed by the bookrag method", + "source_ids": [ + 25 + ] + }, + { + "entity_name": "hierarchical tree", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "a hierarchical tree of document layout blocks is integrated by bookrag to construct the bookindex", + "source_ids": [ + 25 + ] + }, + { + "entity_name": "kg", + "entity_type": "SOFTWARE", + "description": "kg refers to a knowledge graph storing fine grained entity relations used in the bookrag method", + "source_ids": [ + 25 + ] + }, + { + "entity_name": "document layout blocks", + "entity_type": "MATERIAL", + "description": "document layout blocks are the structural components of a document that are organized into a hierarchical tree", + "source_ids": [ + 25 + ] + }, + { + "entity_name": "entity relations", + "entity_type": "CONCEPT", + "description": "entity relations are the fine grained connections between entities stored within the knowledge graph", + "source_ids": [ + 25 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookrag constructs the bookindex by integrating other components", + "source_ids": [ + 25 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "hierarchical tree", + "relation_name": "", + "weight": 9.0, + "description": "bookrag integrates a hierarchical tree of document layout blocks", + "source_ids": [ + 25 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "bookrag integrates a kg storing fine grained entity relations", + "source_ids": [ + 25 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "hierarchical tree", + "relation_name": "", + "weight": 8.0, + "description": "the bookindex is constructed using a hierarchical tree of document layout blocks", + "source_ids": [ + 25 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 8.0, + "description": "the bookindex is constructed using a kg storing fine grained entity relations", + "source_ids": [ + 25 + ] + }, + { + "src_entity_name": "hierarchical tree", + "tgt_entity_name": "document layout blocks", + "relation_name": "", + "weight": 10.0, + "description": "the hierarchical tree is composed of document layout blocks", + "source_ids": [ + 25 + ] + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "entity relations", + "relation_name": "", + "weight": 10.0, + "description": "the kg stores fine grained entity relations", + "source_ids": [ + 25 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "document layout blocks", + "relation_name": "", + "weight": 8.0, + "description": "bookrag integrates document layout blocks via a hierarchical tree", + "source_ids": [ + 25 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "entity relations", + "relation_name": "", + "weight": 8.0, + "description": "bookrag utilizes a kg that stores entity relations", + "source_ids": [ + 25 + ] + } + ], + "node_idx": 25 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_250.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_250.json new file mode 100644 index 0000000..f9c8a72 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_250.json @@ -0,0 +1,153 @@ +{ + "entities": [ + { + "entity_name": "global", + "entity_type": "TASK_OR_PROBLEM", + "description": "global refers to a type of question requiring an aggregation operation over a set of items identified by a structural filter", + "source_ids": [ + 250 + ] + }, + { + "entity_name": "counting", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "counting is an example of an aggregation operation mentioned in the text", + "source_ids": [ + 250 + ] + }, + { + "entity_name": "listing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "listing is an example of an aggregation operation mentioned in the text", + "source_ids": [ + 250 + ] + }, + { + "entity_name": "summarizing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "summarizing is an example of an aggregation operation mentioned in the text", + "source_ids": [ + 250 + ] + }, + { + "entity_name": "structural filter", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "structural filter is a clear filter used to identify items in the set for the global question", + "source_ids": [ + 250 + ] + }, + { + "entity_name": "aggregation operation", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 250 + ] + }, + { + "entity_name": "items", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 250 + ] + } + ], + "relations": [ + { + "src_entity_name": "global", + "tgt_entity_name": "aggregation operation", + "relation_name": "", + "weight": 8.0, + "description": "the global task requires an aggregation operation such as counting listing or summarizing", + "source_ids": [ + 250 + ] + }, + { + "src_entity_name": "global", + "tgt_entity_name": "counting", + "relation_name": "", + "weight": 9.0, + "description": "the global task includes counting as a possible aggregation operation", + "source_ids": [ + 250 + ] + }, + { + "src_entity_name": "global", + "tgt_entity_name": "listing", + "relation_name": "", + "weight": 9.0, + "description": "the global task includes listing as a possible aggregation operation", + "source_ids": [ + 250 + ] + }, + { + "src_entity_name": "global", + "tgt_entity_name": "summarizing", + "relation_name": "", + "weight": 9.0, + "description": "the global task includes summarizing as a possible aggregation operation", + "source_ids": [ + 250 + ] + }, + { + "src_entity_name": "global", + "tgt_entity_name": "structural filter", + "relation_name": "", + "weight": 9.0, + "description": "the global task identifies items using a clear structural filter", + "source_ids": [ + 250 + ] + }, + { + "src_entity_name": "counting", + "tgt_entity_name": "aggregation operation", + "relation_name": "", + "weight": 10.0, + "description": "counting is explicitly described as an aggregation operation", + "source_ids": [ + 250 + ] + }, + { + "src_entity_name": "listing", + "tgt_entity_name": "aggregation operation", + "relation_name": "", + "weight": 10.0, + "description": "listing is explicitly described as an aggregation operation", + "source_ids": [ + 250 + ] + }, + { + "src_entity_name": "summarizing", + "tgt_entity_name": "aggregation operation", + "relation_name": "", + "weight": 10.0, + "description": "summarizing is explicitly described as an aggregation operation", + "source_ids": [ + 250 + ] + }, + { + "src_entity_name": "structural filter", + "tgt_entity_name": "items", + "relation_name": "", + "weight": 8.0, + "description": "the structural filter is used to identify the set of items", + "source_ids": [ + 250 + ] + } + ], + "node_idx": 250 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_251.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_251.json new file mode 100644 index 0000000..b2c0c50 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_251.json @@ -0,0 +1,51 @@ +{ + "entities": [ + { + "entity_name": "example", + "entity_type": "TASK_OR_PROBLEM", + "description": "example is a task or problem asking how many tables are in the document", + "source_ids": [ + 251 + ] + }, + { + "entity_name": "global", + "entity_type": "CONCEPT", + "description": "global refers to a process that filters for all items of a specific type in this case table", + "source_ids": [ + 251 + ] + }, + { + "entity_name": "table", + "entity_type": "PRODUCT", + "description": "table is the specific item type being filtered for in the document", + "source_ids": [ + 251 + ] + } + ], + "relations": [ + { + "src_entity_name": "example", + "tgt_entity_name": "global", + "relation_name": "", + "weight": 9.0, + "description": "the example task is defined by the global process of filtering for tables", + "source_ids": [ + 251 + ] + }, + { + "src_entity_name": "global", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 10.0, + "description": "the global process specifically targets and filters for items of type table", + "source_ids": [ + 251 + ] + } + ], + "node_idx": 251 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_252.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_252.json new file mode 100644 index 0000000..2eda525 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_252.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "user query", + "entity_type": "TASK_OR_PROBLEM", + "description": "user query is a task or problem mentioned in the text representing a request for information or action", + "source_ids": [ + 252 + ] + } + ], + "relations": [], + "node_idx": 252 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_253.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_253.json new file mode 100644 index 0000000..d09bbea --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_253.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "figure 10", + "entity_type": "IMAGE", + "description": "figure 10 is an image in the text that displays a prompt for query classification", + "source_ids": [ + 253 + ] + }, + { + "entity_name": "query classification", + "entity_type": "TASK_OR_PROBLEM", + "description": "query classification is the task or problem for which the prompt in figure 10 is designed", + "source_ids": [ + 253 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 10", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 10.0, + "description": "figure 10 contains the prompt specifically used for query classification", + "source_ids": [ + 253 + ] + } + ], + "node_idx": 253 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_254.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_254.json new file mode 100644 index 0000000..7ae42d0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_254.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "16", + "entity_type": "MEASUREMENT", + "description": "16 is a numerical value mentioned in the text potentially representing a count date or measurement", + "source_ids": [ + 254 + ] + } + ], + "relations": [], + "node_idx": 254 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_255.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_255.json new file mode 100644 index 0000000..8654076 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_255.json @@ -0,0 +1,233 @@ +{ + "entities": [ + { + "entity_name": "user a2gbifl43u1lkj", + "entity_type": "PERSON", + "description": "user a2gbifl43u1lkj is a specific user referenced in the example query regarding personality vectors and receptiviti scores", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "foreign born latinos", + "entity_type": "PERSON", + "description": "foreign born latinos are a demographic group mentioned in the example query regarding population surveys", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "latinos interviewed by cellphone", + "entity_type": "PERSON", + "description": "latinos interviewed by cellphone are a demographic group mentioned in the example query regarding population surveys", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "soft labeled personality embedding matrix", + "entity_type": "PRODUCT", + "description": "the soft labeled personality embedding matrix is a data structure containing personality vectors and their associated colors", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "receptiviti score", + "entity_type": "EVALUATION_METRIC", + "description": "the receptiviti score is a metric used to evaluate personality vectors in the context of the example query", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "population", + "entity_type": "MEASUREMENT", + "description": "population refers to the count of individuals in a specific demographic group within a survey", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "query decomposition expert", + "entity_type": "PROFESSION", + "description": "the query decomposition expert is the role assigned to the ai to break down complex questions into atomic sub questions", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "complex question", + "entity_type": "TASK_OR_PROBLEM", + "description": "a complex question is the input task that needs to be broken down into simple sub questions", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "simple atomic sub questions", + "entity_type": "TASK_OR_PROBLEM", + "description": "simple atomic sub questions are the output components of the decomposition process each being a direct information retrieval task", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "retrieval sub question", + "entity_type": "TASK_OR_PROBLEM", + "description": "a retrieval sub question is a specific type of sub question that requires looking up a specific fact number or value in the document", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "synthesis question", + "entity_type": "TASK_OR_PROBLEM", + "description": "a synthesis question is a specific type of sub question that requires comparing calculating or combining answers from previous retrieval questions", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "json object", + "entity_type": "FILE_TYPE", + "description": "the json object is the required format for the response containing a single key sub questions with a list of objects", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "sub questions", + "entity_type": "SECTION_TITLE", + "description": "the sub questions key is the container within the json object that holds the list of decomposed questions", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "question", + "entity_type": "SECTION_TITLE", + "description": "the question key within each sub question object holds the string of the actual question", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "type", + "entity_type": "SECTION_TITLE", + "description": "the type key within each sub question object specifies whether the question is retrieval or synthesis", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "user query", + "entity_type": "TASK_OR_PROBLEM", + "description": "the user query is the final input provided in the real data section which is the word query itself", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "example 1", + "entity_type": "EVENT", + "description": "example 1 is a demonstration of correct decomposition with independent lookups provided in the text", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "example 2", + "entity_type": "EVENT", + "description": "example 2 is a demonstration of decomposition with retrieval and synthesis steps provided in the text", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "personality vector", + "entity_type": "PRODUCT", + "description": "a personality vector is a data element within the soft labeled personality embedding matrix", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "color", + "entity_type": "COLOR", + "description": "color is an attribute mapped to personality vectors in the soft labeled personality embedding matrix", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "survey", + "entity_type": "EVENT", + "description": "the survey is the context in which population data for latinos is collected in example 2", + "source_ids": [ + 255 + ] + }, + { + "entity_name": "report", + "entity_type": "BOOK", + "description": "the report is the document referenced in example 2 that contains population data", + "source_ids": [ + 255 + ] + } + ], + "relations": [ + { + "src_entity_name": "user a2gbifl43u1lkj", + "tgt_entity_name": "soft labeled personality embedding matrix", + "relation_name": "", + "weight": 9.0, + "description": "user a2gbifl43u1lkj is the subject for whom personality vectors are analyzed within the soft labeled personality embedding matrix", + "source_ids": [ + 255 + ] + }, + { + "src_entity_name": "user a2gbifl43u1lkj", + "tgt_entity_name": "receptiviti score", + "relation_name": "", + "weight": 9.0, + "description": "receptiviti scores are calculated for the personality vectors associated with user a2gbifl43u1lkj", + "source_ids": [ + 255 + ] + }, + { + "src_entity_name": "foreign born latinos", + "tgt_entity_name": "population", + "relation_name": "", + "weight": 8.0, + "description": "the population of foreign born latinos is a specific value sought in the survey example", + "source_ids": [ + 255 + ] + }, + { + "src_entity_name": "latinos interviewed by cellphone", + "tgt_entity_name": "population", + "relation_name": "", + "weight": 8.0, + "description": "the population of latinos interviewed by cellphone is a specific value sought in the survey example", + "source_ids": [ + 255 + ] + }, + { + "src_entity_name": "soft labeled personality embedding matrix", + "tgt_entity_name": "receptiviti score", + "relation_name": "", + "weight": 7.0, + "description": "the soft labeled personality embedding matrix contains personality vectors that are evaluated using receptiviti scores", + "source_ids": [ + 255 + ] + } + ], + "node_idx": 255 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_256.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_256.json new file mode 100644 index 0000000..071d0a5 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_256.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "figure 11", + "entity_type": "IMAGE", + "description": "figure 11 is an image in the text that displays a prompt for query decomposition", + "source_ids": [ + 256 + ] + }, + { + "entity_name": "query decomposition", + "entity_type": "TASK_OR_PROBLEM", + "description": "query decomposition is the task or problem for which the prompt in figure 11 is designed", + "source_ids": [ + 256 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 11", + "tgt_entity_name": "query decomposition", + "relation_name": "", + "weight": 10.0, + "description": "figure 11 contains the prompt specifically for the task of query decomposition", + "source_ids": [ + 256 + ] + } + ], + "node_idx": 256 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_257.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_257.json new file mode 100644 index 0000000..e84ed91 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_257.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "17", + "entity_type": "NUMBER", + "description": "17 is a number mentioned in the text though its specific context or role is not defined", + "source_ids": [ + 257 + ] + } + ], + "relations": [], + "node_idx": 257 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_258.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_258.json new file mode 100644 index 0000000..86bcc44 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_258.json @@ -0,0 +1,521 @@ +{ + "entities": [ + { + "entity_name": "ai assistant", + "entity_type": "PERSON", + "description": "an ai assistant described as highly specialized with the function of analyzing a global query", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "global query", + "entity_type": "TASK_OR_PROBLEM", + "description": "a query that the ai assistant is designed to analyze to determine filtering steps and aggregation operations", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "json object", + "entity_type": "FILE_TYPE", + "description": "the specific output format required from the ai assistant containing filters and an operation", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "filters", + "entity_type": "TASK_OR_PROBLEM", + "description": "a list of filtering steps to be applied which can include sections images tables or pages", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "operation", + "entity_type": "TASK_OR_PROBLEM", + "description": "the final aggregation operation to be performed such as count list summarize or analyze", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "methodology", + "entity_type": "SECTION_TITLE", + "description": "a specific section title mentioned in an example query regarding data augmentation", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "paper", + "entity_type": "BOOK", + "description": "a document referenced in an example query regarding figures on specific pages", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "report", + "entity_type": "BOOK", + "description": "a document referenced in an example query regarding chapters", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "user", + "entity_type": "PERSON", + "description": "the user is the entity providing the query to the ai assistant", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "assistant", + "entity_type": "PERSON", + "description": "the assistant is the entity responding to the user with a json object", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "chapter", + "entity_type": "SECTION_TITLE", + "description": "a structural part of a document mentioned in the example about counting chapters", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "appendices", + "entity_type": "SECTION_TITLE", + "description": "a structural part of a document mentioned in the definition of section filters", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "references", + "entity_type": "SECTION_TITLE", + "description": "a structural part of a document mentioned in the definition of section filters", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "figures", + "entity_type": "IMAGE", + "description": "visual elements mentioned in the example query regarding counting figures", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "data augmentation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "a specific topic discussed in the methodology section in the example query", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "discussion", + "entity_type": "TASK_OR_PROBLEM", + "description": "the content regarding data augmentation that needs to be summarized", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "3 10", + "entity_type": "MEASUREMENT", + "description": "a specific page range mentioned as a filter value in the example query", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "3", + "entity_type": "MEASUREMENT", + "description": "the starting page number in the example range", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "10", + "entity_type": "MEASUREMENT", + "description": "the ending page number in the example range", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "count", + "entity_type": "TASK_OR_PROBLEM", + "description": "an aggregation operation used to count items", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "list", + "entity_type": "TASK_OR_PROBLEM", + "description": "an aggregation operation used to list items", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "summarize", + "entity_type": "TASK_OR_PROBLEM", + "description": "an aggregation operation used to summarize content", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "analyze", + "entity_type": "TASK_OR_PROBLEM", + "description": "an aggregation operation used to analyze content", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "section", + "entity_type": "SECTION_TITLE", + "description": "a filter type used for structural parts like chapters", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "image", + "entity_type": "IMAGE", + "description": "a filter type used for visual elements", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "table", + "entity_type": "TABLE", + "description": "a filter type used for tabular data", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "page", + "entity_type": "MEASUREMENT", + "description": "a filter type used for specific page numbers", + "source_ids": [ + 258 + ] + }, + { + "entity_name": "null", + "entity_type": "TASK_OR_PROBLEM", + "description": "a value indicating that no specific value is provided for image or table filters", + "source_ids": [ + 258 + ] + } + ], + "relations": [ + { + "src_entity_name": "ai assistant", + "tgt_entity_name": "global query", + "relation_name": "", + "weight": 10.0, + "description": "the ai assistant s function is to analyze the global query", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "ai assistant", + "tgt_entity_name": "json object", + "relation_name": "", + "weight": 10.0, + "description": "the ai assistant must return a single valid json object as its output", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "ai assistant", + "tgt_entity_name": "filters", + "relation_name": "", + "weight": 9.0, + "description": "the ai assistant must determine the list of filters to apply", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "ai assistant", + "tgt_entity_name": "operation", + "relation_name": "", + "weight": 9.0, + "description": "the ai assistant must determine the final aggregation operation", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "filters", + "tgt_entity_name": "section", + "relation_name": "", + "weight": 8.0, + "description": "filters can be of type section to target structural parts like chapters or appendices", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "filters", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 8.0, + "description": "filters can be of type image to target visual elements", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "filters", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 8.0, + "description": "filters can be of type table to target tabular data", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "filters", + "tgt_entity_name": "page", + "relation_name": "", + "weight": 8.0, + "description": "filters can be of type page to target specific page numbers", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "operation", + "tgt_entity_name": "count", + "relation_name": "", + "weight": 7.0, + "description": "count is one of the possible operations for aggregation", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "operation", + "tgt_entity_name": "list", + "relation_name": "", + "weight": 7.0, + "description": "list is one of the possible operations for aggregation", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "operation", + "tgt_entity_name": "summarize", + "relation_name": "", + "weight": 7.0, + "description": "summarize is one of the possible operations for aggregation", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "operation", + "tgt_entity_name": "analyze", + "relation_name": "", + "weight": 7.0, + "description": "analyze is one of the possible operations for aggregation", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "paper", + "tgt_entity_name": "figures", + "relation_name": "", + "weight": 6.0, + "description": "the example query asks to count figures in the paper", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "paper", + "tgt_entity_name": "page", + "relation_name": "", + "weight": 6.0, + "description": "the example query specifies a page range 3 to 10 for the paper", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "report", + "tgt_entity_name": "chapter", + "relation_name": "", + "weight": 6.0, + "description": "the example query asks to count chapters in the report", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "methodology", + "tgt_entity_name": "data augmentation", + "relation_name": "", + "weight": 9.0, + "description": "the example query asks to summarize the discussion about data augmentation in the methodology section", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "user", + "tgt_entity_name": "assistant", + "relation_name": "", + "weight": 10.0, + "description": "the user sends a query to the assistant", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "assistant", + "tgt_entity_name": "user", + "relation_name": "", + "weight": 10.0, + "description": "the assistant responds to the user", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "assistant", + "tgt_entity_name": "json object", + "relation_name": "", + "weight": 10.0, + "description": "the assistant must output a json object", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "assistant", + "tgt_entity_name": "filters", + "relation_name": "", + "weight": 9.0, + "description": "the assistant determines the filters to apply", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "assistant", + "tgt_entity_name": "operation", + "relation_name": "", + "weight": 9.0, + "description": "the assistant determines the operation to perform", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "section", + "tgt_entity_name": "chapter", + "relation_name": "", + "weight": 9.0, + "description": "chapters are examples of sections", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "section", + "tgt_entity_name": "appendices", + "relation_name": "", + "weight": 9.0, + "description": "appendices are examples of sections", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "section", + "tgt_entity_name": "references", + "relation_name": "", + "weight": 9.0, + "description": "references are examples of sections", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "image", + "tgt_entity_name": "figures", + "relation_name": "", + "weight": 9.0, + "description": "figures are examples of images", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "page", + "tgt_entity_name": "3 10", + "relation_name": "", + "weight": 8.0, + "description": "3 10 is an example value for a page filter", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "page", + "tgt_entity_name": "3", + "relation_name": "", + "weight": 7.0, + "description": "3 is part of the page range", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "page", + "tgt_entity_name": "10", + "relation_name": "", + "weight": 7.0, + "description": "10 is part of the page range", + "source_ids": [ + 258 + ] + }, + { + "src_entity_name": "discussion", + "tgt_entity_name": "data augmentation", + "relation_name": "", + "weight": 8.0, + "description": "the discussion is about data augmentation", + "source_ids": [ + 258 + ] + } + ], + "node_idx": 258 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_259.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_259.json new file mode 100644 index 0000000..59635df --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_259.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "figure 12", + "entity_type": "IMAGE", + "description": "figure 12 is an image in the text that displays the prompt for filter operator generation", + "source_ids": [ + 259 + ] + }, + { + "entity_name": "filter operator generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "filter operator generation is the specific task or problem for which the prompt in figure 12 is designed", + "source_ids": [ + 259 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 12", + "tgt_entity_name": "filter operator generation", + "relation_name": "", + "weight": 10.0, + "description": "figure 12 contains the prompt used for filter operator generation", + "source_ids": [ + 259 + ] + } + ], + "node_idx": 259 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_26.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_26.json new file mode 100644 index 0000000..6cb04e7 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_26.json @@ -0,0 +1,115 @@ +{ + "entities": [ + { + "entity_name": "agent based retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "agent based retrieval is a proposed approach for dynamically classifying queries and configuring retrieval workflows", + "source_ids": [ + 26 + ] + }, + { + "entity_name": "information foraging theory", + "entity_type": "SCIENTIFIC_THEORY", + "description": "information foraging theory is the theoretical inspiration behind the proposed agent based retrieval approach", + "source_ids": [ + 26 + ] + }, + { + "entity_name": "queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "queries are the inputs that the agent based retrieval approach dynamically classifies", + "source_ids": [ + 26 + ] + }, + { + "entity_name": "retrieval workflows", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval workflows are the processes configured by the approach to locate evidence", + "source_ids": [ + 26 + ] + }, + { + "entity_name": "documents", + "entity_type": "DATASET_OR_CORPUS", + "description": "documents are the source material within which highly relevant evidence is located", + "source_ids": [ + 26 + ] + }, + { + "entity_name": "evidence", + "entity_type": "TASK_OR_PROBLEM", + "description": "evidence refers to the highly relevant information sought within the documents", + "source_ids": [ + 26 + ] + } + ], + "relations": [ + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "information foraging theory", + "relation_name": "", + "weight": 10.0, + "description": "the agent based retrieval approach is explicitly inspired by information foraging theory", + "source_ids": [ + 26 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "queries", + "relation_name": "", + "weight": 9.0, + "description": "the agent based retrieval approach dynamically classifies queries", + "source_ids": [ + 26 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "retrieval workflows", + "relation_name": "", + "weight": 9.0, + "description": "the agent based retrieval approach configures optimal retrieval workflows", + "source_ids": [ + 26 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "documents", + "relation_name": "", + "weight": 8.0, + "description": "the approach operates within documents to locate evidence", + "source_ids": [ + 26 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "evidence", + "relation_name": "", + "weight": 10.0, + "description": "the goal of the approach is to locate highly relevant evidence within documents", + "source_ids": [ + 26 + ] + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "agent based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "information foraging theory serves as the inspiration for the agent based retrieval approach", + "source_ids": [ + 26 + ] + } + ], + "node_idx": 26 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_260.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_260.json new file mode 100644 index 0000000..19c401c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_260.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "18", + "entity_type": "NUMBER", + "description": "18 is a number mentioned in the text though its specific context or meaning is not provided", + "source_ids": [ + 260 + ] + } + ], + "relations": [], + "node_idx": 260 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_261.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_261.json new file mode 100644 index 0000000..f762b10 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_261.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 261 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_262.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_262.json new file mode 100644 index 0000000..4b2f904 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_262.json @@ -0,0 +1,217 @@ +{ + "entities": [ + { + "entity_name": "entity resolution adjudicator", + "entity_type": "PERSON", + "description": "entity resolution adjudicator is an expert role tasked with determining if a new entity refers to the same real world concept as candidate entities", + "source_ids": [ + 262 + ] + }, + { + "entity_name": "new entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "new entity is a recently extracted entity from a text that needs to be matched against candidate entities", + "source_ids": [ + 262 + ] + }, + { + "entity_name": "candidate entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "candidate entities are a list of semantically similar entities retrieved from an existing knowledge base for comparison", + "source_ids": [ + 262 + ] + }, + { + "entity_name": "knowledge graph", + "entity_type": "TASK_OR_PROBLEM", + "description": "knowledge graph is the existing database from which candidate entities are retrieved", + "source_ids": [ + 262 + ] + }, + { + "entity_name": "knowledge base", + "entity_type": "TASK_OR_PROBLEM", + "description": "knowledge base is the source of semantically similar candidate entities", + "source_ids": [ + 262 + ] + }, + { + "entity_name": "json object", + "entity_type": "FILE_TYPE", + "description": "json object is the required format for the output containing the id of the matching candidate and an explanation", + "source_ids": [ + 262 + ] + }, + { + "entity_name": "id", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "id is a unique identifier used to reference candidate entities in the output", + "source_ids": [ + 262 + ] + }, + { + "entity_name": "1", + "entity_type": "VALUE", + "description": "1 is a specific value indicating that no matching candidate was found for the new entity", + "source_ids": [ + 262 + ] + }, + { + "entity_name": "text", + "entity_type": "DATASET_OR_CORPUS", + "description": "text is the source material from which the new entity is recently extracted", + "source_ids": [ + 262 + ] + }, + { + "entity_name": "explanation", + "entity_type": "TASK_OR_PROBLEM", + "description": "explanation is a brief description required in the output to justify the decision", + "source_ids": [ + 262 + ] + } + ], + "relations": [ + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "new entity", + "relation_name": "", + "weight": 10.0, + "description": "the entity resolution adjudicator evaluates the new entity to find a match", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "candidate entities", + "relation_name": "", + "weight": 10.0, + "description": "the entity resolution adjudicator compares the new entity against the candidate entities", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "new entity", + "tgt_entity_name": "candidate entities", + "relation_name": "", + "weight": 9.0, + "description": "the new entity is compared against the candidate entities to determine if they refer to the same concept", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "candidate entities", + "tgt_entity_name": "knowledge graph", + "relation_name": "", + "weight": 8.0, + "description": "candidate entities are retrieved from the knowledge graph", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "candidate entities", + "tgt_entity_name": "knowledge base", + "relation_name": "", + "weight": 8.0, + "description": "candidate entities are retrieved from the knowledge base", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "json object", + "relation_name": "", + "weight": 9.0, + "description": "the entity resolution adjudicator must output the result in a json object format", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "id", + "relation_name": "", + "weight": 9.0, + "description": "the entity resolution adjudicator outputs the id of the matching candidate", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 9.0, + "description": "the entity resolution adjudicator outputs 1 if no match is found", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "entity resolution adjudicator", + "tgt_entity_name": "explanation", + "relation_name": "", + "weight": 9.0, + "description": "the entity resolution adjudicator provides an explanation for the decision", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "new entity", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 10.0, + "description": "the new entity is extracted from the text", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "candidate entities", + "tgt_entity_name": "id", + "relation_name": "", + "weight": 10.0, + "description": "each candidate entity has a unique id for reference", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "json object", + "tgt_entity_name": "id", + "relation_name": "", + "weight": 8.0, + "description": "the json object contains the id of the matching candidate", + "source_ids": [ + 262 + ] + }, + { + "src_entity_name": "json object", + "tgt_entity_name": "explanation", + "relation_name": "", + "weight": 8.0, + "description": "the json object contains the explanation for the decision", + "source_ids": [ + 262 + ] + } + ], + "node_idx": 262 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_263.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_263.json new file mode 100644 index 0000000..c001e91 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_263.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 263 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_264.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_264.json new file mode 100644 index 0000000..a4bc714 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_264.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 264 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_265.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_265.json new file mode 100644 index 0000000..902e60f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_265.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "new entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "new entity is a task or problem described as needing analysis of its name type and description", + "source_ids": [ + 265 + ] + } + ], + "relations": [], + "node_idx": 265 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_266.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_266.json new file mode 100644 index 0000000..bbe7ed3 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_266.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "field by field adjudication", + "entity_type": "TASK_OR_PROBLEM", + "description": "field by field adjudication is a task described as a method to determine a match by evaluating each field with a specific focus", + "source_ids": [ + 266 + ] + } + ], + "relations": [], + "node_idx": 266 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_267.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_267.json new file mode 100644 index 0000000..ef90589 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_267.json @@ -0,0 +1,91 @@ +{ + "entities": [ + { + "entity_name": "entity name", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity name is a placeholder term used to denote the name of an entity in the context of matching criteria", + "source_ids": [ + 267 + ] + }, + { + "entity_name": "llm", + "entity_type": "TECHNOLOGY", + "description": "llm is mentioned as an abbreviation for large language model in the context of entity name matching", + "source_ids": [ + 267 + ] + }, + { + "entity_name": "large language model", + "entity_type": "TECHNOLOGY", + "description": "large language model is the full form of the abbreviation llm used as an example of a direct abbreviation match", + "source_ids": [ + 267 + ] + }, + { + "entity_name": "event detection", + "entity_type": "TASK_OR_PROBLEM", + "description": "event detection is a task mentioned as a distinct concept that should not be matched with named entity recognition", + "source_ids": [ + 267 + ] + }, + { + "entity_name": "named entity recognition", + "entity_type": "TASK_OR_PROBLEM", + "description": "named entity recognition is a task mentioned as a distinct concept that should not be matched with event detection", + "source_ids": [ + 267 + ] + }, + { + "entity_name": "high importance", + "entity_type": "CONCEPT", + "description": "high importance is a criterion mentioned for determining the similarity of entity names", + "source_ids": [ + 267 + ] + }, + { + "entity_name": "alias", + "entity_type": "CONCEPT", + "description": "alias is a concept mentioned as a valid form of similarity for entity names alongside direct abbreviations", + "source_ids": [ + 267 + ] + }, + { + "entity_name": "distinct concepts", + "entity_type": "CONCEPT", + "description": "distinct concepts refers to parallel concepts that are explicitly excluded from being considered a match", + "source_ids": [ + 267 + ] + } + ], + "relations": [ + { + "src_entity_name": "llm", + "tgt_entity_name": "large language model", + "relation_name": "", + "weight": 10.0, + "description": "llm is a direct abbreviation for large language model", + "source_ids": [ + 267 + ] + }, + { + "src_entity_name": "event detection", + "tgt_entity_name": "named entity recognition", + "relation_name": "", + "weight": 9.0, + "description": "event detection and named entity recognition are distinct parallel concepts and are explicitly stated as not a match", + "source_ids": [ + 267 + ] + } + ], + "node_idx": 267 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_268.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_268.json new file mode 100644 index 0000000..a72f5e0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_268.json @@ -0,0 +1,25 @@ +{ + "entities": [ + { + "entity_name": "entity type", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity type is a task or problem described as having medium importance in the context of type compatibility", + "source_ids": [ + 268 + ] + } + ], + "relations": [ + { + "src_entity_name": "entity type", + "tgt_entity_name": "entity type", + "relation_name": "", + "weight": 5.0, + "description": "the entity type is described as needing to be closely related and compatible with other types such as company and organization", + "source_ids": [ + 268 + ] + } + ], + "node_idx": 268 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_269.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_269.json new file mode 100644 index 0000000..391000b --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_269.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "description", + "entity_type": "CONCEPT", + "description": "description refers to the contextual importance of text segments which may differ as they are extracted from different parts of a document", + "source_ids": [ + 269 + ] + }, + { + "entity_name": "contextual importance", + "entity_type": "CONCEPT", + "description": "contextual importance is a property of descriptions that requires looking past surface level text similarity to determine if they describe the same underlying object or concept", + "source_ids": [ + 269 + ] + } + ], + "relations": [ + { + "src_entity_name": "description", + "tgt_entity_name": "contextual importance", + "relation_name": "", + "weight": 9.0, + "description": "descriptions possess contextual importance which dictates the need to analyze them for underlying identity rather than surface similarity", + "source_ids": [ + 269 + ] + } + ], + "node_idx": 269 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_27.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_27.json new file mode 100644 index 0000000..5bccbea --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_27.json @@ -0,0 +1,133 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a product that significantly outperforms existing baselines in solving complex document qa tasks", + "source_ids": [ + 27 + ] + }, + { + "entity_name": "existing baselines", + "entity_type": "PRODUCT", + "description": "existing baselines are the current methods or systems that bookrag outperforms in the experiments", + "source_ids": [ + 27 + ] + }, + { + "entity_name": "complex document qa tasks", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex document qa tasks are the specific problems that bookrag is designed to solve", + "source_ids": [ + 27 + ] + }, + { + "entity_name": "extensive experiments", + "entity_type": "EVENT", + "description": "extensive experiments are the tests conducted to evaluate the performance of bookrag", + "source_ids": [ + 27 + ] + }, + { + "entity_name": "multiple benchmarks", + "entity_type": "BENCHMARK", + "description": "multiple benchmarks are the evaluation standards used in the experiments to measure performance", + "source_ids": [ + 27 + ] + }, + { + "entity_name": "state of the art performance", + "entity_type": "EVALUATION_METRIC", + "description": "state of the art performance is the high level of achievement attained by bookrag in the tasks", + "source_ids": [ + 27 + ] + }, + { + "entity_name": "competitive efficiency", + "entity_type": "EVALUATION_METRIC", + "description": "competitive efficiency is a metric indicating that bookrag maintains good efficiency while performing well", + "source_ids": [ + 27 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "existing baselines", + "relation_name": "", + "weight": 9.0, + "description": "bookrag significantly outperforms existing baselines in experiments", + "source_ids": [ + 27 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "complex document qa tasks", + "relation_name": "", + "weight": 10.0, + "description": "bookrag attains state of the art performance in solving complex document qa tasks", + "source_ids": [ + 27 + ] + }, + { + "src_entity_name": "extensive experiments", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "extensive experiments were performed on bookrag to demonstrate its capabilities", + "source_ids": [ + 27 + ] + }, + { + "src_entity_name": "extensive experiments", + "tgt_entity_name": "multiple benchmarks", + "relation_name": "", + "weight": 8.0, + "description": "extensive experiments were conducted on multiple benchmarks to validate results", + "source_ids": [ + 27 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "state of the art performance", + "relation_name": "", + "weight": 10.0, + "description": "bookrag attained state of the art performance as a result of the experiments", + "source_ids": [ + 27 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "competitive efficiency", + "relation_name": "", + "weight": 8.0, + "description": "bookrag maintained competitive efficiency while solving tasks", + "source_ids": [ + 27 + ] + }, + { + "src_entity_name": "multiple benchmarks", + "tgt_entity_name": "state of the art performance", + "relation_name": "", + "weight": 7.0, + "description": "the performance on multiple benchmarks showed state of the art results", + "source_ids": [ + 27 + ] + } + ], + "node_idx": 27 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_270.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_270.json new file mode 100644 index 0000000..fedc16c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_270.json @@ -0,0 +1,25 @@ +{ + "entities": [ + { + "entity_name": "be strict and conservative", + "entity_type": "TASK_OR_PROBLEM", + "description": "be strict and conservative is a guideline or instruction regarding the standard for matching emphasizing high standards to avoid corrupting the knowledge graph", + "source_ids": [ + 270 + ] + } + ], + "relations": [ + { + "src_entity_name": "be strict and conservative", + "tgt_entity_name": "be strict and conservative", + "relation_name": "", + "weight": 1.0, + "description": "the entity refers to itself as a guideline for maintaining high standards in matching", + "source_ids": [ + 270 + ] + } + ], + "node_idx": 270 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_271.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_271.json new file mode 100644 index 0000000..f60b579 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_271.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 271 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_272.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_272.json new file mode 100644 index 0000000..eee12d7 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_272.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "apple", + "entity_type": "PRODUCT", + "description": "apple is mentioned as an example of a fruit", + "source_ids": [ + 272 + ] + }, + { + "entity_name": "apple inc", + "entity_type": "ORGANIZATION", + "description": "apple inc is mentioned as an example of a company", + "source_ids": [ + 272 + ] + } + ], + "relations": [ + { + "src_entity_name": "apple", + "tgt_entity_name": "apple inc", + "relation_name": "", + "weight": 10.0, + "description": "both are mentioned in the text as examples to illustrate that they are not a match despite sharing the same name", + "source_ids": [ + 272 + ] + } + ], + "node_idx": 272 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_273.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_273.json new file mode 100644 index 0000000..4e125d7 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_273.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "when in doubt", + "entity_type": "TASK_OR_PROBLEM", + "description": "when in doubt is a condition mentioned in the text that triggers a specific output requirement", + "source_ids": [ + 273 + ] + }, + { + "entity_name": "1", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 273 + ] + } + ], + "relations": [ + { + "src_entity_name": "when in doubt", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 10.0, + "description": "the text states that if the condition when in doubt is met the output must be 1", + "source_ids": [ + 273 + ] + } + ], + "node_idx": 273 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_274.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_274.json new file mode 100644 index 0000000..c99d545 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_274.json @@ -0,0 +1,25 @@ +{ + "entities": [ + { + "entity_name": "new entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "new entity is a concept representing a unique entity in a knowledge graph that requires strong evidence to match with existing entities", + "source_ids": [ + 274 + ] + } + ], + "relations": [ + { + "src_entity_name": "new entity", + "tgt_entity_name": "new entity", + "relation_name": "", + "weight": 10.0, + "description": "the concept of new entity is defined by the assumption that it is unique until proven otherwise", + "source_ids": [ + 274 + ] + } + ], + "node_idx": 274 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_275.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_275.json new file mode 100644 index 0000000..0aa2dea --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_275.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "json", + "entity_type": "FILE_TYPE", + "description": "json is a file format mentioned as the required output format for the answer", + "source_ids": [ + 275 + ] + }, + { + "entity_name": "output", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 275 + ] + } + ], + "relations": [ + { + "src_entity_name": "json", + "tgt_entity_name": "output", + "relation_name": "", + "weight": 10.0, + "description": "the text specifies that the answer must be provided in a valid json format", + "source_ids": [ + 275 + ] + } + ], + "node_idx": 275 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_276.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_276.json new file mode 100644 index 0000000..93c863f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_276.json @@ -0,0 +1,115 @@ +{ + "entities": [ + { + "entity_name": "select id", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "select id is a parameter representing an integer id for a candidate determined to be an exact match", + "source_ids": [ + 276 + ] + }, + { + "entity_name": "id", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "id is the identifier of the candidate determined to be an exact match", + "source_ids": [ + 276 + ] + }, + { + "entity_name": "exact match", + "entity_type": "TASK_OR_PROBLEM", + "description": "exact match refers to the condition where a candidate is determined to be identical to a reference", + "source_ids": [ + 276 + ] + }, + { + "entity_name": "1", + "entity_type": "MONEY", + "description": "1 is a specific integer value used to indicate that no exact match was found", + "source_ids": [ + 276 + ] + }, + { + "entity_name": "candidate", + "entity_type": "TASK_OR_PROBLEM", + "description": "candidate refers to an item being evaluated to determine if it is an exact match", + "source_ids": [ + 276 + ] + }, + { + "entity_name": "integer", + "entity_type": "MEASUREMENT", + "description": "integer is the data type specified for the select id value", + "source_ids": [ + 276 + ] + } + ], + "relations": [ + { + "src_entity_name": "select id", + "tgt_entity_name": "id", + "relation_name": "", + "weight": 9.0, + "description": "select id is defined as the integer value of the id of the candidate", + "source_ids": [ + 276 + ] + }, + { + "src_entity_name": "select id", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 8.0, + "description": "select id holds the value of the id if an exact match is found", + "source_ids": [ + 276 + ] + }, + { + "src_entity_name": "select id", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 9.0, + "description": "select id is assigned the value 1 if no exact match is found", + "source_ids": [ + 276 + ] + }, + { + "src_entity_name": "select id", + "tgt_entity_name": "candidate", + "relation_name": "", + "weight": 9.0, + "description": "select id represents the id of the candidate being evaluated", + "source_ids": [ + 276 + ] + }, + { + "src_entity_name": "select id", + "tgt_entity_name": "integer", + "relation_name": "", + "weight": 10.0, + "description": "select id is defined as an integer type", + "source_ids": [ + 276 + ] + }, + { + "src_entity_name": "candidate", + "tgt_entity_name": "exact match", + "relation_name": "", + "weight": 8.0, + "description": "the candidate is the subject of the exact match determination", + "source_ids": [ + 276 + ] + } + ], + "node_idx": 276 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_277.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_277.json new file mode 100644 index 0000000..c3a36aa --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_277.json @@ -0,0 +1,25 @@ +{ + "entities": [ + { + "entity_name": "explanation", + "entity_type": "TASK_OR_PROBLEM", + "description": "explanation is a task or problem described as a brief one sentence string explaining reasoning for entity matching", + "source_ids": [ + 277 + ] + } + ], + "relations": [ + { + "src_entity_name": "explanation", + "tgt_entity_name": "explanation", + "relation_name": "", + "weight": 5.0, + "description": "the entity explanation is defined by its role in explaining reasoning for matches or differences between entities", + "source_ids": [ + 277 + ] + } + ], + "node_idx": 277 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_278.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_278.json new file mode 100644 index 0000000..6f21866 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_278.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 278 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_279.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_279.json new file mode 100644 index 0000000..d101bdc --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_279.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 279 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_28.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_28.json new file mode 100644 index 0000000..506a9ad --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_28.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "2", + "entity_type": "NUMBER", + "description": "2 is a numerical value appearing in the text though its specific context or meaning is not defined", + "source_ids": [ + 28 + ] + } + ], + "relations": [], + "node_idx": 28 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_280.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_280.json new file mode 100644 index 0000000..14f35b3 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_280.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 280 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_281.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_281.json new file mode 100644 index 0000000..78907a5 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_281.json @@ -0,0 +1,59 @@ +{ + "entities": [ + { + "entity_name": "select id", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "select id is a parameter or variable defined as an integer in the provided text structure", + "source_ids": [ + 281 + ] + }, + { + "entity_name": "explanation", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "explanation is a parameter or variable defined as a string in the provided text structure", + "source_ids": [ + 281 + ] + }, + { + "entity_name": "example 1", + "entity_type": "TASK_OR_PROBLEM", + "description": "example 1 is a task or problem scenario where a match was found", + "source_ids": [ + 281 + ] + }, + { + "entity_name": "example 2", + "entity_type": "TASK_OR_PROBLEM", + "description": "example 2 is a task or problem scenario where no match was found", + "source_ids": [ + 281 + ] + } + ], + "relations": [ + { + "src_entity_name": "example 1", + "tgt_entity_name": "select id", + "relation_name": "", + "weight": 5.0, + "description": "example 1 is associated with the context of the provided json structure containing select id", + "source_ids": [ + 281 + ] + }, + { + "src_entity_name": "example 2", + "tgt_entity_name": "explanation", + "relation_name": "", + "weight": 5.0, + "description": "example 2 is associated with the context of the provided json structure containing explanation", + "source_ids": [ + 281 + ] + } + ], + "node_idx": 281 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_282.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_282.json new file mode 100644 index 0000000..dce14c2 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_282.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "selection task", + "entity_type": "TASK_OR_PROBLEM", + "description": "the selection task is the activity described in the text that requires processing the provided data", + "source_ids": [ + 282 + ] + }, + { + "entity_name": "integer", + "entity_type": "MEASUREMENT", + "description": "an integer is the specific type of output requested for the selection task", + "source_ids": [ + 282 + ] + } + ], + "relations": [ + { + "src_entity_name": "selection task", + "tgt_entity_name": "integer", + "relation_name": "", + "weight": 9.0, + "description": "the selection task requires the output to be a single integer", + "source_ids": [ + 282 + ] + } + ], + "node_idx": 282 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_283.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_283.json new file mode 100644 index 0000000..60b7ac3 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_283.json @@ -0,0 +1,5 @@ +{ + "entities": [], + "relations": [], + "node_idx": 283 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_284.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_284.json new file mode 100644 index 0000000..c5f4728 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_284.json @@ -0,0 +1,79 @@ +{ + "entities": [ + { + "entity_name": "figure 13", + "entity_type": "IMAGE", + "description": "figure 13 is an image containing a prompt for entity resolution judgement", + "source_ids": [ + 284 + ] + }, + { + "entity_name": "entity resolution", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity resolution is the task or problem addressed by the prompt in figure 13", + "source_ids": [ + 284 + ] + }, + { + "entity_name": "prompt", + "entity_type": "SOFTWARE", + "description": "the prompt is a software component used for entity resolution judgement", + "source_ids": [ + 284 + ] + }, + { + "entity_name": "examples", + "entity_type": "DATASET_OR_CORPUS", + "description": "examples are data instances that were omitted from the text due to space constraints", + "source_ids": [ + 284 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 13", + "tgt_entity_name": "entity resolution", + "relation_name": "", + "weight": 9.0, + "description": "figure 13 contains the prompt used for the entity resolution judgement task", + "source_ids": [ + 284 + ] + }, + { + "src_entity_name": "figure 13", + "tgt_entity_name": "prompt", + "relation_name": "", + "weight": 10.0, + "description": "figure 13 displays the prompt for entity resolution judgement", + "source_ids": [ + 284 + ] + }, + { + "src_entity_name": "prompt", + "tgt_entity_name": "entity resolution", + "relation_name": "", + "weight": 9.0, + "description": "the prompt is specifically designed for the entity resolution judgement task", + "source_ids": [ + 284 + ] + }, + { + "src_entity_name": "examples", + "tgt_entity_name": "figure 13", + "relation_name": "", + "weight": 8.0, + "description": "examples were omitted from figure 13 due to lack of space", + "source_ids": [ + 284 + ] + } + ], + "node_idx": 284 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_285.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_285.json new file mode 100644 index 0000000..2775794 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_285.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "19", + "entity_type": "NUMBER", + "description": "19 is a number mentioned in the text though its specific context or meaning is not provided", + "source_ids": [ + 285 + ] + } + ], + "relations": [], + "node_idx": 285 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_29.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_29.json new file mode 100644 index 0000000..b9e17fd --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_29.json @@ -0,0 +1,265 @@ +{ + "entities": [ + { + "entity_name": "section 2", + "entity_type": "SECTION_TITLE", + "description": "section 2 is the part of the text where related work is reviewed", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "section 3", + "entity_type": "SECTION_TITLE", + "description": "section 3 introduces the problem formulation ift and rag workflow", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "ift", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "ift is a method or technique introduced in section 3 alongside problem formulation and rag workflow", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "rag is a method or technique introduced in section 3 alongside problem formulation and ift", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "section 4", + "entity_type": "SECTION_TITLE", + "description": "section 4 presents the structure of bookindex and its construction", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is a structure presented in section 4 along with its construction details", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system or product whose structured execution involves query classification and operators discussed in section 5", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "section 6", + "entity_type": "SECTION_TITLE", + "description": "section 6 presents experimental results and detailed analysis", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "section 7", + "entity_type": "SECTION_TITLE", + "description": "section 7 is where the paper concludes", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "section 5", + "entity_type": "SECTION_TITLE", + "description": "section 5 is the part of the text where agent based retrieval is presented", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "query classification", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "query classification is a component of the agent based retrieval elaborated in section 5", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "operators", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "operators are used in the structured execution of bookrag as described in section 5", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "structured execution", + "entity_type": "TASK_OR_PROBLEM", + "description": "structured execution refers to the process in bookrag that utilizes query classification and operators", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "related work", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "experimental results", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 29 + ] + }, + { + "entity_name": "conclusion", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 29 + ] + } + ], + "relations": [ + { + "src_entity_name": "section 2", + "tgt_entity_name": "related work", + "relation_name": "", + "weight": 9.0, + "description": "section 2 is dedicated to reviewing related work", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "section 3", + "tgt_entity_name": "ift", + "relation_name": "", + "weight": 10.0, + "description": "section 3 introduces the ift method", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "section 3", + "tgt_entity_name": "rag", + "relation_name": "", + "weight": 10.0, + "description": "section 3 introduces the rag workflow", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "section 4", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "section 4 presents the structure and construction of bookindex", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "section 5", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "section 5 elaborates on the execution of bookrag", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "section 6", + "tgt_entity_name": "experimental results", + "relation_name": "", + "weight": 10.0, + "description": "section 6 presents the experimental results and analysis", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "section 7", + "tgt_entity_name": "conclusion", + "relation_name": "", + "weight": 10.0, + "description": "section 7 concludes the paper", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "section 5", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 10.0, + "description": "section 5 elaborates on query classification as part of agent based retrieval", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "section 5", + "tgt_entity_name": "operators", + "relation_name": "", + "weight": 10.0, + "description": "section 5 describes the operators used in the structured execution of bookrag", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "section 5", + "tgt_entity_name": "structured execution", + "relation_name": "", + "weight": 10.0, + "description": "section 5 presents the structured execution of bookrag", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "structured execution", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is the system undergoing structured execution described in section 5", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 8.0, + "description": "bookrag utilizes query classification in its execution", + "source_ids": [ + 29 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "operators", + "relation_name": "", + "weight": 8.0, + "description": "bookrag uses operators in its structured execution", + "source_ids": [ + 29 + ] + } + ], + "node_idx": 29 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_3.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_3.json new file mode 100644 index 0000000..f9ca5f0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_3.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "abstract", + "entity_type": "SECTION_TITLE", + "description": "As the opening section of the paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section provides a concise summary of the research problem, the proposed BookRAG solution involving hierarchical indexing and agent-based querying, and the reported state-of-the-art experimental results.", + "source_ids": [ + 3 + ] + } + ], + "relations": [], + "node_idx": 3 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_30.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_30.json new file mode 100644 index 0000000..7bc4290 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_30.json @@ -0,0 +1,51 @@ +{ + "entities": [ + { + "entity_name": "2 related work", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section provides a comprehensive review of existing literature, specifically focusing on Retrieval-Augmented Generation (RAG) methods and their limitations regarding hierarchical document structures.", + "source_ids": [ + 30 + ] + }, + { + "entity_name": "retrieval-augmented generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the class of techniques discussed in section 2 that enhance Large Language Models by querying external information, serving as the primary context for the related work analysis.", + "source_ids": [ + 30 + ] + }, + { + "entity_name": "hierarchical document structures", + "entity_type": "TASK_OR_PROBLEM", + "description": "Refers to the specific structural characteristics of documents (e.g., books, handbooks) that existing RAG approaches often overlook, which is a key problem addressed in the literature review within section 2.", + "source_ids": [ + 30 + ] + } + ], + "relations": [ + { + "src_entity_name": "retrieval-augmented generation", + "tgt_entity_name": "2 related work", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Retrieval-Augmented Generation' is a primary topic reviewed in section 2.", + "source_ids": [ + 30 + ] + }, + { + "src_entity_name": "hierarchical document structures", + "tgt_entity_name": "2 related work", + "relation_name": "", + "weight": 10.0, + "description": "The challenge of 'Hierarchical Document Structures' is a primary topic reviewed in section 2.", + "source_ids": [ + 30 + ] + } + ], + "node_idx": 30 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_31.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_31.json new file mode 100644 index 0000000..0d71eb4 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_31.json @@ -0,0 +1,89 @@ +{ + "entities": [ + { + "entity_name": "llm", + "entity_type": "TECHNOLOGY", + "description": "llm is a technology mentioned in the context of document analysis", + "source_ids": [ + 31 + ] + }, + { + "entity_name": "rag approaches", + "entity_type": "TECHNOLOGY", + "description": "rag approaches are modern representative technologies reviewed in the text", + "source_ids": [ + 31 + ] + }, + { + "entity_name": "document analysis", + "entity_type": "RESEARCH_FIELD", + "description": "document analysis is the field of study where llms and rag approaches are applied", + "source_ids": [ + 31 + ] + }, + { + "entity_name": "related works", + "entity_type": "SECTION_TITLE", + "description": "related works is the section of the text where the review of llm and rag approaches takes place", + "source_ids": [ + 31 + ] + } + ], + "relations": [ + { + "src_entity_name": "llm", + "tgt_entity_name": "rag approaches", + "relation_name": "", + "weight": 8.0, + "description": "both llm and rag approaches are reviewed together as related works in document analysis", + "source_ids": [ + 31 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "document analysis", + "relation_name": "", + "weight": 9.0, + "description": "llm is used in the field of document analysis", + "source_ids": [ + 31 + ] + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "document analysis", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches are used in the field of document analysis", + "source_ids": [ + 31 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "related works", + "relation_name": "", + "weight": 8.0, + "description": "llm is reviewed within the related works section", + "source_ids": [ + 31 + ] + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "related works", + "relation_name": "", + "weight": 8.0, + "description": "rag approaches are reviewed within the related works section", + "source_ids": [ + 31 + ] + } + ], + "node_idx": 31 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_32.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_32.json new file mode 100644 index 0000000..4d3e7c9 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_32.json @@ -0,0 +1,411 @@ +{ + "entities": [ + { + "entity_name": "llm", + "entity_type": "TECHNOLOGY", + "description": "llm refers to large language models which are used for robust semantic reasoning in document analysis", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "html", + "entity_type": "FILE_TYPE", + "description": "html is an unstructured document format mentioned as a target for conversion into structured formats", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "pdf", + "entity_type": "FILE_TYPE", + "description": "pdf is an unstructured document format mentioned as a target for conversion into structured formats", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "raw text", + "entity_type": "FILE_TYPE", + "description": "raw text is an unstructured document format mentioned as a target for conversion into structured formats", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "relational tables", + "entity_type": "PRODUCT", + "description": "relational tables are structured formats that unstructured documents are converted into", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "evaporate", + "entity_type": "SOFTWARE", + "description": "evaporate is a system that utilizes llms to synthesize extraction code for converting semi structured web documents", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "lotus", + "entity_type": "SOFTWARE", + "description": "lotus is a system that extends the relational model with semantic operators for querying unstructured text corpora", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "docetl", + "entity_type": "SOFTWARE", + "description": "docetl is a system that introduces an agentic framework to optimize complex information extraction tasks", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "sql", + "entity_type": "PROGRAMMING_LANGUAGE", + "description": "sql is a query language referenced in the context of sql like queries executed by lotus", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "web documents", + "entity_type": "PRODUCT", + "description": "web documents are semi structured documents processed by systems like evaporate", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "document pages", + "entity_type": "IMAGE", + "description": "document pages are viewed as images in research to preserve layout and visual information", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "semantic operators", + "entity_type": "TECHNOLOGY", + "description": "semantic operators are features added by lotus to extend the relational model", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "predicates", + "entity_type": "TECHNOLOGY", + "description": "predicates are llm powered functions like filter and join used in lotus", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "filter", + "entity_type": "TECHNOLOGY", + "description": "filter is an example of an llm powered predicate used in lotus", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "join", + "entity_type": "TECHNOLOGY", + "description": "join is an example of an llm powered predicate used in lotus", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "agentic framework", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "an agentic framework is introduced by docetl to optimize information extraction", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "information extraction", + "entity_type": "TASK_OR_PROBLEM", + "description": "information extraction is the complex task optimized by docetl", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "layout", + "entity_type": "CONCEPT", + "description": "layout refers to the visual structure of documents preserved when viewing pages as images", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "visual information", + "entity_type": "CONCEPT", + "description": "visual information refers to the content preserved when document pages are viewed as images", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "semi structured web documents", + "entity_type": "PRODUCT", + "description": "semi structured web documents are the input type for evaporate", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "structured databases", + "entity_type": "PRODUCT", + "description": "structured databases are the output format produced by evaporate", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "manual annotation", + "entity_type": "TASK_OR_PROBLEM", + "description": "manual annotation is a heavy process avoided by evaporate s cost effective conversion", + "source_ids": [ + 32 + ] + }, + { + "entity_name": "unstructured text corpora", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 32 + ] + } + ], + "relations": [ + { + "src_entity_name": "llm", + "tgt_entity_name": "html", + "relation_name": "", + "weight": 9.0, + "description": "llms are used to convert html documents into structured formats", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "pdf", + "relation_name": "", + "weight": 9.0, + "description": "llms are used to convert pdf documents into structured formats", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "raw text", + "relation_name": "", + "weight": 9.0, + "description": "llms are used to convert raw text documents into structured formats", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "relational tables", + "relation_name": "", + "weight": 9.0, + "description": "llms facilitate the conversion of unstructured documents into relational tables", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "evaporate utilizes llms to synthesize extraction code", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "web documents", + "relation_name": "", + "weight": 9.0, + "description": "evaporate converts semi structured web documents into structured databases", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "lotus uses llm powered predicates to execute queries", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "sql", + "relation_name": "", + "weight": 8.0, + "description": "lotus allows users to execute sql like queries", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "unstructured text corpora", + "relation_name": "", + "weight": 9.0, + "description": "lotus allows queries to be executed over unstructured text corpora", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "docetl is an llm based system for optimizing information extraction tasks", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "document pages", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "research proposes using llms to analyze document pages viewed as images", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "semantic operators", + "relation_name": "", + "weight": 10.0, + "description": "lotus extends the relational model with semantic operators", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "lotus", + "tgt_entity_name": "predicates", + "relation_name": "", + "weight": 9.0, + "description": "lotus uses llm powered predicates for querying", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "predicates", + "tgt_entity_name": "filter", + "relation_name": "", + "weight": 8.0, + "description": "filter is an example of a predicate used in lotus", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "predicates", + "tgt_entity_name": "join", + "relation_name": "", + "weight": 8.0, + "description": "join is an example of a predicate used in lotus", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "agentic framework", + "relation_name": "", + "weight": 10.0, + "description": "docetl introduces an agentic framework", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "docetl", + "tgt_entity_name": "information extraction", + "relation_name": "", + "weight": 10.0, + "description": "docetl is designed to optimize complex information extraction tasks", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "document pages", + "tgt_entity_name": "layout", + "relation_name": "", + "weight": 9.0, + "description": "document pages are viewed as images to preserve critical layout information", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "document pages", + "tgt_entity_name": "visual information", + "relation_name": "", + "weight": 9.0, + "description": "document pages are viewed as images to preserve critical visual information", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "semi structured web documents", + "relation_name": "", + "weight": 9.0, + "description": "evaporate converts semi structured web documents", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "structured databases", + "relation_name": "", + "weight": 9.0, + "description": "evaporate converts documents into structured databases", + "source_ids": [ + 32 + ] + }, + { + "src_entity_name": "evaporate", + "tgt_entity_name": "manual annotation", + "relation_name": "", + "weight": 8.0, + "description": "evaporate avoids the need for heavy manual annotation", + "source_ids": [ + 32 + ] + } + ], + "node_idx": 32 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_33.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_33.json new file mode 100644 index 0000000..0663449 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_33.json @@ -0,0 +1,279 @@ +{ + "entities": [ + { + "entity_name": "rag approaches", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "rag approaches are methods proven to excel in tasks like question answering and data cleaning", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "open ended question answering", + "entity_type": "TASK_OR_PROBLEM", + "description": "open ended question answering is a task where rag approaches have been proven to excel", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "programming context", + "entity_type": "TASK_OR_PROBLEM", + "description": "programming context is a task where rag approaches have been proven to excel", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "sql rewrite", + "entity_type": "TASK_OR_PROBLEM", + "description": "sql rewrite is a task where rag approaches have been proven to excel", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "data cleaning", + "entity_type": "TASK_OR_PROBLEM", + "description": "data cleaning is a task where rag approaches have been proven to excel", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "naive rag technique", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the naive rag technique relies on retrieving query relevant contexts from external knowledge bases to mitigate hallucination", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "llms", + "entity_type": "TECHNOLOGY", + "description": "llms are large language models whose hallucination is mitigated by the naive rag technique", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "graph structures", + "entity_type": "TECHNOLOGY", + "description": "graph structures are adopted by many rag approaches to organize information and relationships within documents", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "agentic rag paradigm", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the agentic rag paradigm employs autonomous agents to dynamically orchestrate and refine the rag pipeline", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "autonomous agents", + "entity_type": "TECHNOLOGY", + "description": "autonomous agents are employed by the agentic rag paradigm to orchestrate and refine the pipeline", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "rag pipeline", + "entity_type": "TASK_OR_PROBLEM", + "description": "the rag pipeline is the process dynamically orchestrated and refined by the agentic rag paradigm", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "recent survey of graph based rag methods", + "entity_type": "PUBLICATION_VENUE", + "description": "a recent survey of graph based rag methods is referenced for more details on the topic", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "rag", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "rag is a technique proven to excel in many tasks including question answering and data cleaning", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "external knowledge bases", + "entity_type": "TECHNOLOGY", + "description": "external knowledge bases are sources from which the naive rag technique retrieves query relevant contexts", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "hallucination", + "entity_type": "TASK_OR_PROBLEM", + "description": "hallucination is a problem in llms that the naive rag technique aims to mitigate", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "overall retrieval performance", + "entity_type": "EVALUATION_METRIC", + "description": "overall retrieval performance is improved by rag approaches that adopt graph structures", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "reasoning robustness", + "entity_type": "EVALUATION_METRIC", + "description": "reasoning robustness is a metric significantly boosted by the agentic rag paradigm", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "generation fidelity", + "entity_type": "EVALUATION_METRIC", + "description": "generation fidelity is a metric significantly boosted by the agentic rag paradigm", + "source_ids": [ + 33 + ] + }, + { + "entity_name": "documents", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 33 + ] + } + ], + "relations": [ + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "open ended question answering", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches excel in open ended question answering", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "programming context", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches excel in programming context tasks", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "sql rewrite", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches excel in sql rewrite tasks", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "data cleaning", + "relation_name": "", + "weight": 9.0, + "description": "rag approaches excel in data cleaning tasks", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "naive rag technique", + "tgt_entity_name": "llms", + "relation_name": "", + "weight": 10.0, + "description": "the naive rag technique mitigates the hallucination of llms", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "naive rag technique", + "tgt_entity_name": "external knowledge bases", + "relation_name": "", + "weight": 8.0, + "description": "the naive rag technique retrieves query relevant contexts from external knowledge bases", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "rag approaches", + "tgt_entity_name": "graph structures", + "relation_name": "", + "weight": 9.0, + "description": "many rag approaches have adopted graph structures to organize information", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "graph structures", + "tgt_entity_name": "documents", + "relation_name": "", + "weight": 8.0, + "description": "graph structures organize information and relationships within documents", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "agentic rag paradigm", + "tgt_entity_name": "autonomous agents", + "relation_name": "", + "weight": 10.0, + "description": "the agentic rag paradigm employs autonomous agents to orchestrate the pipeline", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "agentic rag paradigm", + "tgt_entity_name": "rag pipeline", + "relation_name": "", + "weight": 10.0, + "description": "the agentic rag paradigm dynamically orchestrates and refines the rag pipeline", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "agentic rag paradigm", + "tgt_entity_name": "reasoning robustness", + "relation_name": "", + "weight": 9.0, + "description": "the agentic rag paradigm significantly boosts reasoning robustness", + "source_ids": [ + 33 + ] + }, + { + "src_entity_name": "agentic rag paradigm", + "tgt_entity_name": "generation fidelity", + "relation_name": "", + "weight": 9.0, + "description": "the agentic rag paradigm significantly boosts generation fidelity", + "source_ids": [ + 33 + ] + } + ], + "node_idx": 33 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_34.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_34.json new file mode 100644 index 0000000..55a0a11 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_34.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "3 preliminaries", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section establishes the foundational concepts, definitions, and theoretical background necessary to understand the proposed BookRAG method and its context within Retrieval-Augmented Generation (RAG) for hierarchical documents.", + "source_ids": [ + 34 + ] + } + ], + "relations": [], + "node_idx": 34 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_35.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_35.json new file mode 100644 index 0000000..8ef037f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_35.json @@ -0,0 +1,123 @@ +{ + "entities": [ + { + "entity_name": "complex document qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex document qa is the research problem being formalized in the text", + "source_ids": [ + 35 + ] + }, + { + "entity_name": "information foraging theory", + "entity_type": "SCIENTIFIC_THEORY", + "description": "information foraging theory ift is a foundational theory introduced in the text", + "source_ids": [ + 35 + ] + }, + { + "entity_name": "ift", + "entity_type": "SCIENTIFIC_THEORY", + "description": "ift is an abbreviation for information foraging theory a foundational theory introduced in the text", + "source_ids": [ + 35 + ] + }, + { + "entity_name": "rag systems", + "entity_type": "TECHNOLOGY", + "description": "rag systems are a type of technology whose general workflow is reviewed in the text", + "source_ids": [ + 35 + ] + }, + { + "entity_name": "research problem", + "entity_type": "TASK_OR_PROBLEM", + "description": "the research problem is the subject being formalized in the text", + "source_ids": [ + 35 + ] + }, + { + "entity_name": "general workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "the general workflow of rag systems is the subject being briefly reviewed in the text", + "source_ids": [ + 35 + ] + }, + { + "entity_name": "section", + "entity_type": "SECTION_TITLE", + "description": "the section is the part of the document that contains the formalization and review described in the text", + "source_ids": [ + 35 + ] + } + ], + "relations": [ + { + "src_entity_name": "complex document qa", + "tgt_entity_name": "information foraging theory", + "relation_name": "", + "weight": 8.0, + "description": "the text states that the research problem of complex document qa is formalized alongside the introduction of information foraging theory", + "source_ids": [ + 35 + ] + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "ift", + "relation_name": "", + "weight": 10.0, + "description": "ift is the abbreviation used for information foraging theory in the text", + "source_ids": [ + 35 + ] + }, + { + "src_entity_name": "rag systems", + "tgt_entity_name": "complex document qa", + "relation_name": "", + "weight": 6.0, + "description": "the text mentions reviewing the workflow of rag systems in the context of formalizing the research problem of complex document qa", + "source_ids": [ + 35 + ] + }, + { + "src_entity_name": "section", + "tgt_entity_name": "research problem", + "relation_name": "", + "weight": 9.0, + "description": "the section is the location where the research problem is formalized", + "source_ids": [ + 35 + ] + }, + { + "src_entity_name": "section", + "tgt_entity_name": "general workflow", + "relation_name": "", + "weight": 9.0, + "description": "the section is the location where the general workflow is reviewed", + "source_ids": [ + 35 + ] + }, + { + "src_entity_name": "research problem", + "tgt_entity_name": "general workflow", + "relation_name": "", + "weight": 7.0, + "description": "both the research problem and the general workflow are discussed within the same section", + "source_ids": [ + 35 + ] + } + ], + "node_idx": 35 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_36.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_36.json new file mode 100644 index 0000000..ad70587 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_36.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "3.1 problem formulation", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Preliminaries' within the BookRAG paper, this section formalizes the research problem of complex document Question Answering (QA) and establishes the foundational context for the proposed approach.", + "source_ids": [ + 36 + ] + }, + { + "entity_name": "complex document qa", + "entity_type": "TASK_OR_PROBLEM", + "description": "Refers to the specific challenge of answering questions based on complex documents, which is the core research problem being formalized in section 3.1.", + "source_ids": [ + 36 + ] + } + ], + "relations": [ + { + "src_entity_name": "complex document qa", + "tgt_entity_name": "3.1 problem formulation", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Complex Document QA' is the primary topic and subject of the problem formulation detailed in section 3.1.", + "source_ids": [ + 36 + ] + } + ], + "node_idx": 36 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_37.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_37.json new file mode 100644 index 0000000..dc6c266 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_37.json @@ -0,0 +1,451 @@ +{ + "entities": [ + { + "entity_name": "question answering", + "entity_type": "TASK_OR_PROBLEM", + "description": "question answering is a task aimed at answering user queries based on long form documents", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "document", + "entity_type": "PRODUCT", + "description": "a document is represented as a sequence of pages containing content blocks organized within a logical chapter hierarchy", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "user query", + "entity_type": "TASK_OR_PROBLEM", + "description": "a user query is an input provided to the system to generate an accurate answer", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "answer", + "entity_type": "TASK_OR_PROBLEM", + "description": "an answer is the output generated by the system ideally grounded in specific evidence blocks", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "evidence blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "evidence blocks are a specific set of content blocks from the document used to ground the generated answer", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "method s", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "method s is a developed approach that maps a structured document and a query to a final answer", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "pages", + "entity_type": "MEASUREMENT", + "description": "pages are the units that collectively form a document represented as a sequence", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "content blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "content blocks are distinct elements within a document such as text segments section headers tables or images", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "text segment", + "entity_type": "DATASET_OR_CORPUS", + "description": "a text segment is a type of content block within a document", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "section header", + "entity_type": "DATASET_OR_CORPUS", + "description": "a section header is a type of content block within a document", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "table", + "entity_type": "DATASET_OR_CORPUS", + "description": "a table is a type of content block within a document", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "image", + "entity_type": "DATASET_OR_CORPUS", + "description": "an image is a type of content block within a document", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "logical chapter hierarchy", + "entity_type": "TASK_OR_PROBLEM", + "description": "a logical chapter hierarchy is the organizational structure within which content blocks are arranged", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n is a variable representing the number of pages in a document", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "m", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "m is a variable representing the number of content blocks in a document", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "p", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "p is a variable representing a specific page within a document sequence", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "q", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "q is a variable representing a user query", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "a", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "a is a variable representing the generated answer", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "e", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "e is a variable representing a subset of evidence blocks", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "b", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "b is a variable representing the sequence of all content blocks", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "d", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "d is a variable representing the document", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "equation 1", + "entity_type": "EQUATION_OR_FORMULA", + "description": "equation 1 is the mathematical formulation defining the task as a s d q", + "source_ids": [ + 37 + ] + }, + { + "entity_name": "references 5 11 33", + "entity_type": "PUBLICATION_VENUE", + "description": "references 5 11 and 33 are citations mentioned in the text regarding the problem of question answering", + "source_ids": [ + 37 + ] + } + ], + "relations": [ + { + "src_entity_name": "question answering", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 10.0, + "description": "question answering aims to answer queries based on documents", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "question answering", + "tgt_entity_name": "user query", + "relation_name": "", + "weight": 10.0, + "description": "question answering processes user queries to generate answers", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "question answering", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 10.0, + "description": "the goal of question answering is to generate an accurate answer", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "answer", + "tgt_entity_name": "evidence blocks", + "relation_name": "", + "weight": 9.0, + "description": "an answer is ideally grounded in a specific set of evidence blocks", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "method s", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 10.0, + "description": "method s maps a structured document to a final answer", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "method s", + "tgt_entity_name": "user query", + "relation_name": "", + "weight": 10.0, + "description": "method s maps a user query to a final answer", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "method s", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 10.0, + "description": "method s produces the final answer", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "document", + "tgt_entity_name": "pages", + "relation_name": "", + "weight": 10.0, + "description": "a document is represented as a sequence of pages", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "document", + "tgt_entity_name": "content blocks", + "relation_name": "", + "weight": 10.0, + "description": "pages in a document collectively contain a sequence of content blocks", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "text segment", + "relation_name": "", + "weight": 8.0, + "description": "a text segment is an example of a content block", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "section header", + "relation_name": "", + "weight": 8.0, + "description": "a section header is an example of a content block", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 8.0, + "description": "a table is an example of a content block", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 8.0, + "description": "an image is an example of a content block", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "logical chapter hierarchy", + "relation_name": "", + "weight": 9.0, + "description": "content blocks are organized within a logical chapter hierarchy", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "document", + "tgt_entity_name": "n", + "relation_name": "", + "weight": 9.0, + "description": "n defines the sequence length of pages in the document", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "document", + "tgt_entity_name": "m", + "relation_name": "", + "weight": 9.0, + "description": "m defines the sequence length of content blocks in the document", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "document", + "tgt_entity_name": "p", + "relation_name": "", + "weight": 9.0, + "description": "p represents an individual page within the document sequence", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "document", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 9.0, + "description": "b represents an individual content block within the document", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "method s", + "tgt_entity_name": "equation 1", + "relation_name": "", + "weight": 10.0, + "description": "method s is mathematically defined by equation 1", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "question answering", + "tgt_entity_name": "references 5 11 33", + "relation_name": "", + "weight": 8.0, + "description": "the problem of question answering is associated with references 5 11 and 33", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "answer", + "tgt_entity_name": "a", + "relation_name": "", + "weight": 10.0, + "description": "a is the variable symbol for the answer", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "user query", + "tgt_entity_name": "q", + "relation_name": "", + "weight": 10.0, + "description": "q is the variable symbol for the user query", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "evidence blocks", + "tgt_entity_name": "e", + "relation_name": "", + "weight": 10.0, + "description": "e is the variable symbol for the set of evidence blocks", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 10.0, + "description": "b is the variable symbol for the sequence of content blocks", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "pages", + "tgt_entity_name": "p", + "relation_name": "", + "weight": 10.0, + "description": "p is the variable symbol for pages", + "source_ids": [ + 37 + ] + }, + { + "src_entity_name": "document", + "tgt_entity_name": "d", + "relation_name": "", + "weight": 10.0, + "description": "d is the variable symbol for the document", + "source_ids": [ + 37 + ] + } + ], + "node_idx": 37 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_38.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_38.json new file mode 100644 index 0000000..109d12a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_38.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "3", + "entity_type": "MEASUREMENT", + "description": "3 is a numerical value mentioned in the text potentially representing a count index or measurement", + "source_ids": [ + 38 + ] + } + ], + "relations": [], + "node_idx": 38 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_39.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_39.json new file mode 100644 index 0000000..d5c9d15 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_39.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (1)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the variable A as a function of D and q. LaTeX: 𝐴 = S( 𝐷,𝑞 ) (1)", + "source_ids": [ + 39 + ] + } + ], + "relations": [], + "node_idx": 39 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_4.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_4.json new file mode 100644 index 0000000..2578ef2 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_4.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "pvldb", + "entity_type": "PUBLICATION_VENUE", + "description": "pvldb is a publication venue referenced in the text for its reference format", + "source_ids": [ + 4 + ] + }, + { + "entity_name": "reference format", + "entity_type": "SECTION_TITLE", + "description": "reference format is a section or concept mentioned in the context of pvldb", + "source_ids": [ + 4 + ] + } + ], + "relations": [ + { + "src_entity_name": "pvldb", + "tgt_entity_name": "reference format", + "relation_name": "", + "weight": 9.0, + "description": "pvldb is associated with a specific reference format mentioned in the text", + "source_ids": [ + 4 + ] + } + ], + "node_idx": 4 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_40.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_40.json new file mode 100644 index 0000000..73081aa --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_40.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "s", + "entity_type": "PERSON", + "description": "s is an entity described as needing to navigate sequential page content and logical hierarchy to synthesize a response", + "source_ids": [ + 40 + ] + }, + { + "entity_name": "d", + "entity_type": "TASK_OR_PROBLEM", + "description": "d represents the logical hierarchy that s must navigate to synthesize a response", + "source_ids": [ + 40 + ] + } + ], + "relations": [ + { + "src_entity_name": "s", + "tgt_entity_name": "d", + "relation_name": "", + "weight": 9.0, + "description": "s must navigate the logical hierarchy of d to synthesize the response", + "source_ids": [ + 40 + ] + } + ], + "node_idx": 40 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_41.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_41.json new file mode 100644 index 0000000..10932d8 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_41.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "3.2 information foraging theory", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Preliminaries' within the BookRAG paper, this section formalizes the foundational Information Foraging Theory (IFT) used to model user behavior in complex document QA tasks.", + "source_ids": [ + 41 + ] + }, + { + "entity_name": "information foraging theory", + "entity_type": "SCIENTIFIC_THEORY", + "description": "A theoretical framework explaining how individuals seek information efficiently, serving as the conceptual basis for the system's design discussed in section 3.2.", + "source_ids": [ + 41 + ] + } + ], + "relations": [ + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "3.2 information foraging theory", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Information Foraging Theory' is the primary subject matter detailed in section 3.2.", + "source_ids": [ + 41 + ] + } + ], + "node_idx": 41 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_42.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_42.json new file mode 100644 index 0000000..72ff46d --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_42.json @@ -0,0 +1,159 @@ +{ + "entities": [ + { + "entity_name": "information foraging theory", + "entity_type": "SCIENTIFIC_THEORY", + "description": "information foraging theory ift is a framework for understanding information access as a process analogous to animal foraging", + "source_ids": [ + 42 + ] + }, + { + "entity_name": "animal foraging", + "entity_type": "TASK_OR_PROBLEM", + "description": "animal foraging is the process used as an analogy to explain how users access information in the context of information foraging theory", + "source_ids": [ + 42 + ] + }, + { + "entity_name": "information scent", + "entity_type": "CONCEPT", + "description": "information scent refers to cues like keywords or icons that users follow to navigate content", + "source_ids": [ + 42 + ] + }, + { + "entity_name": "information patches", + "entity_type": "CONCEPT", + "description": "information patches are clusters of content such as sections in handbooks that users navigate between", + "source_ids": [ + 42 + ] + }, + { + "entity_name": "handbooks", + "entity_type": "PRODUCT", + "description": "handbooks are mentioned as containing sections that serve as information patches", + "source_ids": [ + 42 + ] + }, + { + "entity_name": "keywords", + "entity_type": "CONCEPT", + "description": "keywords are identified as specific examples of information scent cues used by users", + "source_ids": [ + 42 + ] + }, + { + "entity_name": "icons", + "entity_type": "CONCEPT", + "description": "icons are identified as specific examples of information scent cues used by users", + "source_ids": [ + 42 + ] + }, + { + "entity_name": "sections", + "entity_type": "CONCEPT", + "description": "sections are described as parts of handbooks that function as information patches", + "source_ids": [ + 42 + ] + }, + { + "entity_name": "reference 42", + "entity_type": "PUBLICATION_VENUE", + "description": "reference 42 is the citation source for information foraging theory mentioned in the text", + "source_ids": [ + 42 + ] + } + ], + "relations": [ + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "animal foraging", + "relation_name": "", + "weight": 10.0, + "description": "information foraging theory uses animal foraging as an analogy to explain information access", + "source_ids": [ + 42 + ] + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "information scent", + "relation_name": "", + "weight": 9.0, + "description": "information foraging theory suggests that users follow information scent cues to navigate content", + "source_ids": [ + 42 + ] + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "information foraging theory describes information patches as clusters of content that users navigate between", + "source_ids": [ + 42 + ] + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "handbooks", + "relation_name": "", + "weight": 7.0, + "description": "information scent cues like keywords or icons are found within sections of handbooks which act as information patches", + "source_ids": [ + 42 + ] + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "keywords", + "relation_name": "", + "weight": 10.0, + "description": "keywords are explicitly listed as examples of information scent", + "source_ids": [ + 42 + ] + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "icons", + "relation_name": "", + "weight": 10.0, + "description": "icons are explicitly listed as examples of information scent", + "source_ids": [ + 42 + ] + }, + { + "src_entity_name": "information patches", + "tgt_entity_name": "sections", + "relation_name": "", + "weight": 10.0, + "description": "sections in handbooks are explicitly listed as examples of information patches", + "source_ids": [ + 42 + ] + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "reference 42", + "relation_name": "", + "weight": 8.0, + "description": "information foraging theory is cited with reference number 42 in the text", + "source_ids": [ + 42 + ] + } + ], + "node_idx": 42 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_43.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_43.json new file mode 100644 index 0000000..40bd26d --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_43.json @@ -0,0 +1,179 @@ +{ + "entities": [ + { + "entity_name": "experts", + "entity_type": "PERSON", + "description": "experts are individuals seeking a solution to a specific problem within a large technical handbook", + "source_ids": [ + 43 + ] + }, + { + "entity_name": "large technical handbook", + "entity_type": "BOOK", + "description": "the large technical handbook is the source material containing the problem and information patches", + "source_ids": [ + 43 + ] + }, + { + "entity_name": "key terms", + "entity_type": "CONCEPT", + "description": "key terms are extracted by experts to act as information scent", + "source_ids": [ + 43 + ] + }, + { + "entity_name": "information scent", + "entity_type": "CONCEPT", + "description": "information scent is the guidance provided by key terms that leads experts to promising sections", + "source_ids": [ + 43 + ] + }, + { + "entity_name": "information patches", + "entity_type": "CONCEPT", + "description": "information patches are the promising sections within the handbook that experts navigate to", + "source_ids": [ + 43 + ] + }, + { + "entity_name": "final answer", + "entity_type": "CONCEPT", + "description": "the final answer is the result formulated by experts after analyzing the content within the information patches", + "source_ids": [ + 43 + ] + }, + { + "entity_name": "problem", + "entity_type": "TASK_OR_PROBLEM", + "description": "a specific problem is the target issue that experts are seeking to solve within the handbook", + "source_ids": [ + 43 + ] + }, + { + "entity_name": "diverse content", + "entity_type": "CONCEPT", + "description": "diverse content refers to the varied information found within the information patches that experts analyze", + "source_ids": [ + 43 + ] + }, + { + "entity_name": "precise knowledge", + "entity_type": "CONCEPT", + "description": "precise knowledge is the specific information extracted from the diverse content to help formulate the answer", + "source_ids": [ + 43 + ] + } + ], + "relations": [ + { + "src_entity_name": "experts", + "tgt_entity_name": "large technical handbook", + "relation_name": "", + "weight": 10.0, + "description": "experts seek a solution within the large technical handbook", + "source_ids": [ + 43 + ] + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "key terms", + "relation_name": "", + "weight": 9.0, + "description": "experts extract key terms from the handbook", + "source_ids": [ + 43 + ] + }, + { + "src_entity_name": "key terms", + "tgt_entity_name": "information scent", + "relation_name": "", + "weight": 10.0, + "description": "key terms act as information scent", + "source_ids": [ + 43 + ] + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "information scent guides experts to navigate towards information patches", + "source_ids": [ + 43 + ] + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "experts navigate to and analyze content within information patches", + "source_ids": [ + 43 + ] + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "final answer", + "relation_name": "", + "weight": 10.0, + "description": "experts formulate a final answer based on the analysis of information patches", + "source_ids": [ + 43 + ] + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "problem", + "relation_name": "", + "weight": 10.0, + "description": "experts are seeking a solution to the specific problem", + "source_ids": [ + 43 + ] + }, + { + "src_entity_name": "experts", + "tgt_entity_name": "diverse content", + "relation_name": "", + "weight": 9.0, + "description": "experts analyze the diverse content within the information patches", + "source_ids": [ + 43 + ] + }, + { + "src_entity_name": "diverse content", + "tgt_entity_name": "precise knowledge", + "relation_name": "", + "weight": 9.0, + "description": "experts extract precise knowledge from the diverse content", + "source_ids": [ + 43 + ] + }, + { + "src_entity_name": "precise knowledge", + "tgt_entity_name": "final answer", + "relation_name": "", + "weight": 10.0, + "description": "precise knowledge is used to formulate the final answer", + "source_ids": [ + 43 + ] + } + ], + "node_idx": 43 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_44.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_44.json new file mode 100644 index 0000000..baf505a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_44.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "3.3 rag workflow", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Preliminaries' within the BookRAG paper, this section details the general operational workflow of Retrieval-Augmented Generation (RAG) systems, serving as a foundational context for the proposed hierarchical approach.", + "source_ids": [ + 44 + ] + }, + { + "entity_name": "rag systems", + "entity_type": "TECHNOLOGY", + "description": "Refers to Retrieval-Augmented Generation systems, which are the subject of the workflow analysis detailed in section 3.3.", + "source_ids": [ + 44 + ] + } + ], + "relations": [ + { + "src_entity_name": "rag systems", + "tgt_entity_name": "3.3 rag workflow", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'RAG systems' is the primary topic and subject matter of section 3.3.", + "source_ids": [ + 44 + ] + } + ], + "node_idx": 44 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_45.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_45.json new file mode 100644 index 0000000..571e378 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_45.json @@ -0,0 +1,213 @@ +{ + "entities": [ + { + "entity_name": "retrieval augmented generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval augmented generation is a system framework described as operating in a two phase process", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "offline indexing phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "offline indexing phase is the first phase where unstructured corpus data is organized into a structured index", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "online retrieval phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "online retrieval phase is the second phase where the system retrieves relevant components based on a user query", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "vector databases", + "entity_type": "SOFTWARE", + "description": "vector databases are mentioned as a possible form of structured index in the offline indexing phase", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "kg", + "entity_type": "SOFTWARE", + "description": "kg knowledge graph is mentioned as a possible form of structured index in the offline indexing phase", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "llm", + "entity_type": "SOFTWARE", + "description": "llm is the component that generates output informed by retrieved components in the online retrieval phase", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "user query", + "entity_type": "TASK_OR_PROBLEM", + "description": "user query is the input used in the online retrieval phase to retrieve relevant components", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "document s native tree topology", + "entity_type": "TASK_OR_PROBLEM", + "description": "document s native tree topology is the logical structure that the proposed approach seeks to integrate with retrieval structures", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "unstructured corpus data", + "entity_type": "DATASET_OR_CORPUS", + "description": "unstructured corpus data is the input material organized into a structured index during the offline indexing phase", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "text chunks", + "entity_type": "DATASET_OR_CORPUS", + "description": "text chunks are examples of relevant components retrieved during the online retrieval phase", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "subgraphs", + "entity_type": "DATASET_OR_CORPUS", + "description": "subgraphs are examples of relevant components retrieved during the online retrieval phase", + "source_ids": [ + 45 + ] + }, + { + "entity_name": "document", + "entity_type": "TASK_OR_PROBLEM", + "description": "the document is the source of the original logical hierarchy and native tree topology referenced in the text", + "source_ids": [ + 45 + ] + } + ], + "relations": [ + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "offline indexing phase", + "relation_name": "", + "weight": 10.0, + "description": "retrieval augmented generation systems operate in the offline indexing phase as their first step", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "online retrieval phase", + "relation_name": "", + "weight": 10.0, + "description": "retrieval augmented generation systems operate in the online retrieval phase as their second step", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "offline indexing phase", + "tgt_entity_name": "vector databases", + "relation_name": "", + "weight": 9.0, + "description": "vector databases are a form of structured index created during the offline indexing phase", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "offline indexing phase", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "kg is a form of structured index created during the offline indexing phase", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "online retrieval phase", + "tgt_entity_name": "user query", + "relation_name": "", + "weight": 10.0, + "description": "the online retrieval phase uses the user query to retrieve relevant components", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "online retrieval phase", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the online retrieval phase informs the llm s generation with retrieved components", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "document s native tree topology", + "relation_name": "", + "weight": 8.0, + "description": "the proposed approach for retrieval augmented generation seeks to integrate retrieval structures with the document s native tree topology", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "offline indexing phase", + "tgt_entity_name": "unstructured corpus data", + "relation_name": "", + "weight": 10.0, + "description": "the offline indexing phase organizes unstructured corpus data into a structured index", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "online retrieval phase", + "tgt_entity_name": "text chunks", + "relation_name": "", + "weight": 9.0, + "description": "text chunks are retrieved as relevant components during the online retrieval phase", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "online retrieval phase", + "tgt_entity_name": "subgraphs", + "relation_name": "", + "weight": 9.0, + "description": "subgraphs are retrieved as relevant components during the online retrieval phase", + "source_ids": [ + 45 + ] + }, + { + "src_entity_name": "retrieval augmented generation", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "the retrieval augmented generation approach seeks to integrate structures with the document s native topology", + "source_ids": [ + 45 + ] + } + ], + "node_idx": 45 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_46.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_46.json new file mode 100644 index 0000000..97560b2 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_46.json @@ -0,0 +1,69 @@ +{ + "entities": [ + { + "entity_name": "4 bookindex", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section details the novel index structure named BookIndex. It explains how the approach extracts a hierarchical tree from documents to serve as a table of contents, utilizes graphs to capture entity relationships, and maps entities to tree nodes.", + "source_ids": [ + 46 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "A novel index structure introduced in this work that builds a hierarchical tree from documents to act as a table of contents and uses graphs to capture intricate relationships between entities.", + "source_ids": [ + 46 + ] + }, + { + "entity_name": "hierarchical tree", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The structural method used within BookIndex to organize document content from different granularity levels, serving the role of a table of contents.", + "source_ids": [ + 46 + ] + }, + { + "entity_name": "graph", + "entity_type": "TECHNOLOGY", + "description": "The data structure employed by BookIndex to capture and represent the intricate relationships between entities within the document hierarchy.", + "source_ids": [ + 46 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookindex", + "tgt_entity_name": "4 bookindex", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'BookIndex' is the primary subject defined and detailed in section 4.", + "source_ids": [ + 46 + ] + }, + { + "src_entity_name": "hierarchical tree", + "tgt_entity_name": "4 bookindex", + "relation_name": "", + "weight": 9.5, + "description": "The 'hierarchical tree' is a core component and technique described within section 4 as part of the BookIndex implementation.", + "source_ids": [ + 46 + ] + }, + { + "src_entity_name": "graph", + "tgt_entity_name": "4 bookindex", + "relation_name": "", + "weight": 9.5, + "description": "The use of a 'graph' to capture entity relations is a key technical detail explained in section 4.", + "source_ids": [ + 46 + ] + } + ], + "node_idx": 46 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_47.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_47.json new file mode 100644 index 0000000..f4cfbaa --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_47.json @@ -0,0 +1,169 @@ +{ + "entities": [ + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is a proposed hierarchical structure aware index designed to capture logical hierarchy and entity relations within complex documents", + "source_ids": [ + 47 + ] + }, + { + "entity_name": "tree construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "tree construction is the first stage of the two stage process that parses document layout to establish hierarchical nodes", + "source_ids": [ + 47 + ] + }, + { + "entity_name": "graph construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graph construction is the second stage of the process that extracts fine grained entity knowledge and refines it", + "source_ids": [ + 47 + ] + }, + { + "entity_name": "gradient based entity resolution method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "a novel gradient based entity resolution method used to refine entity knowledge during graph construction", + "source_ids": [ + 47 + ] + }, + { + "entity_name": "document", + "entity_type": "PRODUCT", + "description": "document refers to the complex documents within which the bookindex captures logical hierarchy and entity relations", + "source_ids": [ + 47 + ] + }, + { + "entity_name": "logical hierarchy", + "entity_type": "CONCEPT", + "description": "logical hierarchy is the explicit structure within complex documents that the bookindex is designed to capture", + "source_ids": [ + 47 + ] + }, + { + "entity_name": "entity relations", + "entity_type": "CONCEPT", + "description": "entity relations are the intricate connections within complex documents that the bookindex is designed to capture", + "source_ids": [ + 47 + ] + }, + { + "entity_name": "hierarchical nodes", + "entity_type": "CONCEPT", + "description": "hierarchical nodes are the categorized units established by the tree construction process", + "source_ids": [ + 47 + ] + }, + { + "entity_name": "fine grained entity knowledge", + "entity_type": "CONCEPT", + "description": "fine grained entity knowledge is the detailed information extracted from tree nodes during the graph construction process", + "source_ids": [ + 47 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookindex", + "tgt_entity_name": "tree construction", + "relation_name": "", + "weight": 9.0, + "description": "bookindex utilizes tree construction as its first stage to parse document layout and establish hierarchical nodes", + "source_ids": [ + 47 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "graph construction", + "relation_name": "", + "weight": 9.0, + "description": "bookindex utilizes graph construction as its second stage to extract and refine entity knowledge", + "source_ids": [ + 47 + ] + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "gradient based entity resolution method", + "relation_name": "", + "weight": 8.0, + "description": "graph construction refines entity knowledge using the novel gradient based entity resolution method", + "source_ids": [ + 47 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "bookindex is designed to operate on complex documents to capture their internal structures", + "source_ids": [ + 47 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "logical hierarchy", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is explicitly designed to capture the explicit logical hierarchy found in documents", + "source_ids": [ + 47 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "entity relations", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is explicitly designed to capture the intricate entity relations found in documents", + "source_ids": [ + 47 + ] + }, + { + "src_entity_name": "tree construction", + "tgt_entity_name": "hierarchical nodes", + "relation_name": "", + "weight": 9.0, + "description": "tree construction parses document layout to establish hierarchical nodes", + "source_ids": [ + 47 + ] + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "fine grained entity knowledge", + "relation_name": "", + "weight": 9.0, + "description": "graph construction extracts fine grained entity knowledge from tree nodes", + "source_ids": [ + 47 + ] + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "hierarchical nodes", + "relation_name": "", + "weight": 8.0, + "description": "graph construction operates on the tree nodes established by tree construction to extract knowledge", + "source_ids": [ + 47 + ] + } + ], + "node_idx": 47 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_48.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_48.json new file mode 100644 index 0000000..d641f89 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_48.json @@ -0,0 +1,131 @@ +{ + "entities": [ + { + "entity_name": "figure 2", + "entity_type": "IMAGE", + "description": "figure 2 is an image illustrating the bookindex construction process", + "source_ids": [ + 48 + ] + }, + { + "entity_name": "bookindex construction process", + "entity_type": "TASK_OR_PROBLEM", + "description": "the bookindex construction process is a phase involving tree construction and graph construction", + "source_ids": [ + 48 + ] + }, + { + "entity_name": "tree construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "tree construction is a component of the bookindex construction process derived from layout parsing and section filtering", + "source_ids": [ + 48 + ] + }, + { + "entity_name": "layout parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "layout parsing is a method used to derive tree construction", + "source_ids": [ + 48 + ] + }, + { + "entity_name": "section filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "section filtering is a method used to derive tree construction", + "source_ids": [ + 48 + ] + }, + { + "entity_name": "graph construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "graph construction is a component of the bookindex construction process involving kg construction and gradient based entity resolution", + "source_ids": [ + 48 + ] + }, + { + "entity_name": "kg construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "kg construction is a step involved in graph construction", + "source_ids": [ + 48 + ] + }, + { + "entity_name": "gradient based entity resolution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "gradient based entity resolution is a method involved in graph construction", + "source_ids": [ + 48 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookindex construction process", + "tgt_entity_name": "tree construction", + "relation_name": "", + "weight": 10.0, + "description": "the bookindex construction process includes tree construction as a phase", + "source_ids": [ + 48 + ] + }, + { + "src_entity_name": "bookindex construction process", + "tgt_entity_name": "graph construction", + "relation_name": "", + "weight": 10.0, + "description": "the bookindex construction process includes graph construction as a phase", + "source_ids": [ + 48 + ] + }, + { + "src_entity_name": "tree construction", + "tgt_entity_name": "layout parsing", + "relation_name": "", + "weight": 9.0, + "description": "tree construction is derived from layout parsing", + "source_ids": [ + 48 + ] + }, + { + "src_entity_name": "tree construction", + "tgt_entity_name": "section filtering", + "relation_name": "", + "weight": 9.0, + "description": "tree construction is derived from section filtering", + "source_ids": [ + 48 + ] + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "kg construction", + "relation_name": "", + "weight": 9.0, + "description": "graph construction involves kg construction", + "source_ids": [ + 48 + ] + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "gradient based entity resolution", + "relation_name": "", + "weight": 9.0, + "description": "graph construction involves gradient based entity resolution", + "source_ids": [ + 48 + ] + } + ], + "node_idx": 48 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_49.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_49.json new file mode 100644 index 0000000..61d567d --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_49.json @@ -0,0 +1,357 @@ +{ + "entities": [ + { + "entity_name": "bookindex construction", + "entity_type": "IMAGE", + "description": "A diagram illustrating the process of constructing a book index, divided into Tree Construction and Graph Construction phases.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "tree construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "The top section of the diagram detailing the initial phase of building the index from document layouts.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "layout parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Step 1 in Tree Construction involving the extraction of visual elements like Tables, Text, Titles, and Images from a document layout.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "section filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Step 2 in Tree Construction where parsed sections are filtered based on title properties such as FontSize and content type (Section vs Text).", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "title: method", + "entity_type": "SECTION_TITLE", + "description": "A specific text label identified during parsing with FontSize 14.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "title: experiment", + "entity_type": "SECTION_TITLE", + "description": "A specific text label identified during parsing with FontSize 14.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "title: moe layer", + "entity_type": "SECTION_TITLE", + "description": "A specific text label identified during parsing with FontSize 20.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "level: 2 type: section", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "An attribute indicating that 'Method' and 'Experiment' titles are classified as Level 2 Sections.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "level: none type: text", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "An attribute associated with 'MOE Layer', marked with a red cross, indicating it was rejected or not treated as a section.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "tree node", + "entity_type": "HARDWARE", + "description": "Visual element representing nodes in the tree structure shown in the legend and the resulting BookIndex.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "gt-link", + "entity_type": "SOFTWARE", + "description": "Legend item representing Ground Truth links between entities in the diagram.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "relation", + "entity_type": "DATASET_OR_CORPUS", + "description": "Legend item representing relationships between entities.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "graph construction", + "entity_type": "TASK_OR_PROBLEM", + "description": "The bottom section of the diagram detailing the construction of a knowledge graph for entity resolution.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "kg construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Step 1 in Graph Construction showing the generation of a Knowledge Graph from Tree Nodes.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "gradient-based entity resolution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Step 2 in Graph Construction involving similarity matching and merging of entities.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "similarity", + "entity_type": "EVALUATION_METRIC", + "description": "Y-axis label of the chart in the Gradient-based Entity Resolution step.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "entity", + "entity_type": "DATASET_OR_CORPUS", + "description": "X-axis label of the chart in the Gradient-based Entity Resolution step.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "merge", + "entity_type": "TASK_OR_PROBLEM", + "description": "Action performed to combine similar entities (e.g., e2 and e9) into a single resolved entity.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "The final output data structure shown on the far right, containing the organized tree and graph representation.", + "source_ids": [ + 49 + ] + }, + { + "entity_name": "image cref='#/texts/52'", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 49 + ] + } + ], + "relations": [ + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "bookindex construction", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to BookIndex Construction", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "tree construction", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Tree Construction", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "layout parsing", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Layout Parsing", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "section filtering", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Section Filtering", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "title: method", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Title: Method", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "title: experiment", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Title: Experiment", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "title: moe layer", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Title: MOE Layer", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "level: 2 type: section", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Level: 2 Type: Section", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "level: none type: text", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Level: None Type: Text", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "tree node", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Tree Node", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "gt-link", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to GT-Link", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Entity", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "relation", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Relation", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "graph construction", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Graph Construction", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "kg construction", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to KG Construction", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "gradient-based entity resolution", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Gradient-based Entity Resolution", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "similarity", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Similarity", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "merge", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to Merge", + "source_ids": [ + 49 + ] + }, + { + "src_entity_name": "image cref='#/texts/52'", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/52' related to BookIndex", + "source_ids": [ + 49 + ] + } + ], + "node_idx": 49 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_5.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_5.json new file mode 100644 index 0000000..677a953 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_5.json @@ -0,0 +1,261 @@ +{ + "entities": [ + { + "entity_name": "shu wang", + "entity_type": "PERSON", + "description": "shu wang is one of the authors of the paper titled bookrag", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "yingli zhou", + "entity_type": "PERSON", + "description": "yingli zhou is one of the authors of the paper titled bookrag", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "yixiang fang", + "entity_type": "PERSON", + "description": "yixiang fang is one of the authors of the paper titled bookrag", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a hierarchical structure aware index based approach for retrieval augmented generation on complex documents", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "pvldb", + "entity_type": "PUBLICATION_VENUE", + "description": "pvldb is the publication venue where the paper was published in 2025", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "2025", + "entity_type": "DATE", + "description": "2025 is the year the paper was published in pvldb", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "19", + "entity_type": "MEASUREMENT", + "description": "19 is the volume number of the pvldb publication where the paper appeared", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "1", + "entity_type": "MEASUREMENT", + "description": "1 is the issue number of the pvldb publication where the paper appeared", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "xxx xxx", + "entity_type": "MEASUREMENT", + "description": "xxx xxx represents the page range of the paper in the publication", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "xx xx xxx xx", + "entity_type": "MEASUREMENT", + "description": "xx xx xxx xx is the doi identifier for the paper", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "retrieval augmented generation", + "entity_type": "TECHNOLOGY", + "description": "retrieval augmented generation is the technology domain addressed by the bookrag approach", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "hierarchical structure aware index based approach", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "hierarchical structure aware index based approach is the specific method used by bookrag", + "source_ids": [ + 5 + ] + }, + { + "entity_name": "complex documents", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex documents are the type of documents that the bookrag approach is designed to handle", + "source_ids": [ + 5 + ] + } + ], + "relations": [ + { + "src_entity_name": "shu wang", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "shu wang is an author of the bookrag paper", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "yingli zhou", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "yingli zhou is an author of the bookrag paper", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "yixiang fang", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "yixiang fang is an author of the bookrag paper", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "pvldb", + "relation_name": "", + "weight": 10.0, + "description": "bookrag was published in the pvldb journal", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "2025", + "relation_name": "", + "weight": 9.0, + "description": "pvldb published the bookrag paper in the year 2025", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "shu wang", + "tgt_entity_name": "yingli zhou", + "relation_name": "", + "weight": 8.0, + "description": "shu wang and yingli zhou are co authors on the bookrag paper", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "shu wang", + "tgt_entity_name": "yixiang fang", + "relation_name": "", + "weight": 8.0, + "description": "shu wang and yixiang fang are co authors on the bookrag paper", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "yingli zhou", + "tgt_entity_name": "yixiang fang", + "relation_name": "", + "weight": 8.0, + "description": "yingli zhou and yixiang fang are co authors on the bookrag paper", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "retrieval augmented generation", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is an approach for retrieval augmented generation", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "hierarchical structure aware index based approach", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is defined as a hierarchical structure aware index based approach", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "complex documents", + "relation_name": "", + "weight": 9.0, + "description": "bookrag is designed for processing complex documents", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "19", + "relation_name": "", + "weight": 8.0, + "description": "pvldb volume 19 contains the paper", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 8.0, + "description": "pvldb issue 1 contains the paper", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "xxx xxx", + "relation_name": "", + "weight": 8.0, + "description": "the paper appears on pages xxx xxx in pvldb", + "source_ids": [ + 5 + ] + }, + { + "src_entity_name": "pvldb", + "tgt_entity_name": "xx xx xxx xx", + "relation_name": "", + "weight": 8.0, + "description": "the paper in pvldb has the doi xx xx xxx xx", + "source_ids": [ + 5 + ] + } + ], + "node_idx": 5 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_50.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_50.json new file mode 100644 index 0000000..0da54f0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_50.json @@ -0,0 +1,69 @@ +{ + "entities": [ + { + "entity_name": "4.1 overview of bookindex", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'BOOKINDEX', this section provides a high-level introduction to the proposed BookIndex, defining its hierarchical structure-aware nature and outlining its two-stage construction process (Tree Construction and Graph Construction) for capturing logical hierarchies and entity relations in complex documents.", + "source_ids": [ + 50 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "A hierarchical structure-aware index designed to capture explicit logical hierarchy and intricate entity relations within complex documents, serving as the core subject of section 4.1.", + "source_ids": [ + 50 + ] + }, + { + "entity_name": "tree construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The first stage of the BookIndex construction process, which parses document layout to establish hierarchical nodes categorized by type, detailed in section 4.1.", + "source_ids": [ + 50 + ] + }, + { + "entity_name": "graph construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The second stage of the BookIndex construction process, which extracts fine-grained entity knowledge from tree nodes and refines it using gradient-based entity resolution, detailed in section 4.1.", + "source_ids": [ + 50 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookindex", + "tgt_entity_name": "4.1 overview of bookindex", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'BookIndex' is the primary topic defined and introduced in section 4.1.", + "source_ids": [ + 50 + ] + }, + { + "src_entity_name": "tree construction", + "tgt_entity_name": "4.1 overview of bookindex", + "relation_name": "", + "weight": 9.5, + "description": "The method 'Tree Construction' is a key component of the overview provided in section 4.1.", + "source_ids": [ + 50 + ] + }, + { + "src_entity_name": "graph construction", + "tgt_entity_name": "4.1 overview of bookindex", + "relation_name": "", + "weight": 9.5, + "description": "The method 'Graph Construction' is a key component of the overview provided in section 4.1.", + "source_ids": [ + 50 + ] + } + ], + "node_idx": 50 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_51.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_51.json new file mode 100644 index 0000000..106fc3a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_51.json @@ -0,0 +1,381 @@ +{ + "entities": [ + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is a formally defined triplet structure used to represent document hierarchy and entities", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "tree structure", + "entity_type": "TASK_OR_PROBLEM", + "description": "tree structure represents the set of nodes derived from the document s explicit logical hierarchy", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "knowledge graph", + "entity_type": "SOFTWARE", + "description": "knowledge graph is a structure that captures fine grained entities and their relations within the document", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "graph tree link", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "graph tree link gt link is a mechanism that links entities to specific tree nodes from which they were extracted", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "document", + "entity_type": "PRODUCT", + "description": "document is the source material containing logical hierarchy entities and relations", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "titles", + "entity_type": "SECTION_TITLE", + "description": "titles are examples of nodes in the document s explicit logical hierarchy", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "sections", + "entity_type": "SECTION_TITLE", + "description": "sections are examples of nodes in the document s explicit logical hierarchy", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "tables", + "entity_type": "TABLE", + "description": "tables are examples of nodes in the document s explicit logical hierarchy", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n represents the set of nodes in the tree structure", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "e t", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "e t denotes the nesting relationships in the tree structure", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "v", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v represents the fine grained entities in the knowledge graph", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "e g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "e g denotes the relations in the knowledge graph", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "m v", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "m v is the graph tree link function linking entities to tree nodes", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "p", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "p represents the power set of nodes in the tree structure used in the graph tree link definition", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "information patches", + "entity_type": "CONCEPT", + "description": "information patches are hierarchical tree nodes serving as native contexts for information seeking", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "information scent", + "entity_type": "CONCEPT", + "description": "information scent is the rich information provided by entities and relations to guide navigation", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 51 + ] + }, + { + "entity_name": "navigation", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 51 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookindex", + "tgt_entity_name": "tree structure", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is defined as a triplet that includes the tree structure as one of its components", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "knowledge graph", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is defined as a triplet that includes the knowledge graph as one of its components", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "graph tree link", + "relation_name": "", + "weight": 10.0, + "description": "bookindex is defined as a triplet that includes the graph tree link as one of its components", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "the tree structure is derived from the document s explicit logical hierarchy", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "the knowledge graph captures entities and relations scattered throughout the document", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "graph tree link", + "tgt_entity_name": "tree structure", + "relation_name": "", + "weight": 10.0, + "description": "the graph tree link connects entities to specific tree nodes within the tree structure", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "graph tree link", + "tgt_entity_name": "knowledge graph", + "relation_name": "", + "weight": 10.0, + "description": "the graph tree link connects entities from the knowledge graph to the tree structure", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "titles", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "titles are part of the document s explicit logical hierarchy", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "sections", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "sections are part of the document s explicit logical hierarchy", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 8.0, + "description": "tables are part of the document s explicit logical hierarchy", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "titles", + "relation_name": "", + "weight": 9.0, + "description": "titles are examples of nodes included in the tree structure", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "sections", + "relation_name": "", + "weight": 9.0, + "description": "sections are examples of nodes included in the tree structure", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "tables", + "relation_name": "", + "weight": 9.0, + "description": "tables are examples of nodes included in the tree structure", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "v", + "relation_name": "", + "weight": 10.0, + "description": "v represents the entities contained within the knowledge graph", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "e g", + "relation_name": "", + "weight": 10.0, + "description": "e g represents the relations contained within the knowledge graph", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "n", + "relation_name": "", + "weight": 10.0, + "description": "n represents the set of nodes contained within the tree structure", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "e t", + "relation_name": "", + "weight": 10.0, + "description": "e t represents the nesting relationships contained within the tree structure", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "", + "relation_name": "", + "weight": 10.0, + "description": "is the first component of the bookindex triplet definition", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "", + "tgt_entity_name": "", + "relation_name": "", + "weight": 10.0, + "description": "is the set of nodes that constitutes the tree structure", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "", + "tgt_entity_name": "p", + "relation_name": "", + "weight": 10.0, + "description": "maps entities to the power set of nodes p", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "tree structure", + "tgt_entity_name": "information patches", + "relation_name": "", + "weight": 9.0, + "description": "the hierarchical tree nodes in the tree structure serve as information patches", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "information scent", + "relation_name": "", + "weight": 9.0, + "description": "the entities and relations in the knowledge graph act as information scent", + "source_ids": [ + 51 + ] + }, + { + "src_entity_name": "information scent", + "tgt_entity_name": "navigation", + "relation_name": "", + "weight": 8.0, + "description": "information scent guides navigation between and within information patches", + "source_ids": [ + 51 + ] + } + ], + "node_idx": 51 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_52.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_52.json new file mode 100644 index 0000000..93616cc --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_52.json @@ -0,0 +1,289 @@ +{ + "entities": [ + { + "entity_name": "figure 2", + "entity_type": "IMAGE", + "description": "figure 2 is an image that provides an example of the bookindex", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is a system or product being illustrated in the text", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "tree component", + "entity_type": "SOFTWARE", + "description": "the tree component is a part of the bookindex that organizes documents into a hierarchical structure", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "graph component", + "entity_type": "SOFTWARE", + "description": "the graph component is a part of the bookindex composed of entities and relations extracted from document nodes", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "gt link", + "entity_type": "TECHNOLOGY", + "description": "gt link is a feature illustrated by blue dotted lines that connects entities to their corresponding tree nodes", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "text", + "entity_type": "PRODUCT", + "description": "text is a type of content block serving as a leaf node within the document structure", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "tables", + "entity_type": "PRODUCT", + "description": "tables are a type of content block serving as a leaf node within the document structure", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "images", + "entity_type": "PRODUCT", + "description": "images are a type of content block serving as a leaf node within the document structure", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "section nodes", + "entity_type": "PRODUCT", + "description": "section nodes are hierarchical nodes within the document structure that contain content blocks", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "document", + "entity_type": "PRODUCT", + "description": "document is the object being organized into a hierarchical structure by the tree component", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "content blocks", + "entity_type": "PRODUCT", + "description": "content blocks are the items text tables images that serve as leaf nodes in the hierarchy", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "leaf nodes", + "entity_type": "PRODUCT", + "description": "leaf nodes are the terminal elements in the hierarchical structure containing content blocks", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "semantic entities", + "entity_type": "CONCEPT", + "description": "semantic entities are the extracted entities grounded within the document s logical hierarchy by gt link", + "source_ids": [ + 52 + ] + }, + { + "entity_name": "logical hierarchy", + "entity_type": "CONCEPT", + "description": "logical hierarchy is the structure within the document that grounds the semantic entities", + "source_ids": [ + 52 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 2", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "figure 2 provides an example of the bookindex", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "tree component", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "the tree component is a part of the bookindex", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "graph component", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "the graph component is a part of the bookindex", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "graph component", + "relation_name": "", + "weight": 8.0, + "description": "gt link is a feature within the graph component that connects entities to tree nodes", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "tree component", + "tgt_entity_name": "section nodes", + "relation_name": "", + "weight": 8.0, + "description": "the tree component organizes content blocks within section nodes", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "text", + "tgt_entity_name": "section nodes", + "relation_name": "", + "weight": 7.0, + "description": "text serves as a leaf node nested within section nodes", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "section nodes", + "relation_name": "", + "weight": 7.0, + "description": "tables serve as a leaf node nested within section nodes", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "images", + "tgt_entity_name": "section nodes", + "relation_name": "", + "weight": 7.0, + "description": "images serve as a leaf node nested within section nodes", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "tree component", + "relation_name": "", + "weight": 8.0, + "description": "gt link connects entities back to their corresponding tree nodes", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "tree component", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 9.0, + "description": "the tree component organizes the document into a hierarchical structure", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "leaf nodes", + "relation_name": "", + "weight": 9.0, + "description": "content blocks serve as leaf nodes within the structure", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "text", + "tgt_entity_name": "content blocks", + "relation_name": "", + "weight": 10.0, + "description": "text is identified as a type of content block", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "tables", + "tgt_entity_name": "content blocks", + "relation_name": "", + "weight": 10.0, + "description": "tables are identified as a type of content block", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "images", + "tgt_entity_name": "content blocks", + "relation_name": "", + "weight": 10.0, + "description": "images are identified as a type of content block", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "gt link", + "tgt_entity_name": "semantic entities", + "relation_name": "", + "weight": 9.0, + "description": "gt link explicitly connects semantic entities back to their corresponding tree nodes", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "semantic entities", + "tgt_entity_name": "logical hierarchy", + "relation_name": "", + "weight": 8.0, + "description": "semantic entities are grounded within the document s logical hierarchy", + "source_ids": [ + 52 + ] + }, + { + "src_entity_name": "graph component", + "tgt_entity_name": "semantic entities", + "relation_name": "", + "weight": 8.0, + "description": "the graph component is composed of entities and relations extracted from nodes which include semantic entities", + "source_ids": [ + 52 + ] + } + ], + "node_idx": 52 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_53.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_53.json new file mode 100644 index 0000000..9d9294d --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_53.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "4.2 tree construction", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'BookIndex' and the first stage of its construction process, this section details the method for parsing document layouts to establish hierarchical nodes categorized by type.", + "source_ids": [ + 53 + ] + }, + { + "entity_name": "tree construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The specific sequential process described in section 4.2 that parses document layout to create hierarchical nodes.", + "source_ids": [ + 53 + ] + } + ], + "relations": [ + { + "src_entity_name": "tree construction", + "tgt_entity_name": "4.2 tree construction", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Tree Construction' is the primary topic and methodology detailed in section 4.2.", + "source_ids": [ + 53 + ] + } + ], + "node_idx": 53 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_54.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_54.json new file mode 100644 index 0000000..84e487c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_54.json @@ -0,0 +1,97 @@ +{ + "entities": [ + { + "entity_name": "t", + "entity_type": "TASK_OR_PROBLEM", + "description": "t is a structured hierarchical tree that is the result of transforming a raw document", + "source_ids": [ + 54 + ] + }, + { + "entity_name": "raw document", + "entity_type": "PRODUCT", + "description": "raw document is the initial input that undergoes transformation into a structured hierarchical tree", + "source_ids": [ + 54 + ] + }, + { + "entity_name": "robust layout parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "robust layout parsing is a key step involved in transforming the raw document into a structured hierarchical tree", + "source_ids": [ + 54 + ] + }, + { + "entity_name": "intelligent section filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "intelligent section filtering is a key step involved in transforming the raw document into a structured hierarchical tree", + "source_ids": [ + 54 + ] + }, + { + "entity_name": "task or problem", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 54 + ] + } + ], + "relations": [ + { + "src_entity_name": "t", + "tgt_entity_name": "task or problem", + "relation_name": "", + "weight": 5.0, + "description": "t represents the structured hierarchical tree which is the outcome of the transformation task described", + "source_ids": [ + 54 + ] + }, + { + "src_entity_name": "robust layout parsing", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 9.0, + "description": "robust layout parsing is a step used to create the structured hierarchical tree t", + "source_ids": [ + 54 + ] + }, + { + "src_entity_name": "intelligent section filtering", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 9.0, + "description": "intelligent section filtering is a step used to create the structured hierarchical tree t", + "source_ids": [ + 54 + ] + }, + { + "src_entity_name": "raw document", + "tgt_entity_name": "robust layout parsing", + "relation_name": "", + "weight": 8.0, + "description": "raw document is the input processed by the robust layout parsing step", + "source_ids": [ + 54 + ] + }, + { + "src_entity_name": "raw document", + "tgt_entity_name": "intelligent section filtering", + "relation_name": "", + "weight": 8.0, + "description": "raw document is the input processed by the intelligent section filtering step", + "source_ids": [ + 54 + ] + } + ], + "node_idx": 54 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_55.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_55.json new file mode 100644 index 0000000..4045a24 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_55.json @@ -0,0 +1,87 @@ +{ + "entities": [ + { + "entity_name": "4.2.1 layout parsing", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Tree Construction' within the 'BOOKINDEX' chapter, this section details the initial phase of transforming raw documents into structured hierarchical trees using layout analysis and recognition models to identify and organize diverse content blocks.", + "source_ids": [ + 55 + ] + }, + { + "entity_name": "layout analysis", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A specific technique employed in section 4.2.1 to understand the spatial arrangement of elements within document pages.", + "source_ids": [ + 55 + ] + }, + { + "entity_name": "recognition models", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The computational models utilized in section 4.2.1 to recognize and classify different types of content blocks such as text, tables, and images.", + "source_ids": [ + 55 + ] + }, + { + "entity_name": "document d", + "entity_type": "TASK_OR_PROBLEM", + "description": "The input data object (a collection of pages) that serves as the target for processing in section 4.2.1.", + "source_ids": [ + 55 + ] + }, + { + "entity_name": "content blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "The diverse structural units (e.g., text, tables, images) identified and extracted from the document pages as described in section 4.2.1.", + "source_ids": [ + 55 + ] + } + ], + "relations": [ + { + "src_entity_name": "layout analysis", + "tgt_entity_name": "4.2.1 layout parsing", + "relation_name": "", + "weight": 9.5, + "description": "Layout Analysis is a core methodological component discussed within section 4.2.1.", + "source_ids": [ + 55 + ] + }, + { + "src_entity_name": "recognition models", + "tgt_entity_name": "4.2.1 layout parsing", + "relation_name": "", + "weight": 9.5, + "description": "Recognition Models are the primary tools used in the process detailed in section 4.2.1.", + "source_ids": [ + 55 + ] + }, + { + "src_entity_name": "document d", + "tgt_entity_name": "4.2.1 layout parsing", + "relation_name": "", + "weight": 10.0, + "description": "Document D is the specific input entity being processed in section 4.2.1.", + "source_ids": [ + 55 + ] + }, + { + "src_entity_name": "content blocks", + "tgt_entity_name": "4.2.1 layout parsing", + "relation_name": "", + "weight": 10.0, + "description": "Content Blocks represent the output entities identified and organized within section 4.2.1.", + "source_ids": [ + 55 + ] + } + ], + "node_idx": 55 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_56.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_56.json new file mode 100644 index 0000000..30c98a2 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_56.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "the output", + "entity_type": "TASK_OR_PROBLEM", + "description": "the output is described as a sequence of primitive", + "source_ids": [ + 56 + ] + }, + { + "entity_name": "primitive", + "entity_type": "CONCEPT", + "description": "primitive is a term used to describe the components of the output sequence", + "source_ids": [ + 56 + ] + } + ], + "relations": [ + { + "src_entity_name": "the output", + "tgt_entity_name": "primitive", + "relation_name": "", + "weight": 9.0, + "description": "the output consists of a sequence of primitives", + "source_ids": [ + 56 + ] + } + ], + "node_idx": 56 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_57.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_57.json new file mode 100644 index 0000000..40377d7 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_57.json @@ -0,0 +1,315 @@ +{ + "entities": [ + { + "entity_name": "section filtering", + "entity_type": "TASK_OR_PROBLEM", + "description": "section filtering is a phase that processes an initial sequence to identify a document s logically hierarchical structure", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "layout parsing", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "layout parsing is a method that identifies blocks as title but does not assign their hierarchical level", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "llm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "llm is a model used for analysis to determine hierarchical levels and node types of document candidates", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "title", + "entity_type": "SECTION_TITLE", + "description": "title refers to blocks identified by layout parsing that require hierarchical level assignment", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "text", + "entity_type": "SECTION_TITLE", + "description": "text is a node type used to re classify erroneous title blocks such as descriptive text within images", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "image", + "entity_type": "IMAGE", + "description": "image refers to a location within a document where descriptive text might be erroneously parsed as a title", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "table", + "entity_type": "TABLE", + "description": "table refers to a document element specifically borderless table headers that might be erroneously parsed as a title", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "b", + "entity_type": "DATASET_OR_CORPUS", + "description": "b represents the candidate subset of blocks selected for llm based analysis", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "c", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "c represents the content of the candidates analyzed by the llm", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "f", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "f represents the layout features of the candidates analyzed by the llm", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "4 2 2", + "entity_type": "SECTION_TITLE", + "description": "4 2 2 is the section identifier for the section filtering phase", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "b title", + "entity_type": "DATASET_OR_CORPUS", + "description": "b title is a candidate subset of blocks where the type is title selected for llm based analysis", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "l", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "l represents the actual hierarchical level of a block ranging from 1 to infinity", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "1", + "entity_type": "MEASUREMENT", + "description": "1 is the value assigned to the root level in the hierarchical structure", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "none", + "entity_type": "SECTION_TITLE", + "description": "none is a value indicating that a block has no hierarchical level", + "source_ids": [ + 57 + ] + }, + { + "entity_name": "", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 57 + ] + } + ], + "relations": [ + { + "src_entity_name": "section filtering", + "tgt_entity_name": "layout parsing", + "relation_name": "", + "weight": 9.0, + "description": "section filtering processes the output of layout parsing to identify hierarchical structure", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "section filtering utilizes an llm to analyze content and layout features of candidates", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "layout parsing", + "tgt_entity_name": "title", + "relation_name": "", + "weight": 8.0, + "description": "layout parsing identifies blocks as title", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "title", + "relation_name": "", + "weight": 9.0, + "description": "llm analyzes title candidates to determine their actual hierarchical level and final node type", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 8.0, + "description": "llm may re classify erroneous title blocks as text", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 7.0, + "description": "section filtering aims to correct blocks erroneously parsed as title such as descriptive text within images", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 7.0, + "description": "section filtering aims to correct blocks erroneously parsed as title such as borderless table headers", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 9.0, + "description": "section filtering selects the candidate subset b for analysis", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "l", + "relation_name": "", + "weight": 8.0, + "description": "llm determines the hierarchical level l for each candidate", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 8.0, + "description": "llm analyzes the content c of the candidates", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "f", + "relation_name": "", + "weight": 8.0, + "description": "llm analyzes the layout features f of the candidates", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "b title", + "relation_name": "", + "weight": 9.0, + "description": "section filtering selects the candidate subset b title for analysis", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "b title", + "relation_name": "", + "weight": 9.0, + "description": "the llm analyzes the candidate subset b title to determine properties", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "layout parsing", + "tgt_entity_name": "b title", + "relation_name": "", + "weight": 8.0, + "description": "layout parsing identifies blocks as title forming the subset b title", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "", + "relation_name": "", + "weight": 7.0, + "description": "the llm uses to identify blocks as title candidates", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "l", + "tgt_entity_name": "1", + "relation_name": "", + "weight": 8.0, + "description": "the parameter l uses 1 to represent the root level", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "", + "tgt_entity_name": "none", + "relation_name": "", + "weight": 7.0, + "description": "the final node type can be assigned the value none if a block has no level", + "source_ids": [ + 57 + ] + }, + { + "src_entity_name": "section filtering", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 8.0, + "description": "section filtering corrects blocks erroneously parsed as title by re classifying them as text", + "source_ids": [ + 57 + ] + } + ], + "node_idx": 57 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_58.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_58.json new file mode 100644 index 0000000..e004940 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_58.json @@ -0,0 +1,267 @@ +{ + "entities": [ + { + "entity_name": "tree", + "entity_type": "TASK_OR_PROBLEM", + "description": "the tree is a definitive structure constructed from blocks consisting of nodes and edges representing content and relationships", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "node set", + "entity_type": "TASK_OR_PROBLEM", + "description": "the node set is composed of all blocks from the filtering and re classification process retaining content and final node types", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "edge set", + "entity_type": "TASK_OR_PROBLEM", + "description": "the edge set represents the parent child nesting relationships within the tree structure", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "text", + "entity_type": "PRODUCT", + "description": "text is identified as a final node type retained within the nodes of the tree", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "section", + "entity_type": "PRODUCT", + "description": "section is identified as a final node type retained within the nodes of the tree", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "table", + "entity_type": "PRODUCT", + "description": "table is identified as a final node type retained within the nodes of the tree", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "image", + "entity_type": "PRODUCT", + "description": "image is identified as a final node type retained within the nodes of the tree", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "filtering is a process mentioned as part of the generation of blocks for the node set", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "re classification", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "re classification is a process mentioned alongside filtering in the creation of the node set", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "hierarchical levels", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "hierarchical levels are determined values used to infer parent child relationships for section nodes", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "document order", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "document order is a sequential arrangement used to assemble the complete tree structure", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "parent child nesting relationships", + "entity_type": "TASK_OR_PROBLEM", + "description": "parent child nesting relationships are the specific connections established by the edge set", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "content", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "content is an attribute retained by each node in the node set", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "final node type", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "final node type is an attribute retained by each node in the node set", + "source_ids": [ + 58 + ] + }, + { + "entity_name": "node", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 58 + ] + } + ], + "relations": [ + { + "src_entity_name": "tree", + "tgt_entity_name": "node set", + "relation_name": "", + "weight": 9.0, + "description": "the tree is constructed using the node set which contains all blocks from the filtering process", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "edge set", + "relation_name": "", + "weight": 9.0, + "description": "the tree includes the edge set which establishes parent child nesting relationships", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 8.0, + "description": "the node set retains nodes of the type text", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "section", + "relation_name": "", + "weight": 8.0, + "description": "the node set retains nodes of the type section", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 8.0, + "description": "the node set retains nodes of the type table", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 8.0, + "description": "the node set retains nodes of the type image", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "edge set", + "tgt_entity_name": "tree", + "relation_name": "", + "weight": 9.0, + "description": "the edge set is established to define the structure of the tree", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "filtering", + "relation_name": "", + "weight": 9.0, + "description": "the node set is composed of blocks resulting from the filtering process", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "node set", + "tgt_entity_name": "re classification", + "relation_name": "", + "weight": 9.0, + "description": "the node set is composed of blocks resulting from the re classification process", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "edge set", + "tgt_entity_name": "parent child nesting relationships", + "relation_name": "", + "weight": 10.0, + "description": "the edge set represents the parent child nesting relationships", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "hierarchical levels", + "relation_name": "", + "weight": 8.0, + "description": "hierarchical levels are used to infer relationships within the tree structure", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "tree", + "tgt_entity_name": "document order", + "relation_name": "", + "weight": 8.0, + "description": "document order is used to assemble the complete tree structure", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "node", + "tgt_entity_name": "content", + "relation_name": "", + "weight": 9.0, + "description": "each node retains its content", + "source_ids": [ + 58 + ] + }, + { + "src_entity_name": "node", + "tgt_entity_name": "final node type", + "relation_name": "", + "weight": 9.0, + "description": "each node retains its final node type", + "source_ids": [ + 58 + ] + } + ], + "node_idx": 58 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_59.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_59.json new file mode 100644 index 0000000..b651214 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_59.json @@ -0,0 +1,419 @@ +{ + "entities": [ + { + "entity_name": "figure 2", + "entity_type": "IMAGE", + "description": "figure 2 is an example shown in the text that illustrates the layout parsing phase", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "layout parsing phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "layout parsing phase is a process that identifies diverse blocks in a document", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "title text table", + "entity_type": "PRODUCT", + "description": "title text table is a type of block identified during the layout parsing phase", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "image", + "entity_type": "IMAGE", + "description": "image is a type of block identified during the layout parsing phase", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "section filtering phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "section filtering phase is a process where title candidates are analyzed by the llm", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "llm", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "llm is a model used to analyze title candidates and re classify blocks", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "method", + "entity_type": "SECTION_TITLE", + "description": "method is a title candidate analyzed during the section filtering phase", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "experiment", + "entity_type": "SECTION_TITLE", + "description": "experiment is a title candidate analyzed during the section filtering phase", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "moe layer", + "entity_type": "SECTION_TITLE", + "description": "moe layer is a title candidate that was erroneously tagged as a title but re classified as a text node", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "section nodes", + "entity_type": "SECTION_TITLE", + "description": "section nodes are blocks identified as having a specific level in the document hierarchy", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "text node", + "entity_type": "SECTION_TITLE", + "description": "text node is a classification for blocks that do not have a specific level in the document hierarchy", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "final tree structure", + "entity_type": "TASK_OR_PROBLEM", + "description": "final tree structure is the result of assembling filtered and classified nodes based on their levels and order", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "fontsize", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "fontsize is a parameter used to describe the size of text blocks such as 14 or 20", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "14", + "entity_type": "MEASUREMENT", + "description": "14 is the specific font size value associated with the method and experiment blocks", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "20", + "entity_type": "MEASUREMENT", + "description": "20 is the specific font size value associated with the moe layer block", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "level", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "level is a parameter used to define the hierarchy depth of document nodes", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "2", + "entity_type": "MEASUREMENT", + "description": "2 is the specific level value assigned to the method and experiment blocks", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "none", + "entity_type": "MEASUREMENT", + "description": "none is the specific level value assigned to the moe layer block indicating no hierarchy level", + "source_ids": [ + 59 + ] + }, + { + "entity_name": "document order", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "document order is a factor used to assemble nodes into the final tree structure", + "source_ids": [ + 59 + ] + } + ], + "relations": [ + { + "src_entity_name": "layout parsing phase", + "tgt_entity_name": "figure 2", + "relation_name": "", + "weight": 9.0, + "description": "figure 2 serves as an example for the layout parsing phase", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "layout parsing phase", + "tgt_entity_name": "title text table", + "relation_name": "", + "weight": 8.0, + "description": "the layout parsing phase identifies title text table as a type of block", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "layout parsing phase", + "tgt_entity_name": "image", + "relation_name": "", + "weight": 8.0, + "description": "the layout parsing phase identifies image as a type of block", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 10.0, + "description": "the section filtering phase uses the llm to analyze title candidates", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "method", + "relation_name": "", + "weight": 9.0, + "description": "the section filtering phase analyzes method as a title candidate", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "experiment", + "relation_name": "", + "weight": 9.0, + "description": "the section filtering phase analyzes experiment as a title candidate", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "moe layer", + "relation_name": "", + "weight": 9.0, + "description": "the section filtering phase analyzes moe layer which was erroneously tagged and re classified", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "method", + "relation_name": "", + "weight": 8.0, + "description": "the llm correctly identifies method as a section node", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "experiment", + "relation_name": "", + "weight": 8.0, + "description": "the llm correctly identifies experiment as a section node", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "moe layer", + "relation_name": "", + "weight": 9.0, + "description": "the llm re classifies moe layer from a title to a text node", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "section filtering phase", + "tgt_entity_name": "final tree structure", + "relation_name": "", + "weight": 7.0, + "description": "the section filtering phase contributes to the creation of the final tree structure", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "layout parsing phase", + "tgt_entity_name": "section filtering phase", + "relation_name": "", + "weight": 6.0, + "description": "the layout parsing phase precedes the section filtering phase in the document processing workflow", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "method", + "tgt_entity_name": "fontsize", + "relation_name": "", + "weight": 10.0, + "description": "the method block has a fontsize of 14", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "method", + "tgt_entity_name": "14", + "relation_name": "", + "weight": 10.0, + "description": "the method block is associated with the measurement value 14", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "method", + "tgt_entity_name": "level", + "relation_name": "", + "weight": 10.0, + "description": "the method block is identified as having a level of 2", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "method", + "tgt_entity_name": "2", + "relation_name": "", + "weight": 10.0, + "description": "the method block is associated with the measurement value 2", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "experiment", + "tgt_entity_name": "fontsize", + "relation_name": "", + "weight": 10.0, + "description": "the experiment block has a fontsize of 14", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "experiment", + "tgt_entity_name": "14", + "relation_name": "", + "weight": 10.0, + "description": "the experiment block is associated with the measurement value 14", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "experiment", + "tgt_entity_name": "level", + "relation_name": "", + "weight": 10.0, + "description": "the experiment block is identified as having a level of 2", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "experiment", + "tgt_entity_name": "2", + "relation_name": "", + "weight": 10.0, + "description": "the experiment block is associated with the measurement value 2", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "moe layer", + "tgt_entity_name": "fontsize", + "relation_name": "", + "weight": 10.0, + "description": "the moe layer block has a fontsize of 20", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "moe layer", + "tgt_entity_name": "20", + "relation_name": "", + "weight": 10.0, + "description": "the moe layer block is associated with the measurement value 20", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "moe layer", + "tgt_entity_name": "level", + "relation_name": "", + "weight": 10.0, + "description": "the moe layer block is identified as having a level of none", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "moe layer", + "tgt_entity_name": "none", + "relation_name": "", + "weight": 10.0, + "description": "the moe layer block is associated with the measurement value none", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "final tree structure", + "tgt_entity_name": "document order", + "relation_name": "", + "weight": 9.0, + "description": "the final tree structure is assembled based on the document order of the nodes", + "source_ids": [ + 59 + ] + }, + { + "src_entity_name": "final tree structure", + "tgt_entity_name": "level", + "relation_name": "", + "weight": 9.0, + "description": "the final tree structure is assembled based on the determined levels of the nodes", + "source_ids": [ + 59 + ] + } + ], + "node_idx": 59 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_6.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_6.json new file mode 100644 index 0000000..86148d1 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_6.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "pvldb", + "entity_type": "PUBLICATION_VENUE", + "description": "pvldb is a publication venue mentioned in the context of artifact availability", + "source_ids": [ + 6 + ] + }, + { + "entity_name": "artifact availability", + "entity_type": "TASK_OR_PROBLEM", + "description": "artifact availability refers to the status or process of making artifacts available as discussed in the text", + "source_ids": [ + 6 + ] + } + ], + "relations": [ + { + "src_entity_name": "pvldb", + "tgt_entity_name": "artifact availability", + "relation_name": "", + "weight": 8.0, + "description": "pvldb is the venue where the topic of artifact availability is addressed", + "source_ids": [ + 6 + ] + } + ], + "node_idx": 6 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_60.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_60.json new file mode 100644 index 0000000..7a0fb82 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_60.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "4", + "entity_type": "MEASUREMENT", + "description": "4 is a numerical value mentioned in the text though its specific context or unit is not provided", + "source_ids": [ + 60 + ] + } + ], + "relations": [], + "node_idx": 60 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_61.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_61.json new file mode 100644 index 0000000..cb7e8c7 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_61.json @@ -0,0 +1,51 @@ +{ + "entities": [ + { + "entity_name": "4.3 graph construction", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'BOOKINDEX' and the second stage of the proposed BookIndex construction process, this section details the method for extracting fine-grained entity knowledge from hierarchical tree nodes and refining it using a novel gradient-based entity resolution technique.", + "source_ids": [ + 61 + ] + }, + { + "entity_name": "graph construction", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The specific two-stage process step that follows Tree Construction, focusing on extracting entity knowledge and performing resolution within the BookIndex framework.", + "source_ids": [ + 61 + ] + }, + { + "entity_name": "gradient-based entity resolution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A novel algorithmic method described in this section used to refine extracted entity knowledge by resolving ambiguities or duplicates based on gradient optimization.", + "source_ids": [ + 61 + ] + } + ], + "relations": [ + { + "src_entity_name": "graph construction", + "tgt_entity_name": "4.3 graph construction", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Graph Construction' is the primary topic and subject matter of section 4.3.", + "source_ids": [ + 61 + ] + }, + { + "src_entity_name": "gradient-based entity resolution", + "tgt_entity_name": "4.3 graph construction", + "relation_name": "", + "weight": 9.5, + "description": "The method 'Gradient-based Entity Resolution' is a key component and technique detailed within section 4.3.", + "source_ids": [ + 61 + ] + } + ], + "node_idx": 61 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_62.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_62.json new file mode 100644 index 0000000..b1bdc88 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_62.json @@ -0,0 +1,61 @@ +{ + "entities": [ + { + "entity_name": "tree t", + "entity_type": "TASK_OR_PROBLEM", + "description": "tree t is a structure that is established before proceeding to the next step", + "source_ids": [ + 62 + ] + }, + { + "entity_name": "knowledge graph g", + "entity_type": "TASK_OR_PROBLEM", + "description": "knowledge graph g is a structure that is populated by extracting and refining entities from the tree nodes", + "source_ids": [ + 62 + ] + }, + { + "entity_name": "tree nodes", + "entity_type": "TASK_OR_PROBLEM", + "description": "tree nodes are the components within tree t from which entities are extracted and refined", + "source_ids": [ + 62 + ] + } + ], + "relations": [ + { + "src_entity_name": "tree t", + "tgt_entity_name": "knowledge graph g", + "relation_name": "", + "weight": 9.0, + "description": "tree t is the source from which entities are extracted to populate knowledge graph g", + "source_ids": [ + 62 + ] + }, + { + "src_entity_name": "tree t", + "tgt_entity_name": "tree nodes", + "relation_name": "", + "weight": 10.0, + "description": "tree nodes are the constituent parts of tree t that serve as the source for entity extraction", + "source_ids": [ + 62 + ] + }, + { + "src_entity_name": "knowledge graph g", + "tgt_entity_name": "tree nodes", + "relation_name": "", + "weight": 9.0, + "description": "knowledge graph g is populated by extracting and refining entities from tree nodes", + "source_ids": [ + 62 + ] + } + ], + "node_idx": 62 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_63.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_63.json new file mode 100644 index 0000000..e80a7b7 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_63.json @@ -0,0 +1,123 @@ +{ + "entities": [ + { + "entity_name": "4.3.1 kg construction", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Graph Construction' within the 'BOOKINDEX' chapter, this section details the specific algorithm for populating the Knowledge Graph by iterating through tree nodes and extracting subgraphs based on content modality (text or visual).", + "source_ids": [ + 63 + ] + }, + { + "entity_name": "knowledge graph", + "entity_type": "DATASET_OR_CORPUS", + "description": "The structured data repository being constructed in this section, populated by extracting entities and relations from document tree nodes.", + "source_ids": [ + 63 + ] + }, + { + "entity_name": "tree t", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "The hierarchical structure previously established that serves as the source of nodes to be processed for graph construction.", + "source_ids": [ + 63 + ] + }, + { + "entity_name": "llm", + "entity_type": "SOFTWARE", + "description": "Large Language Model used as a tool to extract entities and relations when processing text-only nodes.", + "source_ids": [ + 63 + ] + }, + { + "entity_name": "vision language model", + "entity_type": "SOFTWARE", + "description": "VLM employed specifically to extract visual knowledge from nodes containing image elements.", + "source_ids": [ + 63 + ] + }, + { + "entity_name": "image", + "entity_type": "IMAGE", + "description": "A specific node type indicating the presence of visual elements requiring VLM-based extraction.", + "source_ids": [ + 63 + ] + }, + { + "entity_name": "mapping m", + "entity_type": "EQUATION_OR_FORMULA", + "description": "The final mapping structure constructed by recording the origin tree node for every extracted entity.", + "source_ids": [ + 63 + ] + } + ], + "relations": [ + { + "src_entity_name": "knowledge graph", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 10.0, + "description": "The Knowledge Graph is the primary object being constructed in this section.", + "source_ids": [ + 63 + ] + }, + { + "src_entity_name": "tree t", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 9.5, + "description": "The Tree T provides the input nodes that are iterated over during the construction process.", + "source_ids": [ + 63 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 9.0, + "description": "The LLM is the method/tool utilized for extracting data from text-only nodes within this section.", + "source_ids": [ + 63 + ] + }, + { + "src_entity_name": "vision language model", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 9.0, + "description": "The Vision Language Model is the method/tool utilized for extracting data from visual nodes within this section.", + "source_ids": [ + 63 + ] + }, + { + "src_entity_name": "image", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 8.5, + "description": "The Image node type triggers the use of the Vision Language Model in this section's logic.", + "source_ids": [ + 63 + ] + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "4.3.1 kg construction", + "relation_name": "", + "weight": 9.5, + "description": "The Mapping M is the critical output artifact generated by recording entity origins in this section.", + "source_ids": [ + 63 + ] + } + ], + "node_idx": 63 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_64.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_64.json new file mode 100644 index 0000000..e9fc75c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_64.json @@ -0,0 +1,185 @@ +{ + "entities": [ + { + "entity_name": "table", + "entity_type": "PRODUCT", + "description": "table is a specific logical type mentioned in the text that requires preservation of structural semantics", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "formula", + "entity_type": "PRODUCT", + "description": "formula is a specific logical type mentioned in the text that requires preservation of structural semantics", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "v table", + "entity_type": "PRODUCT", + "description": "v table is a distinct typed entity representing the table itself created to preserve structural semantics", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "row", + "entity_type": "PRODUCT", + "description": "row is a component of table nodes that is explicitly extracted as a distinct entity", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "column", + "entity_type": "PRODUCT", + "description": "column is a component of table nodes that is explicitly extracted as a distinct entity", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "header", + "entity_type": "PRODUCT", + "description": "header refers to row and column headers in table nodes that are explicitly extracted as distinct entities", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "structural semantics", + "entity_type": "CONCEPT", + "description": "structural semantics refers to the meaning preserved for specific logical types in the described process", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "logical types", + "entity_type": "CONCEPT", + "description": "logical types are categories of entities such as table and formula that require specific handling", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "node", + "entity_type": "CONCEPT", + "description": "node refers to a specific point in the data structure where content is extracted", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "vertex", + "entity_type": "CONCEPT", + "description": "vertex refers to the primary node v table to which other entities are linked", + "source_ids": [ + 64 + ] + }, + { + "entity_name": "containedin", + "entity_type": "RELATIONSHIP_TYPE", + "description": "containedin is the specific relationship type used to link row and column headers to the table entity", + "source_ids": [ + 64 + ] + } + ], + "relations": [ + { + "src_entity_name": "v table", + "tgt_entity_name": "table", + "relation_name": "", + "weight": 10.0, + "description": "v table is the distinct entity created to represent the table logical type", + "source_ids": [ + 64 + ] + }, + { + "src_entity_name": "row", + "tgt_entity_name": "v table", + "relation_name": "", + "weight": 9.0, + "description": "row headers are linked to v table via a containedin relationship", + "source_ids": [ + 64 + ] + }, + { + "src_entity_name": "column", + "tgt_entity_name": "v table", + "relation_name": "", + "weight": 9.0, + "description": "column headers are linked to v table via a containedin relationship", + "source_ids": [ + 64 + ] + }, + { + "src_entity_name": "header", + "tgt_entity_name": "v table", + "relation_name": "", + "weight": 9.0, + "description": "row and column headers are explicitly extracted and linked to v table", + "source_ids": [ + 64 + ] + }, + { + "src_entity_name": "structural semantics", + "tgt_entity_name": "logical types", + "relation_name": "", + "weight": 9.0, + "description": "structural semantics are preserved specifically for logical types like table and formula", + "source_ids": [ + 64 + ] + }, + { + "src_entity_name": "v table", + "tgt_entity_name": "node", + "relation_name": "", + "weight": 8.0, + "description": "v table is created as a distinct entity from the content of a specific node", + "source_ids": [ + 64 + ] + }, + { + "src_entity_name": "row", + "tgt_entity_name": "header", + "relation_name": "", + "weight": 9.0, + "description": "row headers are a specific type of header extracted from table nodes", + "source_ids": [ + 64 + ] + }, + { + "src_entity_name": "column", + "tgt_entity_name": "header", + "relation_name": "", + "weight": 9.0, + "description": "column headers are a specific type of header extracted from table nodes", + "source_ids": [ + 64 + ] + }, + { + "src_entity_name": "row", + "tgt_entity_name": "column", + "relation_name": "", + "weight": 7.0, + "description": "row and column headers are both explicitly extracted components of table nodes", + "source_ids": [ + 64 + ] + } + ], + "node_idx": 64 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_65.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_65.json new file mode 100644 index 0000000..657fcd6 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_65.json @@ -0,0 +1,51 @@ +{ + "entities": [ + { + "entity_name": "4.3.2 gradient-based entity resolution", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Graph Construction' within the 'BOOKINDEX' chapter, this section details a robust Entity Resolution (ER) process designed to identify and merge fragmented conceptual entities in a Knowledge Graph, addressing challenges like abbreviations and co-references.", + "source_ids": [ + 65 + ] + }, + { + "entity_name": "gradient-based entity resolution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A specific technique mentioned in the title for resolving entity fragmentation by utilizing gradient-based approaches to refine raw Knowledge Graphs.", + "source_ids": [ + 65 + ] + }, + { + "entity_name": "entity resolution", + "entity_type": "TASK_OR_PROBLEM", + "description": "The core problem addressed in this section: identifying and merging fragmented entities caused by abbreviations, co-references, or varied occurrences to ensure a well-constructed Knowledge Graph.", + "source_ids": [ + 65 + ] + } + ], + "relations": [ + { + "src_entity_name": "gradient-based entity resolution", + "tgt_entity_name": "4.3.2 gradient-based entity resolution", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Gradient-based Entity Resolution' is the primary methodological topic of section 4.3.2.", + "source_ids": [ + 65 + ] + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "4.3.2 gradient-based entity resolution", + "relation_name": "", + "weight": 10.0, + "description": "The task of 'Entity Resolution' is the central subject matter detailed in section 4.3.2.", + "source_ids": [ + 65 + ] + } + ], + "node_idx": 65 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_66.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_66.json new file mode 100644 index 0000000..5f99571 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_66.json @@ -0,0 +1,225 @@ +{ + "entities": [ + { + "entity_name": "er methods", + "entity_type": "TASK_OR_PROBLEM", + "description": "er methods are conventional methods for entity resolution that are computationally expensive", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "dirty er", + "entity_type": "TASK_OR_PROBLEM", + "description": "dirty er is a term used to describe batch processing across multiple data sources for entity resolution", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "llms", + "entity_type": "TECHNOLOGY", + "description": "llms are large language models used for high accuracy judgments in entity resolution", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "a", + "entity_type": "TASK_OR_PROBLEM", + "description": "a is an example entity used to illustrate the merging of multiple entities in the entity resolution process", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "b", + "entity_type": "TASK_OR_PROBLEM", + "description": "b is an example entity used to illustrate the merging of multiple entities in the entity resolution process", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "c", + "entity_type": "TASK_OR_PROBLEM", + "description": "c is an example entity used to illustrate the merging of multiple entities in the entity resolution process", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "12", + "entity_type": "PUBLICATION_VENUE", + "description": "12 is a citation reference mentioned in the text regarding entity resolution methods", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "a b", + "entity_type": "TASK_OR_PROBLEM", + "description": "a b is a specific pairwise comparison example between entities a and b", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "a c", + "entity_type": "TASK_OR_PROBLEM", + "description": "a c is a specific pairwise comparison example between entities a and c", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "b c", + "entity_type": "TASK_OR_PROBLEM", + "description": "b c is a specific pairwise comparison example between entities b and c", + "source_ids": [ + 66 + ] + }, + { + "entity_name": "o n 2", + "entity_type": "MEASUREMENT", + "description": "o n 2 represents the quadratic complexity of the number of pairwise comparisons required", + "source_ids": [ + 66 + ] + } + ], + "relations": [ + { + "src_entity_name": "er methods", + "tgt_entity_name": "dirty er", + "relation_name": "", + "weight": 9.0, + "description": "er methods are often designed for batch processing across multiple data sources commonly referred to as dirty er", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "llms", + "relation_name": "", + "weight": 8.0, + "description": "relying on llms for high accuracy judgments in er methods can lead to prohibitively slow and computationally expensive processes", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "a", + "relation_name": "", + "weight": 8.0, + "description": "er methods aim to merge entities like a b and c as the same concept", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 8.0, + "description": "er methods aim to merge entities like a b and c as the same concept", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 8.0, + "description": "er methods aim to merge entities like a b and c as the same concept", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "a b", + "relation_name": "", + "weight": 9.0, + "description": "er methods require finding all possible matching pairs such as a b to confirm equivalence", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "a c", + "relation_name": "", + "weight": 9.0, + "description": "er methods require finding all possible matching pairs such as a c to confirm equivalence", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "b c", + "relation_name": "", + "weight": 9.0, + "description": "er methods require finding all possible matching pairs such as b c to confirm equivalence", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "a", + "tgt_entity_name": "b", + "relation_name": "", + "weight": 7.0, + "description": "a and b are compared as a pair a b to confirm their equivalence", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "a", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 7.0, + "description": "a and c are compared as a pair a c to confirm their equivalence", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "b", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 7.0, + "description": "b and c are compared as a pair b c to confirm their equivalence", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "12", + "relation_name": "", + "weight": 6.0, + "description": "the text cites reference 12 in the context of ensuring accurate entity resolution", + "source_ids": [ + 66 + ] + }, + { + "src_entity_name": "er methods", + "tgt_entity_name": "o n 2", + "relation_name": "", + "weight": 9.0, + "description": "the process of er methods leads to a quadratic o n 2 number of pairwise comparisons", + "source_ids": [ + 66 + ] + } + ], + "node_idx": 66 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_67.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_67.json new file mode 100644 index 0000000..845b621 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_67.json @@ -0,0 +1,169 @@ +{ + "entities": [ + { + "entity_name": "gradient based er method", + "entity_type": "TECHNOLOGY", + "description": "a gradient based entity resolution method employed to process a single document incrementally", + "source_ids": [ + 67 + ] + }, + { + "entity_name": "clean er", + "entity_type": "TASK_OR_PROBLEM", + "description": "a simplified version of the entity resolution task used as the basis for the incremental process", + "source_ids": [ + 67 + ] + }, + { + "entity_name": "database", + "entity_type": "SOFTWARE", + "description": "a storage system containing already processed entities against which new entities are compared", + "source_ids": [ + 67 + ] + }, + { + "entity_name": "top k most relevant candidates", + "entity_type": "EVALUATION_METRIC", + "description": "a set of the most relevant entities used for reranking a new entity in the incremental process", + "source_ids": [ + 67 + ] + }, + { + "entity_name": "entity", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "a single new entity being extracted in the incremental process", + "source_ids": [ + 67 + ] + }, + { + "entity_name": "quadratic batch problem", + "entity_type": "TASK_OR_PROBLEM", + "description": "the original complex problem that the incremental method transforms into a simpler task", + "source_ids": [ + 67 + ] + }, + { + "entity_name": "repeated lookup task", + "entity_type": "TASK_OR_PROBLEM", + "description": "the simplified task resulting from transforming the quadratic batch problem", + "source_ids": [ + 67 + ] + }, + { + "entity_name": "scoring patterns", + "entity_type": "EVALUATION_METRIC", + "description": "distinct observable patterns yielded by the incremental process when reranking entities", + "source_ids": [ + 67 + ] + }, + { + "entity_name": "incremental process", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 67 + ] + } + ], + "relations": [ + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "clean er", + "relation_name": "", + "weight": 9.0, + "description": "the method operates on a single document simplified as the clean er", + "source_ids": [ + 67 + ] + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "database", + "relation_name": "", + "weight": 8.0, + "description": "the method determines where a new entity fits among entities already in the database", + "source_ids": [ + 67 + ] + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "top k most relevant candidates", + "relation_name": "", + "weight": 8.0, + "description": "the method yields scoring patterns when a new entity is reranked against its top k candidates", + "source_ids": [ + 67 + ] + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "entity", + "relation_name": "", + "weight": 10.0, + "description": "the method performs entity resolution incrementally as each new entity is extracted", + "source_ids": [ + 67 + ] + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "quadratic batch problem", + "relation_name": "", + "weight": 9.0, + "description": "the method transforms the quadratic batch problem into a simpler task", + "source_ids": [ + 67 + ] + }, + { + "src_entity_name": "gradient based er method", + "tgt_entity_name": "repeated lookup task", + "relation_name": "", + "weight": 9.0, + "description": "the method transforms the problem into a repeated lookup task", + "source_ids": [ + 67 + ] + }, + { + "src_entity_name": "entity", + "tgt_entity_name": "database", + "relation_name": "", + "weight": 9.0, + "description": "the new entity is determined to fit among the already processed entities in the database", + "source_ids": [ + 67 + ] + }, + { + "src_entity_name": "entity", + "tgt_entity_name": "top k most relevant candidates", + "relation_name": "", + "weight": 9.0, + "description": "the new entity is reranked against its top k most relevant candidates", + "source_ids": [ + 67 + ] + }, + { + "src_entity_name": "incremental process", + "tgt_entity_name": "scoring patterns", + "relation_name": "", + "weight": 8.0, + "description": "the incremental process yields two distinct scoring patterns", + "source_ids": [ + 67 + ] + } + ], + "node_idx": 67 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_68.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_68.json new file mode 100644 index 0000000..ae99b90 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_68.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "5", + "entity_type": "MEASUREMENT", + "description": "5 is a numerical value mentioned in the text potentially representing a count score or measurement", + "source_ids": [ + 68 + ] + } + ], + "relations": [], + "node_idx": 68 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_69.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_69.json new file mode 100644 index 0000000..c578f40 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_69.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "algorithm 1", + "entity_type": "TASK_OR_PROBLEM", + "description": "algorithm 1 is a gradient based entity resolution method mentioned in the text", + "source_ids": [ + 69 + ] + }, + { + "entity_name": "gradient based entity resolution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "gradient based entity resolution is the specific technique or approach described for the algorithm", + "source_ids": [ + 69 + ] + } + ], + "relations": [ + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "gradient based entity resolution", + "relation_name": "", + "weight": 10.0, + "description": "algorithm 1 is defined as a gradient based entity resolution method", + "source_ids": [ + 69 + ] + } + ], + "node_idx": 69 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_7.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_7.json new file mode 100644 index 0000000..f128f94 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_7.json @@ -0,0 +1,135 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "SOFTWARE", + "description": "bookrag is a software project hosted on github containing source code and data", + "source_ids": [ + 7 + ] + }, + { + "entity_name": "github", + "entity_type": "ORGANIZATION", + "description": "github is the platform where the source code and data for bookrag are made available", + "source_ids": [ + 7 + ] + }, + { + "entity_name": "sam234990", + "entity_type": "PERSON", + "description": "sam234990 is the username or owner associated with the bookrag repository on github", + "source_ids": [ + 7 + ] + }, + { + "entity_name": "source code", + "entity_type": "PRODUCT", + "description": "source code is a digital artifact made available as part of the bookrag project", + "source_ids": [ + 7 + ] + }, + { + "entity_name": "data", + "entity_type": "PRODUCT", + "description": "data is a digital artifact made available as part of the bookrag project", + "source_ids": [ + 7 + ] + }, + { + "entity_name": "artifacts", + "entity_type": "PRODUCT", + "description": "artifacts are items made available alongside the source code and data for the bookrag project", + "source_ids": [ + 7 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "github", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is hosted on the github platform as indicated by the provided url", + "source_ids": [ + 7 + ] + }, + { + "src_entity_name": "sam234990", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "sam234990 is the creator or owner of the bookrag repository", + "source_ids": [ + 7 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "source code", + "relation_name": "", + "weight": 10.0, + "description": "bookrag contains the source code that has been made available", + "source_ids": [ + 7 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "data", + "relation_name": "", + "weight": 10.0, + "description": "bookrag contains the data that has been made available", + "source_ids": [ + 7 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "artifacts", + "relation_name": "", + "weight": 10.0, + "description": "bookrag includes other artifacts that have been made available", + "source_ids": [ + 7 + ] + }, + { + "src_entity_name": "source code", + "tgt_entity_name": "github", + "relation_name": "", + "weight": 9.0, + "description": "the source code is hosted on github", + "source_ids": [ + 7 + ] + }, + { + "src_entity_name": "data", + "tgt_entity_name": "github", + "relation_name": "", + "weight": 9.0, + "description": "the data is hosted on github", + "source_ids": [ + 7 + ] + }, + { + "src_entity_name": "artifacts", + "tgt_entity_name": "github", + "relation_name": "", + "weight": 9.0, + "description": "the artifacts are hosted on github", + "source_ids": [ + 7 + ] + } + ], + "node_idx": 7 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_70.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_70.json new file mode 100644 index 0000000..cb4f9b3 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_70.json @@ -0,0 +1,219 @@ +{ + "entities": [ + { + "entity_name": "kg g", + "entity_type": "TASK_OR_PROBLEM", + "description": "kg g is a knowledge graph that serves as the input for the described process", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "new entity v n", + "entity_type": "TASK_OR_PROBLEM", + "description": "new entity v n is a new entity being introduced into the system", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "rerank model r", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "rerank model r is a model used to rerank entities in the process", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "entity vector database db", + "entity_type": "DATASET_OR_CORPUS", + "description": "entity vector database db is a database storing entity vectors", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "vector search number top k", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "vector search number top k is a parameter defining the number of top results for vector search", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "threshold of gradient g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "threshold of gradient g is a threshold value used for gradient calculations", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "kg", + "entity_type": "TASK_OR_PROBLEM", + "description": "kg is the abbreviation for the knowledge graph mentioned as input", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "g", + "entity_type": "TASK_OR_PROBLEM", + "description": "g is the specific instance or variable name for the knowledge graph", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "v", + "entity_type": "TASK_OR_PROBLEM", + "description": "v is the variable representing the new entity", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "n", + "entity_type": "TASK_OR_PROBLEM", + "description": "n is a subscript or identifier associated with the new entity v", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "r", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "r is the specific variable name for the rerank model", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "db", + "entity_type": "DATASET_OR_CORPUS", + "description": "db is the specific variable name for the entity vector database", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "top k", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "top k is the specific variable name for the vector search number", + "source_ids": [ + 70 + ] + }, + { + "entity_name": "g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "g is the specific variable name for the threshold of gradient", + "source_ids": [ + 70 + ] + } + ], + "relations": [ + { + "src_entity_name": "kg g", + "tgt_entity_name": "new entity v n", + "relation_name": "", + "weight": 8.0, + "description": "the new entity v n is added to or processed within the knowledge graph g", + "source_ids": [ + 70 + ] + }, + { + "src_entity_name": "rerank model r", + "tgt_entity_name": "entity vector database db", + "relation_name": "", + "weight": 7.0, + "description": "the rerank model r likely utilizes the entity vector database db to perform its ranking tasks", + "source_ids": [ + 70 + ] + }, + { + "src_entity_name": "vector search number top k", + "tgt_entity_name": "entity vector database db", + "relation_name": "", + "weight": 9.0, + "description": "the vector search number top k parameter determines the scope of the search performed on the entity vector database db", + "source_ids": [ + 70 + ] + }, + { + "src_entity_name": "threshold of gradient g", + "tgt_entity_name": "rerank model r", + "relation_name": "", + "weight": 6.0, + "description": "the threshold of gradient g is a parameter that influences the operation or convergence of the rerank model r", + "source_ids": [ + 70 + ] + }, + { + "src_entity_name": "kg", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 10.0, + "description": "kg and g refer to the same knowledge graph entity with g being its variable representation", + "source_ids": [ + 70 + ] + }, + { + "src_entity_name": "v", + "tgt_entity_name": "n", + "relation_name": "", + "weight": 9.0, + "description": "n is a subscript or modifier defining the specific instance of the new entity v", + "source_ids": [ + 70 + ] + }, + { + "src_entity_name": "rerank model r", + "tgt_entity_name": "r", + "relation_name": "", + "weight": 10.0, + "description": "r is the variable name for the rerank model", + "source_ids": [ + 70 + ] + }, + { + "src_entity_name": "entity vector database db", + "tgt_entity_name": "db", + "relation_name": "", + "weight": 10.0, + "description": "db is the variable name for the entity vector database", + "source_ids": [ + 70 + ] + }, + { + "src_entity_name": "vector search number top k", + "tgt_entity_name": "top k", + "relation_name": "", + "weight": 10.0, + "description": "top k is the variable name for the vector search number", + "source_ids": [ + 70 + ] + }, + { + "src_entity_name": "threshold of gradient g", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 10.0, + "description": "g is the variable name for the threshold of gradient", + "source_ids": [ + 70 + ] + } + ], + "node_idx": 70 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_71.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_71.json new file mode 100644 index 0000000..256ac4c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_71.json @@ -0,0 +1,265 @@ +{ + "entities": [ + { + "entity_name": "vector search", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "db", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "search", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "r", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "e", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "sort", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "gradient select", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "top k", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "v n", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "e c", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "v cn", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "s", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "c", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "score", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "s 0", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + }, + { + "entity_name": "sel", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 71 + ] + } + ], + "relations": [ + { + "src_entity_name": "vector search", + "tgt_entity_name": "db", + "relation_name": "", + "weight": 9.0, + "description": "vector search operates on the db to find relevant entities", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "search", + "tgt_entity_name": "db", + "relation_name": "", + "weight": 9.0, + "description": "the search function is applied to the db to retrieve entities", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "r", + "tgt_entity_name": "e", + "relation_name": "", + "weight": 8.0, + "description": "the function r takes entities e as input to process them", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "sort", + "tgt_entity_name": "e", + "relation_name": "", + "weight": 8.0, + "description": "the sort operation is applied to the list of entities e", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "gradient select", + "tgt_entity_name": "e", + "relation_name": "", + "weight": 8.0, + "description": "gradient select is used to select entities from the remaining list e", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "vector search", + "tgt_entity_name": "top k", + "relation_name": "", + "weight": 9.0, + "description": "vector search utilizes the top k parameter to limit the number of relevant entities found", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "search", + "tgt_entity_name": "v n", + "relation_name": "", + "weight": 9.0, + "description": "the search function uses the vector v n as its query input", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "search", + "tgt_entity_name": "e c", + "relation_name": "", + "weight": 9.0, + "description": "the search function outputs the candidate entities e c", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "r", + "tgt_entity_name": "v cn", + "relation_name": "", + "weight": 8.0, + "description": "the function r uses the vector v cn to calculate rerank scores", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "sort", + "tgt_entity_name": "s", + "relation_name": "", + "weight": 9.0, + "description": "the sort operation generates the sorted list s", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "sort", + "tgt_entity_name": "c", + "relation_name": "", + "weight": 9.0, + "description": "the sort operation orders entities based on the rerank scores c", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "score", + "tgt_entity_name": "s 0", + "relation_name": "", + "weight": 10.0, + "description": "the score variable is assigned the value of the first element s 0 from the sorted list", + "source_ids": [ + 71 + ] + }, + { + "src_entity_name": "gradient select", + "tgt_entity_name": "sel", + "relation_name": "", + "weight": 9.0, + "description": "the gradient select method produces the selected entities sel", + "source_ids": [ + 71 + ] + } + ], + "node_idx": 71 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_72.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_72.json new file mode 100644 index 0000000..28fab6f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_72.json @@ -0,0 +1,75 @@ +{ + "entities": [ + { + "entity_name": "case a", + "entity_type": "TASK_OR_PROBLEM", + "description": "case a is a scenario described as involving a new conceptual entity", + "source_ids": [ + 72 + ] + }, + { + "entity_name": "new entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "new entity refers to a conceptual entity that is being evaluated for relevance against existing entities", + "source_ids": [ + 72 + ] + }, + { + "entity_name": "existing entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "existing entities are the set of entities against which the relevance of a new conceptual entity is measured", + "source_ids": [ + 72 + ] + }, + { + "entity_name": "relevance scores", + "entity_type": "EVALUATION_METRIC", + "description": "relevance scores are the metrics used to measure the relationship between the new entity and existing entities", + "source_ids": [ + 72 + ] + }, + { + "entity_name": "gradient", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "gradient refers to a mathematical pattern or value that is absent in the relevance scores for new entities", + "source_ids": [ + 72 + ] + }, + { + "entity_name": "discriminative pattern", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "discriminative pattern refers to a distinguishing feature or trend that is not present in the relevance scores for new entities", + "source_ids": [ + 72 + ] + } + ], + "relations": [ + { + "src_entity_name": "case a", + "tgt_entity_name": "new entity", + "relation_name": "", + "weight": 9.0, + "description": "case a describes the scenario where a new entity is introduced and evaluated", + "source_ids": [ + 72 + ] + }, + { + "src_entity_name": "new entity", + "tgt_entity_name": "existing entities", + "relation_name": "", + "weight": 10.0, + "description": "the new entity s relevance scores are calculated against all existing entities", + "source_ids": [ + 72 + ] + } + ], + "node_idx": 72 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_73.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_73.json new file mode 100644 index 0000000..c22b0b0 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_73.json @@ -0,0 +1,187 @@ +{ + "entities": [ + { + "entity_name": "case b", + "entity_type": "TASK_OR_PROBLEM", + "description": "case b refers to a scenario involving an existing entity where an alias is being evaluated for relevance", + "source_ids": [ + 73 + ] + }, + { + "entity_name": "reranker", + "entity_type": "TECHNOLOGY", + "description": "the reranker is a system or component described as having inherent discriminative limitations", + "source_ids": [ + 73 + ] + }, + { + "entity_name": "existing entity", + "entity_type": "TASK_OR_PROBLEM", + "description": "existing entity refers to an entity that is already present in the system being discussed", + "source_ids": [ + 73 + ] + }, + { + "entity_name": "alias", + "entity_type": "CONCEPT", + "description": "alias is a term used to describe an alternative name for an existing entity", + "source_ids": [ + 73 + ] + }, + { + "entity_name": "scores", + "entity_type": "EVALUATION_METRIC", + "description": "scores are the numerical values indicating the relevance of an alias to a true match", + "source_ids": [ + 73 + ] + }, + { + "entity_name": "true match", + "entity_type": "CONCEPT", + "description": "true match refers to the correct entity that an alias is being compared against", + "source_ids": [ + 73 + ] + }, + { + "entity_name": "equivalent aliases", + "entity_type": "CONCEPT", + "description": "equivalent aliases refers to a small set of aliases that are considered the same as the true match", + "source_ids": [ + 73 + ] + }, + { + "entity_name": "gradient", + "entity_type": "MEASUREMENT", + "description": "gradient refers to the sharp decline in relevance scores mentioned in the text", + "source_ids": [ + 73 + ] + }, + { + "entity_name": "irrelevant entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "irrelevant entities are the entities that follow the sharp decline in relevance scores", + "source_ids": [ + 73 + ] + }, + { + "entity_name": "", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 73 + ] + } + ], + "relations": [ + { + "src_entity_name": "", + "tgt_entity_name": "case b", + "relation_name": "", + "weight": 10.0, + "description": "is the specific alias being discussed within the scenario defined as case b", + "source_ids": [ + 73 + ] + }, + { + "src_entity_name": "", + "tgt_entity_name": "reranker", + "relation_name": "", + "weight": 8.0, + "description": "the scores of are influenced by the inherent discriminative limitations of the reranker", + "source_ids": [ + 73 + ] + }, + { + "src_entity_name": "case b", + "tgt_entity_name": "existing entity", + "relation_name": "", + "weight": 10.0, + "description": "case b is defined by the scenario involving an existing entity", + "source_ids": [ + 73 + ] + }, + { + "src_entity_name": "case b", + "tgt_entity_name": "alias", + "relation_name": "", + "weight": 9.0, + "description": "case b specifically addresses the situation where an alias is being evaluated", + "source_ids": [ + 73 + ] + }, + { + "src_entity_name": "alias", + "tgt_entity_name": "true match", + "relation_name": "", + "weight": 9.0, + "description": "the alias is evaluated for its relevance to the true match", + "source_ids": [ + 73 + ] + }, + { + "src_entity_name": "scores", + "tgt_entity_name": "true match", + "relation_name": "", + "weight": 8.0, + "description": "scores indicate the relevance of the alias to the true match", + "source_ids": [ + 73 + ] + }, + { + "src_entity_name": "scores", + "tgt_entity_name": "equivalent aliases", + "relation_name": "", + "weight": 8.0, + "description": "scores show high relevance to the true match or a set of equivalent aliases", + "source_ids": [ + 73 + ] + }, + { + "src_entity_name": "reranker", + "tgt_entity_name": "scores", + "relation_name": "", + "weight": 7.0, + "description": "the reranker s limitations affect the initial set of high relevance scores", + "source_ids": [ + 73 + ] + }, + { + "src_entity_name": "scores", + "tgt_entity_name": "gradient", + "relation_name": "", + "weight": 8.0, + "description": "the scores exhibit a sharp decline gradient after the initial high relevance set", + "source_ids": [ + 73 + ] + }, + { + "src_entity_name": "gradient", + "tgt_entity_name": "irrelevant entities", + "relation_name": "", + "weight": 7.0, + "description": "the gradient precedes the transition to irrelevant entities", + "source_ids": [ + 73 + ] + } + ], + "node_idx": 73 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_74.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_74.json new file mode 100644 index 0000000..766e3c9 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_74.json @@ -0,0 +1,115 @@ +{ + "entities": [ + { + "entity_name": "gradient based er algorithm", + "entity_type": "TECHNOLOGY", + "description": "the gradient based er algorithm is a method designed to detect sharp declines characteristic of case b and isolate high relevance sets", + "source_ids": [ + 74 + ] + }, + { + "entity_name": "llm", + "entity_type": "TECHNOLOGY", + "description": "an llm is utilized for finer grained distinction when multiple similar entities are identified within a set", + "source_ids": [ + 74 + ] + }, + { + "entity_name": "case b", + "entity_type": "TASK_OR_PROBLEM", + "description": "case b is a scenario characterized by a sharp decline that the gradient based er algorithm is designed to detect", + "source_ids": [ + 74 + ] + }, + { + "entity_name": "case a", + "entity_type": "TASK_OR_PROBLEM", + "description": "case a is a no gradient scenario that the llm helps differentiate from the set identified by the algorithm", + "source_ids": [ + 74 + ] + }, + { + "entity_name": "high relevance set", + "entity_type": "DATASET_OR_CORPUS", + "description": "the high relevance set is a collection of entities isolated by the gradient based er algorithm for further processing", + "source_ids": [ + 74 + ] + }, + { + "entity_name": "similar entities", + "entity_type": "DATASET_OR_CORPUS", + "description": "similar entities are a group of items identified within the high relevance set that require finer grained distinction", + "source_ids": [ + 74 + ] + } + ], + "relations": [ + { + "src_entity_name": "gradient based er algorithm", + "tgt_entity_name": "case b", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based er algorithm is designed to detect the sharp decline characteristic of case b", + "source_ids": [ + 74 + ] + }, + { + "src_entity_name": "gradient based er algorithm", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "the gradient based er algorithm isolates a set of entities which is subsequently processed by an llm for finer grained distinction", + "source_ids": [ + 74 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "case a", + "relation_name": "", + "weight": 9.0, + "description": "the llm is used to differentiate the identified set from the no gradient scenario of case a", + "source_ids": [ + 74 + ] + }, + { + "src_entity_name": "gradient based er algorithm", + "tgt_entity_name": "high relevance set", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based er algorithm efficiently isolates the high relevance set", + "source_ids": [ + 74 + ] + }, + { + "src_entity_name": "llm", + "tgt_entity_name": "similar entities", + "relation_name": "", + "weight": 9.0, + "description": "the llm is utilized to distinguish between multiple similar entities identified within the set", + "source_ids": [ + 74 + ] + }, + { + "src_entity_name": "high relevance set", + "tgt_entity_name": "similar entities", + "relation_name": "", + "weight": 8.0, + "description": "the similar entities are contained within the high relevance set identified by the algorithm", + "source_ids": [ + 74 + ] + } + ], + "node_idx": 74 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_75.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_75.json new file mode 100644 index 0000000..da4259e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_75.json @@ -0,0 +1,437 @@ +{ + "entities": [ + { + "entity_name": "algorithm 1", + "entity_type": "TASK_OR_PROBLEM", + "description": "algorithm 1 is the entity resolution process described in the text", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "v n", + "entity_type": "TASK_OR_PROBLEM", + "description": "v n is a new entity being processed in the entity resolution process", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "e c", + "entity_type": "TASK_OR_PROBLEM", + "description": "e c represents the top k candidates retrieved for the new entity v n", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "db", + "entity_type": "TASK_OR_PROBLEM", + "description": "db is the vector database from which candidates are retrieved", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "r", + "entity_type": "TASK_OR_PROBLEM", + "description": "r is the reranker used to re rank candidates against v n", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "s", + "entity_type": "TASK_OR_PROBLEM", + "description": "s represents the scores assigned to the candidates", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "sel", + "entity_type": "TASK_OR_PROBLEM", + "description": "sel is the selection set initialized with the top scoring candidate", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "g is the gradient threshold used to check score drops", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "case a", + "entity_type": "TASK_OR_PROBLEM", + "description": "case a occurs when all candidates pass the gradient check indicating scores lacked discriminative power", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "case b", + "entity_type": "TASK_OR_PROBLEM", + "description": "case b occurs when a gradient is found signaling a sharp score drop", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "v sel", + "entity_type": "TASK_OR_PROBLEM", + "description": "v sel is the canonical entity selected from the selection set sel", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "llm", + "entity_type": "SOFTWARE", + "description": "llm is a tool used to select the canonical entity if multiple aliases are identified", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "g", + "entity_type": "TASK_OR_PROBLEM", + "description": "g is a data structure or set that is updated and returned at the end of the process", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "lines 1 3", + "entity_type": "SECTION_TITLE", + "description": "lines 1 3 describe the initial retrieval and reranking steps of the algorithm", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "line 4", + "entity_type": "SECTION_TITLE", + "description": "line 4 describes the initialization of the selection set and the initial score", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "lines 5 8", + "entity_type": "SECTION_TITLE", + "description": "lines 5 8 describe the iteration through remaining candidates and the gradient threshold check", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "lines 7 8", + "entity_type": "SECTION_TITLE", + "description": "lines 7 8 detail the logic for adding candidates to the selection set and updating scores", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "line 8", + "entity_type": "SECTION_TITLE", + "description": "line 8 describes the condition where the loop breaks upon detecting a sharp score drop", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "lines 9 14", + "entity_type": "SECTION_TITLE", + "description": "lines 9 14 describe the final decision making logic of the algorithm", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "line 9 10", + "entity_type": "SECTION_TITLE", + "description": "lines 9 10 describe the action taken in case a where a new entity is added", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "lines 12 14", + "entity_type": "SECTION_TITLE", + "description": "lines 12 14 describe the merging of the new entity with the canonical entity in case b", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "line 13", + "entity_type": "SECTION_TITLE", + "description": "line 13 describes the use of an llm to select a canonical entity when multiple aliases exist", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "line 15", + "entity_type": "SECTION_TITLE", + "description": "line 15 describes the return of the updated g and db structures", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "score", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "score is the variable updated during the iteration to track the current score value", + "source_ids": [ + 75 + ] + }, + { + "entity_name": "v c", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v c represents the current candidate being evaluated in the iteration", + "source_ids": [ + 75 + ] + } + ], + "relations": [ + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "v n", + "relation_name": "", + "weight": 10.0, + "description": "algorithm 1 processes the new entity v n by retrieving candidates and making a decision", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "e c", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 retrieves the top k candidates e c from the vector database db", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "db", + "relation_name": "", + "weight": 9.0, + "description": "the vector database db is the source from which candidates e c are retrieved", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "r", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 uses the reranker r to re rank candidates e c against v n", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "s", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 sorts candidates based on their scores s", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "sel", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 initializes and iterates through the selection set sel", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 8.0, + "description": "algorithm 1 uses the gradient threshold g to determine if a score drop is sharp", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "case a", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 identifies case a when the selection set sel is identical to e c", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "case b", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 identifies case b when a gradient is found in the selection set sel", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "v sel", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 selects the canonical entity v sel from the selection set sel in case b", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "algorithm 1 uses an llm to select v sel if multiple aliases are identified", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 1 3", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 executes the steps outlined in lines 1 3 to retrieve and rerank candidates", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 4", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 executes the initialization step described in line 4", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 5 8", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 executes the iteration logic described in lines 5 8", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 7 8", + "relation_name": "", + "weight": 8.0, + "description": "the logic in lines 7 8 is part of the iteration process within algorithm 1", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 8", + "relation_name": "", + "weight": 8.0, + "description": "line 8 defines the break condition within the loop of algorithm 1", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 9 14", + "relation_name": "", + "weight": 9.0, + "description": "algorithm 1 executes the decision logic described in lines 9 14", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 9 10", + "relation_name": "", + "weight": 8.0, + "description": "lines 9 10 are the specific actions taken when case a is identified in algorithm 1", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "lines 12 14", + "relation_name": "", + "weight": 8.0, + "description": "lines 12 14 are the specific actions taken when case b is identified in algorithm 1", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 13", + "relation_name": "", + "weight": 8.0, + "description": "line 13 is a step within the case b logic of algorithm 1", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "line 15", + "relation_name": "", + "weight": 9.0, + "description": "line 15 is the final step of algorithm 1 where results are returned", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "score", + "relation_name": "", + "weight": 9.0, + "description": "the variable score is initialized and updated during the execution of algorithm 1", + "source_ids": [ + 75 + ] + }, + { + "src_entity_name": "algorithm 1", + "tgt_entity_name": "v c", + "relation_name": "", + "weight": 9.0, + "description": "the variable v c is the current candidate processed within the loop of algorithm 1", + "source_ids": [ + 75 + ] + } + ], + "node_idx": 75 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_76.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_76.json new file mode 100644 index 0000000..9c08336 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_76.json @@ -0,0 +1,233 @@ +{ + "entities": [ + { + "entity_name": "figure 2", + "entity_type": "IMAGE", + "description": "figure 2 is a visual representation used to illustrate the processing of a new entity in a knowledge graph", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "kg", + "entity_type": "TASK_OR_PROBLEM", + "description": "kg refers to the knowledge graph where entities are processed compared and merged", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "e 9", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 9 is a new entity being processed and compared against existing entities in the kg", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "e 6", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 6 is an existing entity in the kg that shows a sharp decline in similarity with e 9", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "e 8", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 8 is an existing entity in the kg that shows a sharp decline in similarity with e 9", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "e 5", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 5 is an existing entity in the kg that shows a sharp decline in similarity with e 9", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "e 7", + "entity_type": "TASK_OR_PROBLEM", + "description": "e 7 is the final merged entity resulting from the consolidation of e 9 and e 7", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "similarity curve", + "entity_type": "IMAGE", + "description": "the similarity curve is a visual depiction orange line showing the similarity levels between entities", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "gradient based selection process", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the gradient based selection process is the method used to identify high confidence matches between entities", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "orange line", + "entity_type": "IMAGE", + "description": "the orange line is a specific visual element within the similarity curve mentioned in the text", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "unique high confidence match", + "entity_type": "CONCEPT", + "description": "a unique high confidence match is the result of the gradient based selection process identifying e 7 for e 9", + "source_ids": [ + 76 + ] + }, + { + "entity_name": "consolidated information", + "entity_type": "CONCEPT", + "description": "consolidated information refers to the enriched data resulting from merging entities in the kg", + "source_ids": [ + 76 + ] + } + ], + "relations": [ + { + "src_entity_name": "e 9", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "e 9 is processed within the kg context", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "e 7", + "relation_name": "", + "weight": 10.0, + "description": "e 9 shows high similarity with e 7 and is merged with it", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "e 6", + "relation_name": "", + "weight": 7.0, + "description": "e 9 shows a sharp decline in similarity with e 6", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "e 8", + "relation_name": "", + "weight": 7.0, + "description": "e 9 shows a sharp decline in similarity with e 8", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "e 5", + "relation_name": "", + "weight": 7.0, + "description": "e 9 shows a sharp decline in similarity with e 5", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "gradient based selection process", + "tgt_entity_name": "e 7", + "relation_name": "", + "weight": 9.0, + "description": "the gradient based selection process identifies e 7 as the match for e 9", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "similarity curve", + "tgt_entity_name": "e 9", + "relation_name": "", + "weight": 8.0, + "description": "the similarity curve depicts the similarity of e 9 with other entities", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "similarity curve", + "tgt_entity_name": "e 7", + "relation_name": "", + "weight": 8.0, + "description": "the similarity curve shows e 9 s high similarity with e 7", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "similarity curve", + "tgt_entity_name": "orange line", + "relation_name": "", + "weight": 10.0, + "description": "the orange line is the visual representation of the similarity curve described in the text", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "gradient based selection process", + "tgt_entity_name": "unique high confidence match", + "relation_name": "", + "weight": 10.0, + "description": "the gradient based selection process produces the unique high confidence match", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "unique high confidence match", + "relation_name": "", + "weight": 9.0, + "description": "e 9 is the entity for which the unique high confidence match e 7 is identified", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "e 9", + "tgt_entity_name": "consolidated information", + "relation_name": "", + "weight": 8.0, + "description": "the merging of e 9 with e 7 enriches the kg with consolidated information", + "source_ids": [ + 76 + ] + }, + { + "src_entity_name": "e 7", + "tgt_entity_name": "e 7", + "relation_name": "", + "weight": 9.0, + "description": "e 7 is the component of the final merged entity e 7 that incorporates e 9", + "source_ids": [ + 76 + ] + } + ], + "node_idx": 76 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_77.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_77.json new file mode 100644 index 0000000..6e60198 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_77.json @@ -0,0 +1,315 @@ +{ + "entities": [ + { + "entity_name": "gt link", + "entity_type": "TECHNOLOGY", + "description": "gt link is a formalized mechanism denoted as m used to complete the bookindex", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is a structure denoted as b composed of t g and m which gt link helps complete", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "kg construction phase", + "entity_type": "TASK_OR_PROBLEM", + "description": "kg construction phase is a specific stage described in the text where origin tree nodes are recorded for extracted entities", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "entity resolution", + "entity_type": "TASK_OR_PROBLEM", + "description": "entity resolution is a process during which gt link is refined by merging entities into canonical entities", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "origin tree node", + "entity_type": "HARDWARE", + "description": "origin tree node is a structural location recorded for every newly extracted entity", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "canonical entity", + "entity_type": "CONCEPT", + "description": "canonical entity is the target of merging during entity resolution receiving updated origin node sets", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "mapping m", + "entity_type": "EQUATION_OR_FORMULA", + "description": "mapping m is the final aggregation process defined as v to p n linking entities to structural locations", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "g", + "entity_type": "CONCEPT", + "description": "g is a component of the bookindex structure b", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "t", + "entity_type": "CONCEPT", + "description": "t is a component of the bookindex structure b and represents the set of structural locations nodes", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "v i", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v i represents a newly extracted entity for which an origin tree node is recorded", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "v n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v n represents an entity that is merged into a canonical entity during entity resolution", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "v sel", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v sel represents the canonical entity into which v n is merged", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "n", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "n represents the set of nodes in the origin tree t", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "v", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "v represents the set of entities in the graph g", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "p n", + "entity_type": "MATHEMATICAL_CONCEPT", + "description": "p n represents the power set of nodes n used in the definition of the mapping m", + "source_ids": [ + 77 + ] + }, + { + "entity_name": "m", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 77 + ] + } + ], + "relations": [ + { + "src_entity_name": "gt link", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "gt link is formalized to complete the bookindex", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "kg construction phase", + "tgt_entity_name": "origin tree node", + "relation_name": "", + "weight": 9.0, + "description": "during the kg construction phase origin tree nodes are recorded for newly extracted entities", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "gt link", + "relation_name": "", + "weight": 9.0, + "description": "gt link is refined during the entity resolution process", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "canonical entity", + "relation_name": "", + "weight": 9.0, + "description": "during entity resolution entities are merged into a canonical entity", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 8.0, + "description": "the mapping m bi directionally links the entities in g to their structural locations", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 8.0, + "description": "the mapping m links entities to the set of their structural locations nodes in t", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 7.0, + "description": "g is a component of the bookindex structure b", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 7.0, + "description": "t is a component of the bookindex structure b", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "m", + "relation_name": "", + "weight": 7.0, + "description": "m is a component of the bookindex structure b", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "kg construction phase", + "tgt_entity_name": "v i", + "relation_name": "", + "weight": 9.0, + "description": "the kg construction phase records the origin tree node for every newly extracted entity v i", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "v n", + "relation_name": "", + "weight": 9.0, + "description": "during entity resolution the entity v n is merged into a canonical entity", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "entity resolution", + "tgt_entity_name": "v sel", + "relation_name": "", + "weight": 9.0, + "description": "the entity v n is merged into the canonical entity v sel during entity resolution", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "v sel", + "tgt_entity_name": "v n", + "relation_name": "", + "weight": 8.0, + "description": "v sel is the target entity that receives the origin nodes previously associated with v n", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "v", + "relation_name": "", + "weight": 9.0, + "description": "the mapping m is defined as a function from the set of entities v", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "mapping m", + "tgt_entity_name": "p n", + "relation_name": "", + "weight": 9.0, + "description": "the mapping m maps entities to the power set of nodes p n", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "v i", + "relation_name": "", + "weight": 6.0, + "description": "the bookindex structure b involves the recording of origin nodes for entities like v i", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "origin tree node", + "tgt_entity_name": "v i", + "relation_name": "", + "weight": 9.0, + "description": "an origin tree node is recorded specifically for the entity v i", + "source_ids": [ + 77 + ] + }, + { + "src_entity_name": "origin tree node", + "tgt_entity_name": "v sel", + "relation_name": "", + "weight": 8.0, + "description": "the origin node set of v sel is updated to include nodes from v n", + "source_ids": [ + 77 + ] + } + ], + "node_idx": 77 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_78.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_78.json new file mode 100644 index 0000000..43e2bf9 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_78.json @@ -0,0 +1,51 @@ +{ + "entities": [ + { + "entity_name": "5 agent-based retrieval", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of the main paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section details the proposed agent-based query method inspired by Information Foraging Theory, which dynamically classifies queries and employs a tailored retrieval workflow.", + "source_ids": [ + 78 + ] + }, + { + "entity_name": "agent-based query method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the specific retrieval strategy introduced in section 5, which utilizes agents to dynamically classify queries based on Information Foraging Theory.", + "source_ids": [ + 78 + ] + }, + { + "entity_name": "information foraging theory", + "entity_type": "SCIENTIFIC_THEORY", + "description": "The theoretical framework inspiring the design of the agent-based query method described in section 5.", + "source_ids": [ + 78 + ] + } + ], + "relations": [ + { + "src_entity_name": "agent-based query method", + "tgt_entity_name": "5 agent-based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "The 'Agent-Based Query Method' is the primary technical contribution and topic detailed within section 5.", + "source_ids": [ + 78 + ] + }, + { + "src_entity_name": "information foraging theory", + "tgt_entity_name": "5 agent-based retrieval", + "relation_name": "", + "weight": 9.5, + "description": "'Information Foraging Theory' serves as the foundational inspiration for the methods discussed in section 5.", + "source_ids": [ + 78 + ] + } + ], + "node_idx": 78 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_79.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_79.json new file mode 100644 index 0000000..9084080 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_79.json @@ -0,0 +1,167 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "SOFTWARE", + "description": "bookrag is an agent based approach proposed to address complex document queries by planning and executing operations on a bookindex", + "source_ids": [ + 79 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "DATABASE", + "description": "bookindex is the data structure or system on which bookrag executes operations for document queries", + "source_ids": [ + 79 + ] + }, + { + "entity_name": "agent based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "agent based planning is a core mechanism in bookrag that formulates strategies for operations", + "source_ids": [ + 79 + ] + }, + { + "entity_name": "structured execution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "structured execution is a core mechanism in bookrag that includes the retrieval process based on ift and generation principles", + "source_ids": [ + 79 + ] + }, + { + "entity_name": "ift", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "ift is a principle used within the structured execution mechanism of bookrag", + "source_ids": [ + 79 + ] + }, + { + "entity_name": "modal type filtering", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "modal type filtering is an operation mentioned as necessary for addressing complex real world document queries", + "source_ids": [ + 79 + ] + }, + { + "entity_name": "semantic selection", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "semantic selection is an operation mentioned as necessary for addressing complex real world document queries", + "source_ids": [ + 79 + ] + }, + { + "entity_name": "multi hop reasoning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "multi hop reasoning is an operation mentioned as necessary for addressing complex real world document queries", + "source_ids": [ + 79 + ] + }, + { + "entity_name": "generation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "generation is a process included within the structured execution mechanism of bookrag", + "source_ids": [ + 79 + ] + }, + { + "entity_name": "real world document queries", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 79 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "bookrag executes operations on the bookindex to handle document queries", + "source_ids": [ + 79 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes agent based planning as one of its two core mechanisms to formulate strategies", + "source_ids": [ + 79 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "structured execution", + "relation_name": "", + "weight": 9.0, + "description": "bookrag utilizes structured execution as one of its two core mechanisms to handle retrieval and generation", + "source_ids": [ + 79 + ] + }, + { + "src_entity_name": "structured execution", + "tgt_entity_name": "ift", + "relation_name": "", + "weight": 8.0, + "description": "structured execution includes the retrieval process under the principles of ift", + "source_ids": [ + 79 + ] + }, + { + "src_entity_name": "real world document queries", + "tgt_entity_name": "modal type filtering", + "relation_name": "", + "weight": 8.0, + "description": "real world document queries necessitate operations like modal type filtering", + "source_ids": [ + 79 + ] + }, + { + "src_entity_name": "real world document queries", + "tgt_entity_name": "semantic selection", + "relation_name": "", + "weight": 8.0, + "description": "real world document queries necessitate operations like semantic selection", + "source_ids": [ + 79 + ] + }, + { + "src_entity_name": "real world document queries", + "tgt_entity_name": "multi hop reasoning", + "relation_name": "", + "weight": 8.0, + "description": "real world document queries necessitate operations like multi hop reasoning", + "source_ids": [ + 79 + ] + }, + { + "src_entity_name": "structured execution", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 9.0, + "description": "structured execution includes the generation process as part of its workflow", + "source_ids": [ + 79 + ] + } + ], + "node_idx": 79 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_8.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_8.json new file mode 100644 index 0000000..2ad887e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_8.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "1 introduction", + "entity_type": "SECTION_TITLE", + "description": "As the opening section of the paper 'BookRAG: A Hierarchical Structure-aware Index-based Approach for Retrieval-Augmented Generation on Complex Documents', this section introduces the motivation behind Retrieval-Augmented Generation (RAG), highlights limitations in existing approaches regarding hierarchical documents, and presents the proposed BookRAG framework and its key components like BookIndex.", + "source_ids": [ + 8 + ] + } + ], + "relations": [], + "node_idx": 8 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_80.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_80.json new file mode 100644 index 0000000..2a4607f --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_80.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "5.1 overall workflow", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Agent-Based Retrieval', this section introduces the general operational flow of the BookRAG system, outlining how it intelligently plans and executes operations on the BookIndex to handle complex document queries.", + "source_ids": [ + 80 + ] + } + ], + "relations": [], + "node_idx": 80 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_81.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_81.json new file mode 100644 index 0000000..f7c5d91 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_81.json @@ -0,0 +1,51 @@ +{ + "entities": [ + { + "entity_name": "figure 3", + "entity_type": "IMAGE", + "description": "figure 3 is an illustration depicting the workflow of agent based retrieval", + "source_ids": [ + 81 + ] + }, + { + "entity_name": "agent based retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "agent based retrieval is a workflow designed to address users queries systematically", + "source_ids": [ + 81 + ] + }, + { + "entity_name": "three stage pipeline", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "the three stage pipeline is the structure of the workflow used to address users queries", + "source_ids": [ + 81 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 3", + "tgt_entity_name": "agent based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "figure 3 illustrates the workflow of agent based retrieval", + "source_ids": [ + 81 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "three stage pipeline", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval follows a three stage pipeline to address queries", + "source_ids": [ + 81 + ] + } + ], + "node_idx": 81 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_82.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_82.json new file mode 100644 index 0000000..e72a76e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_82.json @@ -0,0 +1,187 @@ +{ + "entities": [ + { + "entity_name": "agent based planning", + "entity_type": "TASK_OR_PROBLEM", + "description": "agent based planning is a stage in the bookrag process that involves classification and planning for queries", + "source_ids": [ + 82 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "SOFTWARE", + "description": "bookrag is a system that performs classification and planning stages to handle queries", + "source_ids": [ + 82 + ] + }, + { + "entity_name": "classification plan", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "classification plan is the specific stage within agent based planning aimed at distinguishing query types", + "source_ids": [ + 82 + ] + }, + { + "entity_name": "transformer", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "transformer is a model architecture mentioned as an example in a query regarding long range dependencies", + "source_ids": [ + 82 + ] + }, + { + "entity_name": "rnns", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "rnns are model architectures mentioned as an example in a query regarding long range dependencies", + "source_ids": [ + 82 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "DATASET_OR_CORPUS", + "description": "bookindex is a predefined set of operators used to generate plans for retrieval and generation strategies", + "source_ids": [ + 82 + ] + }, + { + "entity_name": "query classification", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "query classification is a step within the classification plan stage that categorizes queries", + "source_ids": [ + 82 + ] + }, + { + "entity_name": "operators plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "an operators plan is generated to guide retrieval and generation strategies", + "source_ids": [ + 82 + ] + }, + { + "entity_name": "retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval is a strategy guided by the operators plan", + "source_ids": [ + 82 + ] + }, + { + "entity_name": "generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation is a strategy guided by the operators plan", + "source_ids": [ + 82 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 10.0, + "description": "bookrag performs the agent based planning stage as its first step", + "source_ids": [ + 82 + ] + }, + { + "src_entity_name": "agent based planning", + "tgt_entity_name": "classification plan", + "relation_name": "", + "weight": 9.0, + "description": "agent based planning includes the classification plan stage to distinguish query types", + "source_ids": [ + 82 + ] + }, + { + "src_entity_name": "classification plan", + "tgt_entity_name": "transformer", + "relation_name": "", + "weight": 7.0, + "description": "the classification plan stage uses a query comparing transformer and rnns as an example", + "source_ids": [ + 82 + ] + }, + { + "src_entity_name": "classification plan", + "tgt_entity_name": "rnns", + "relation_name": "", + "weight": 7.0, + "description": "the classification plan stage uses a query comparing transformer and rnns as an example", + "source_ids": [ + 82 + ] + }, + { + "src_entity_name": "agent based planning", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 8.0, + "description": "agent based planning uses a predefined set of operators designed for the bookindex to generate plans", + "source_ids": [ + 82 + ] + }, + { + "src_entity_name": "classification plan", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 9.0, + "description": "classification plan performs query classification to distinguish query types", + "source_ids": [ + 82 + ] + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "operators plan", + "relation_name": "", + "weight": 8.0, + "description": "the operators plan is generated based on the results of query classification", + "source_ids": [ + 82 + ] + }, + { + "src_entity_name": "operators plan", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 8.0, + "description": "the operators plan guides the retrieval strategy", + "source_ids": [ + 82 + ] + }, + { + "src_entity_name": "operators plan", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 8.0, + "description": "the operators plan guides the generation strategy", + "source_ids": [ + 82 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "operators plan", + "relation_name": "", + "weight": 7.0, + "description": "the operators plan is designed for the bookindex", + "source_ids": [ + 82 + ] + } + ], + "node_idx": 82 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_83.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_83.json new file mode 100644 index 0000000..130c921 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_83.json @@ -0,0 +1,189 @@ +{ + "entities": [ + { + "entity_name": "figure 3", + "entity_type": "IMAGE", + "description": "figure 3 is an image illustrating the general workflow of agent based retrieval in bookrag", + "source_ids": [ + 83 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "SOFTWARE", + "description": "bookrag is a system that utilizes agent based planning retrieval and generation processes", + "source_ids": [ + 83 + ] + }, + { + "entity_name": "agent based retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "agent based retrieval is a workflow containing planning retrieval and generation processes used in bookrag", + "source_ids": [ + 83 + ] + }, + { + "entity_name": "agent based planning", + "entity_type": "TASK_OR_PROBLEM", + "description": "agent based planning is a process component within the agent based retrieval workflow of bookrag", + "source_ids": [ + 83 + ] + }, + { + "entity_name": "retrieval", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval is a process component within the agent based retrieval workflow of bookrag", + "source_ids": [ + 83 + ] + }, + { + "entity_name": "generation", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation is a process component within the agent based retrieval workflow of bookrag", + "source_ids": [ + 83 + ] + }, + { + "entity_name": "workflow", + "entity_type": "TASK_OR_PROBLEM", + "description": "workflow refers to the general process flow of agent based retrieval in bookrag", + "source_ids": [ + 83 + ] + }, + { + "entity_name": "planning", + "entity_type": "TASK_OR_PROBLEM", + "description": "planning is a specific step within the agent based retrieval process", + "source_ids": [ + 83 + ] + }, + { + "entity_name": "generation processes", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation processes are a component of the agent based retrieval workflow in bookrag", + "source_ids": [ + 83 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 3", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 10.0, + "description": "figure 3 depicts the workflow of bookrag", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "figure 3", + "tgt_entity_name": "agent based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "figure 3 illustrates the general workflow of agent based retrieval", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "bookrag contains the agent based retrieval workflow", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval contains the agent based planning process", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "retrieval", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval contains the retrieval process", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "generation", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval contains the generation process", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "figure 3", + "tgt_entity_name": "workflow", + "relation_name": "", + "weight": 10.0, + "description": "figure 3 depicts the general workflow", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "workflow", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval is described as a general workflow", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "planning", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval includes planning as a process", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "agent based retrieval", + "tgt_entity_name": "generation processes", + "relation_name": "", + "weight": 9.0, + "description": "agent based retrieval includes generation processes as a component", + "source_ids": [ + 83 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "workflow", + "relation_name": "", + "weight": 9.0, + "description": "bookrag contains the general workflow of agent based retrieval", + "source_ids": [ + 83 + ] + } + ], + "node_idx": 83 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_84.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_84.json new file mode 100644 index 0000000..9adb90a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_84.json @@ -0,0 +1,105 @@ +{ + "entities": [ + { + "entity_name": "cref='#/texts/89'", + "entity_type": "IMAGE", + "description": "A flowchart diagram illustrating a three-stage process involving planning, retrieval, and generation to answer a question.", + "source_ids": [ + 84 + ] + }, + { + "entity_name": "question", + "entity_type": "TASK_OR_PROBLEM", + "description": "The input trigger for the system, represented by an icon of a person with a question mark.", + "source_ids": [ + 84 + ] + }, + { + "entity_name": "agent-based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The first stage of the process, which handles classification and planning tasks.", + "source_ids": [ + 84 + ] + }, + { + "entity_name": "retrieval process", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The second stage of the process, utilizing scent or filter-based mechanisms to retrieve information.", + "source_ids": [ + 84 + ] + }, + { + "entity_name": "generation process", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "The third stage of the process, responsible for analysis and merging data to form the output.", + "source_ids": [ + 84 + ] + }, + { + "entity_name": "answer", + "entity_type": "TASK_OR_PROBLEM", + "description": "The final output of the system, symbolized by a lightbulb icon.", + "source_ids": [ + 84 + ] + } + ], + "relations": [ + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "question", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Question", + "source_ids": [ + 84 + ] + }, + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "agent-based planning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Agent-based Planning", + "source_ids": [ + 84 + ] + }, + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "retrieval process", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Retrieval Process", + "source_ids": [ + 84 + ] + }, + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "generation process", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Generation Process", + "source_ids": [ + 84 + ] + }, + { + "src_entity_name": "cref='#/texts/89'", + "tgt_entity_name": "answer", + "relation_name": "", + "weight": 9.0, + "description": "Image entity cref='#/texts/89' related to Answer", + "source_ids": [ + 84 + ] + } + ], + "node_idx": 84 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_85.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_85.json new file mode 100644 index 0000000..c89e19e --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_85.json @@ -0,0 +1,215 @@ +{ + "entities": [ + { + "entity_name": "retrieval process", + "entity_type": "TASK_OR_PROBLEM", + "description": "retrieval process is a stage guided by an operator plan that executes scent filter based retrieval", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "scent filter based retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "scent filter based retrieval is the specific method executed during the retrieval process to find information", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "DATASET_OR_CORPUS", + "description": "bookindex is a data structure represented as b t g m that is navigated during the retrieval process", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "SOFTWARE", + "description": "bookrag is the system that obtains the retrieval set of highly relevant information blocks after reasoning", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "t", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "t is a component of the bookindex structure", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "g is a component of the bookindex structure containing relevant entities", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "m", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "m is a component of the bookindex structure", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "operator plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "operator plan is the guiding document or set of instructions for the retrieval process", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "modal type", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "modal type is a specific filter used to refine the selection of information during retrieval", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "relevant entities", + "entity_type": "DATASET_OR_CORPUS", + "description": "relevant entities are the items found in g that are followed during scent based retrieval", + "source_ids": [ + 85 + ] + }, + { + "entity_name": "information blocks", + "entity_type": "DATASET_OR_CORPUS", + "description": "information blocks are the highly relevant units of data retrieved by bookrag", + "source_ids": [ + 85 + ] + } + ], + "relations": [ + { + "src_entity_name": "retrieval process", + "tgt_entity_name": "scent filter based retrieval", + "relation_name": "", + "weight": 10.0, + "description": "the retrieval process executes the scent filter based retrieval method", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "retrieval process", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "the retrieval process navigates the bookindex to find information", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "scent filter based retrieval utilizes the bookindex to find information", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 8.0, + "description": "t is a component of the bookindex structure", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 8.0, + "description": "g is a component of the bookindex structure", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "m", + "relation_name": "", + "weight": 8.0, + "description": "m is a component of the bookindex structure", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 9.0, + "description": "bookrag gets the retrieval set from the bookindex", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "retrieval process", + "tgt_entity_name": "operator plan", + "relation_name": "", + "weight": 10.0, + "description": "the retrieval process is guided by the operator plan", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "modal type", + "relation_name": "", + "weight": 9.0, + "description": "scent filter based retrieval employs modal type as a filter to refine selection", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "scent filter based retrieval", + "tgt_entity_name": "relevant entities", + "relation_name": "", + "weight": 9.0, + "description": "scent based retrieval follows relevant entities in g to find information", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "information blocks", + "relation_name": "", + "weight": 10.0, + "description": "bookrag obtains the retrieval set of highly relevant information blocks", + "source_ids": [ + 85 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "relevant entities", + "relation_name": "", + "weight": 8.0, + "description": "relevant entities are contained within the g component of the bookindex", + "source_ids": [ + 85 + ] + } + ], + "node_idx": 85 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_86.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_86.json new file mode 100644 index 0000000..c641c31 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_86.json @@ -0,0 +1,97 @@ +{ + "entities": [ + { + "entity_name": "generation process", + "entity_type": "TASK_OR_PROBLEM", + "description": "generation process is the final stage where retrieved information is synthesized and analyzed to formulate a coherent response", + "source_ids": [ + 86 + ] + }, + { + "entity_name": "analysis merging", + "entity_type": "TASK_OR_PROBLEM", + "description": "analysis merging is the specific activity within the generation stage that synthesizes fragmented evidence", + "source_ids": [ + 86 + ] + }, + { + "entity_name": "retrieved information", + "entity_type": "DATASET_OR_CORPUS", + "description": "retrieved information refers to the data collected and brought into the generation stage for processing", + "source_ids": [ + 86 + ] + }, + { + "entity_name": "fragmented pieces of evidence", + "entity_type": "DATASET_OR_CORPUS", + "description": "fragmented pieces of evidence are the specific incomplete data items that are synthesized during the process", + "source_ids": [ + 86 + ] + }, + { + "entity_name": "coherent response", + "entity_type": "PRODUCT", + "description": "coherent response is the final output formulated by the generation stage after analysis", + "source_ids": [ + 86 + ] + } + ], + "relations": [ + { + "src_entity_name": "generation process", + "tgt_entity_name": "analysis merging", + "relation_name": "", + "weight": 9.0, + "description": "analysis merging is a sub stage or activity performed within the generation process", + "source_ids": [ + 86 + ] + }, + { + "src_entity_name": "retrieved information", + "tgt_entity_name": "generation process", + "relation_name": "", + "weight": 10.0, + "description": "retrieved information enters the generation process as its primary input", + "source_ids": [ + 86 + ] + }, + { + "src_entity_name": "fragmented pieces of evidence", + "tgt_entity_name": "analysis merging", + "relation_name": "", + "weight": 9.0, + "description": "analysis merging synthesizes the fragmented pieces of evidence", + "source_ids": [ + 86 + ] + }, + { + "src_entity_name": "generation process", + "tgt_entity_name": "coherent response", + "relation_name": "", + "weight": 10.0, + "description": "the generation process formulates the coherent response as its final output", + "source_ids": [ + 86 + ] + }, + { + "src_entity_name": "analysis merging", + "tgt_entity_name": "coherent response", + "relation_name": "", + "weight": 8.0, + "description": "analysis merging contributes to the formulation of the coherent response through final analysis", + "source_ids": [ + 86 + ] + } + ], + "node_idx": 86 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_87.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_87.json new file mode 100644 index 0000000..36bbb4c --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_87.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "5.2 agent-based planning", + "entity_type": "SECTION_TITLE", + "description": "As a subsection of 'Agent-Based Retrieval' (Section 5), this section details the strategy formulation mechanism within the BookRAG framework, explaining how an agent intelligently plans operations for complex document queries.", + "source_ids": [ + 87 + ] + }, + { + "entity_name": "agent-based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "Refers to the specific methodology described in section 5.2 where an agent formulates strategies to handle complex retrieval tasks involving modal filtering and multi-hop reasoning.", + "source_ids": [ + 87 + ] + } + ], + "relations": [ + { + "src_entity_name": "agent-based planning", + "tgt_entity_name": "5.2 agent-based planning", + "relation_name": "", + "weight": 10.0, + "description": "The concept of 'Agent-based Planning' is the primary topic and subject matter of section 5.2.", + "source_ids": [ + 87 + ] + } + ], + "node_idx": 87 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_88.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_88.json new file mode 100644 index 0000000..18f4ebc --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_88.json @@ -0,0 +1,261 @@ +{ + "entities": [ + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a system designed to intelligently navigate a bookindex and adapt to query requirements", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "DATASET_OR_CORPUS", + "description": "bookindex is a data structure represented as t g m that bookrag navigates", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "formulator", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "formulator is one of four types of operators defined to support flexible retrieval in bookrag", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "selector", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "selector is one of four types of operators defined to support flexible retrieval in bookrag", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "reasoner", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "reasoner is one of four types of operators defined to support flexible retrieval in bookrag", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "synthesizer", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "synthesizer is one of four types of operators defined to support flexible retrieval in bookrag", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "agent", + "entity_type": "TASK_OR_PROBLEM", + "description": "the agent is an entity that performs the first step of the sequential process in bookrag", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "t", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "t is a component of the bookindex data structure b t g m", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "g", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "g is a component of the bookindex data structure b t g m", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "m", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "m is a component of the bookindex data structure b t g m", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "query categories", + "entity_type": "TASK_OR_PROBLEM", + "description": "query categories are specific requirements that bookrag adapts to using its operators", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "execution pipelines", + "entity_type": "TASK_OR_PROBLEM", + "description": "execution pipelines are formed by combining operators to support flexible retrieval", + "source_ids": [ + 88 + ] + }, + { + "entity_name": "adjustable parameters", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "adjustable parameters are attributes of the execution pipelines that can be configured", + "source_ids": [ + 88 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookrag", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookrag is designed to intelligently navigate the bookindex", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "formulator", + "relation_name": "", + "weight": 9.0, + "description": "bookrag defines the formulator as one of its four types of operators", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "bookrag defines the selector as one of its four types of operators", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "bookrag defines the reasoner as one of its four types of operators", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 9.0, + "description": "bookrag defines the synthesizer as one of its four types of operators", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "agent", + "relation_name": "", + "weight": 8.0, + "description": "the agent performs the first step of the process within bookrag", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "t", + "relation_name": "", + "weight": 10.0, + "description": "t is a defined component within the bookindex structure", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "g", + "relation_name": "", + "weight": 10.0, + "description": "g is a defined component within the bookindex structure", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "bookindex", + "tgt_entity_name": "m", + "relation_name": "", + "weight": 10.0, + "description": "m is a defined component within the bookindex structure", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "formulator", + "tgt_entity_name": "execution pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the formulator operator is combined to form tailored execution pipelines", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "selector", + "tgt_entity_name": "execution pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the selector operator is combined to form tailored execution pipelines", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "reasoner", + "tgt_entity_name": "execution pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the reasoner operator is combined to form tailored execution pipelines", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "synthesizer", + "tgt_entity_name": "execution pipelines", + "relation_name": "", + "weight": 9.0, + "description": "the synthesizer operator is combined to form tailored execution pipelines", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query categories", + "relation_name": "", + "weight": 9.0, + "description": "bookrag dynamically configures operators to adapt to the specific requirements of different query categories", + "source_ids": [ + 88 + ] + }, + { + "src_entity_name": "execution pipelines", + "tgt_entity_name": "adjustable parameters", + "relation_name": "", + "weight": 8.0, + "description": "execution pipelines are created with adjustable parameters", + "source_ids": [ + 88 + ] + } + ], + "node_idx": 88 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_89.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_89.json new file mode 100644 index 0000000..fdb24cb --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_89.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "table 2", + "entity_type": "TABLE", + "description": "table 2 is a table that lists three common query categories addressed in bookrag", + "source_ids": [ + 89 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "PRODUCT", + "description": "bookrag is a product or system that addresses three common query categories", + "source_ids": [ + 89 + ] + } + ], + "relations": [ + { + "src_entity_name": "table 2", + "tgt_entity_name": "bookrag", + "relation_name": "", + "weight": 9.0, + "description": "table 2 details query categories that are addressed within the bookrag system", + "source_ids": [ + 89 + ] + } + ], + "node_idx": 89 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_9.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_9.json new file mode 100644 index 0000000..b3267d6 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_9.json @@ -0,0 +1,143 @@ +{ + "entities": [ + { + "entity_name": "large language models", + "entity_type": "TECHNOLOGY", + "description": "large language models are a type of technology that has revolutionized question answering systems", + "source_ids": [ + 9 + ] + }, + { + "entity_name": "qwen 3", + "entity_type": "PRODUCT", + "description": "qwen 3 is a specific large language model mentioned as an example", + "source_ids": [ + 9 + ] + }, + { + "entity_name": "gemini 2 5", + "entity_type": "PRODUCT", + "description": "gemini 2 5 is a specific large language model mentioned as an example", + "source_ids": [ + 9 + ] + }, + { + "entity_name": "question answering", + "entity_type": "TASK_OR_PROBLEM", + "description": "question answering is a system or task that has been revolutionized by large language models", + "source_ids": [ + 9 + ] + }, + { + "entity_name": "industry", + "entity_type": "ORGANIZATION", + "description": "the industry refers to the collective group of organizations increasingly adopting llms for qa systems", + "source_ids": [ + 9 + ] + }, + { + "entity_name": "qa system", + "entity_type": "PRODUCT", + "description": "qa system is a product built using llms to assist users and reduce manual effort", + "source_ids": [ + 9 + ] + }, + { + "entity_name": "users", + "entity_type": "PERSON", + "description": "users are the individuals who are assisted by the qa systems built by the industry", + "source_ids": [ + 9 + ] + } + ], + "relations": [ + { + "src_entity_name": "large language models", + "tgt_entity_name": "qwen 3", + "relation_name": "", + "weight": 10.0, + "description": "qwen 3 is identified as an example of a large language model", + "source_ids": [ + 9 + ] + }, + { + "src_entity_name": "large language models", + "tgt_entity_name": "gemini 2 5", + "relation_name": "", + "weight": 10.0, + "description": "gemini 2 5 is identified as an example of a large language model", + "source_ids": [ + 9 + ] + }, + { + "src_entity_name": "large language models", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 9.0, + "description": "large language models have revolutionized the question answering system", + "source_ids": [ + 9 + ] + }, + { + "src_entity_name": "industry", + "tgt_entity_name": "large language models", + "relation_name": "", + "weight": 8.0, + "description": "the industry is adopting large language models to build question answering systems", + "source_ids": [ + 9 + ] + }, + { + "src_entity_name": "industry", + "tgt_entity_name": "question answering", + "relation_name": "", + "weight": 7.0, + "description": "the industry is building question answering systems to assist users and reduce manual effort", + "source_ids": [ + 9 + ] + }, + { + "src_entity_name": "industry", + "tgt_entity_name": "qa system", + "relation_name": "", + "weight": 9.0, + "description": "the industry builds qa systems to assist users and reduce manual effort", + "source_ids": [ + 9 + ] + }, + { + "src_entity_name": "qa system", + "tgt_entity_name": "users", + "relation_name": "", + "weight": 8.0, + "description": "qa systems are designed to assist users", + "source_ids": [ + 9 + ] + }, + { + "src_entity_name": "large language models", + "tgt_entity_name": "qa system", + "relation_name": "", + "weight": 9.0, + "description": "large language models are used to build qa systems", + "source_ids": [ + 9 + ] + } + ], + "node_idx": 9 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_90.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_90.json new file mode 100644 index 0000000..516a19a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_90.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "table: cref='#/texts/95'...", + "entity_type": "TABLE", + "description": "A data table described as: cref='#/texts/95'", + "source_ids": [ + 90 + ] + } + ], + "relations": [], + "node_idx": 90 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_91.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_91.json new file mode 100644 index 0000000..8a3b676 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_91.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "6", + "entity_type": "MEASUREMENT", + "description": "6 is a numerical value mentioned in the text potentially representing a count or measurement", + "source_ids": [ + 91 + ] + } + ], + "relations": [], + "node_idx": 91 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_92.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_92.json new file mode 100644 index 0000000..47c34db --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_92.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "operator set", + "entity_type": "TASK_OR_PROBLEM", + "description": "operator set is a task or problem mentioned in the text likely referring to a specific set of operators in a technical context", + "source_ids": [ + 92 + ] + } + ], + "relations": [], + "node_idx": 92 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_93.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_93.json new file mode 100644 index 0000000..0f21d14 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_93.json @@ -0,0 +1,223 @@ +{ + "entities": [ + { + "entity_name": "figure 4", + "entity_type": "IMAGE", + "description": "figure 4 is an image depicting the bookrag operator library and an execution example", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "bookrag operator library", + "entity_type": "SOFTWARE", + "description": "the bookrag operator library is a software component containing four operator types", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "mmlongbench dataset", + "entity_type": "DATASET_OR_CORPUS", + "description": "the mmlongbench dataset is the source of the execution example shown in the text", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "formulator", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "formulator is one of the four operator types depicted in the bookrag operator library", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "selector", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "selector is one of the four operator types depicted in the bookrag operator library", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "reasoner", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "reasoner is one of the four operator types depicted in the bookrag operator library", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "synthesizer", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "synthesizer is one of the four operator types depicted in the bookrag operator library", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "single hop", + "entity_type": "TASK_OR_PROBLEM", + "description": "single hop is a type of query for which an execution trace is demonstrated", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "operator", + "entity_type": "MODEL_OR_ARCHITECTURE", + "description": "operator is a general term for the components formulator selector reasoner synthesizer within the bookrag system", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "execution trace", + "entity_type": "TASK_OR_PROBLEM", + "description": "execution trace is the step by step record of the agent based planning and operator execution shown in the text", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "agent based planning", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "agent based planning is the method used for planning demonstrated in the execution trace", + "source_ids": [ + 93 + ] + }, + { + "entity_name": "step by step operator execution", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "step by step operator execution is the method of executing operators demonstrated in the text", + "source_ids": [ + 93 + ] + } + ], + "relations": [ + { + "src_entity_name": "figure 4", + "tgt_entity_name": "bookrag operator library", + "relation_name": "", + "weight": 10.0, + "description": "figure 4 visually depicts the bookrag operator library", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "figure 4", + "tgt_entity_name": "mmlongbench dataset", + "relation_name": "", + "weight": 9.0, + "description": "figure 4 shows an execution example derived from the mmlongbench dataset", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "formulator", + "relation_name": "", + "weight": 10.0, + "description": "the bookrag operator library contains the formulator operator type", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 10.0, + "description": "the bookrag operator library contains the selector operator type", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 10.0, + "description": "the bookrag operator library contains the reasoner operator type", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 10.0, + "description": "the bookrag operator library contains the synthesizer operator type", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "figure 4", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "figure 4 demonstrates an execution trace for a single hop query", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "bookrag operator library", + "tgt_entity_name": "operator", + "relation_name": "", + "weight": 8.0, + "description": "the bookrag operator library is composed of specific operators", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "figure 4", + "tgt_entity_name": "execution trace", + "relation_name": "", + "weight": 9.0, + "description": "figure 4 contains an execution trace for a single hop query", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "execution trace", + "tgt_entity_name": "agent based planning", + "relation_name": "", + "weight": 9.0, + "description": "the execution trace demonstrates agent based planning", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "execution trace", + "tgt_entity_name": "step by step operator execution", + "relation_name": "", + "weight": 9.0, + "description": "the execution trace demonstrates step by step operator execution", + "source_ids": [ + 93 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "execution trace", + "relation_name": "", + "weight": 10.0, + "description": "the execution trace is specifically for a single hop query", + "source_ids": [ + 93 + ] + } + ], + "node_idx": 93 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_94.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_94.json new file mode 100644 index 0000000..8d87aa7 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_94.json @@ -0,0 +1,537 @@ +{ + "entities": [ + { + "entity_name": "operator-set", + "entity_type": "IMAGE", + "description": "A diagram illustrating a framework for processing queries, divided into an 'Operators' section and an 'Execution example' section.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "extract", + "entity_type": "TASK_OR_PROBLEM", + "description": "The initial step in the operator set where questions are decomposed to identify entities.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "decompose", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A process within the Extract phase that breaks down a query into sub-queries.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "entities", + "entity_type": "DATASET_OR_CORPUS", + "description": "The output of the Extract phase, representing distinct items identified from the input text.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "sub-queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "Smaller queries generated during the decomposition process.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "formulator", + "entity_type": "SYSTEM_COMPONENT", + "description": "The component or agent responsible for the extraction and decomposition steps.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "filter", + "entity_type": "TASK_OR_PROBLEM", + "description": "An operator that processes data structures like trees to select relevant information.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "select", + "entity_type": "TASK_OR_PROBLEM", + "description": "The action performed by the Filter operator to choose specific elements.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "selector", + "entity_type": "SYSTEM_COMPONENT", + "description": "The component responsible for filtering and selecting data based on criteria.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "reason", + "entity_type": "TASK_OR_PROBLEM", + "description": "An operator that takes Graph and Text inputs to perform reasoning tasks.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "graph", + "entity_type": "DATA_STRUCTURE", + "description": "A visual representation of data used as input for the Reason operator.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "text", + "entity_type": "DATA_STRUCTURE", + "description": "Raw textual data used as input for the Reason operator.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "s:", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "A label indicating a score or similarity matrix with values such as 0.6, 0.5, 0.4.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "skyline", + "entity_type": "TASK_OR_PROBLEM", + "description": "An operator that processes ranked lists (S1, S2) to find optimal solutions.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "reasoner", + "entity_type": "SYSTEM_COMPONENT", + "description": "The component executing the Reason and Skyline operations.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "map", + "entity_type": "TASK_OR_PROBLEM", + "description": "An operator that transforms data using icons representing different formats.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "reduce", + "entity_type": "TASK_OR_PROBLEM", + "description": "An operator that combines multiple inputs into a single result.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "synthesizer", + "entity_type": "SYSTEM_COMPONENT", + "description": "The final component that aggregates results into a coherent answer.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "execution example", + "entity_type": "SECTION_TITLE", + "description": "A subsection of the diagram showing a concrete application of the operator set.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "q: what is the type of car in the ranking prompt example?", + "entity_type": "TASK_OR_PROBLEM", + "description": "The specific user question being processed in the execution example.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "planning", + "entity_type": "TASK_OR_PROBLEM", + "description": "The phase where a plan is formulated to solve the query.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "simple query...", + "entity_type": "TASK_OR_PROBLEM", + "description": "A classification of the input query.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "operator plan", + "entity_type": "TASK_OR_PROBLEM", + "description": "The sequence of operators chosen to solve the problem: Extract->Select->Reason->Skyline->Map...", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "car", + "entity_type": "PRODUCT", + "description": "An entity extracted from the question.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "ranking prompt", + "entity_type": "BOOK", + "description": "An entity mentioned in the question context.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "method", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "A node in the planning graph representing the method to be used.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "method and its descendants", + "entity_type": "SECTION_TITLE", + "description": "A grouping of nodes related to the Method in the execution flow.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "a: based on the provided information...", + "entity_type": "TASK_OR_PROBLEM", + "description": "The final answer generated by the system.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "mercedes-benz e-class sedan", + "entity_type": "VEHICLE", + "description": "The specific car type identified as the correct answer in the example.", + "source_ids": [ + 94 + ] + }, + { + "entity_name": "image cref='#/texts/98'", + "entity_type": "UNKNOWN", + "description": "", + "source_ids": [ + 94 + ] + } + ], + "relations": [ + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "operator-set", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Operator-Set", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "extract", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Extract", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "decompose", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Decompose", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "entities", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Entities", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "sub-queries", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Sub-queries", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "formulator", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Formulator", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "filter", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Filter", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "select", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Select", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "selector", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Selector", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "reason", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Reason", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "graph", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Graph", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "text", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Text", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "s:", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to S:", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "skyline", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Skyline", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "reasoner", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Reasoner", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "map", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Map", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "reduce", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Reduce", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "synthesizer", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Synthesizer", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "execution example", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Execution example", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "q: what is the type of car in the ranking prompt example?", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Q: What is the type of car in the Ranking Prompt example?", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "planning", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Planning", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "simple query...", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Simple query...", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "operator plan", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Operator Plan", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "car", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Car", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "ranking prompt", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Ranking Prompt", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "method", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Method", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "method and its descendants", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Method and its Descendants", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "a: based on the provided information...", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to A: Based on the provided information...", + "source_ids": [ + 94 + ] + }, + { + "src_entity_name": "image cref='#/texts/98'", + "tgt_entity_name": "mercedes-benz e-class sedan", + "relation_name": "", + "weight": 9.0, + "description": "Image entity Image cref='#/texts/98' related to Mercedes-Benz E-Class Sedan", + "source_ids": [ + 94 + ] + } + ], + "node_idx": 94 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_95.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_95.json new file mode 100644 index 0000000..e859666 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_95.json @@ -0,0 +1,33 @@ +{ + "entities": [ + { + "entity_name": "query classification", + "entity_type": "TASK_OR_PROBLEM", + "description": "query classification is a task mentioned in the text used to determine the appropriate solution strategy", + "source_ids": [ + 95 + ] + }, + { + "entity_name": "operator plan", + "entity_type": "PRODUCT", + "description": "operator plan is a specific output generated after determining the solution strategy", + "source_ids": [ + 95 + ] + } + ], + "relations": [ + { + "src_entity_name": "query classification", + "tgt_entity_name": "operator plan", + "relation_name": "", + "weight": 9.0, + "description": "query classification is performed to generate a specific operator plan", + "source_ids": [ + 95 + ] + } + ], + "node_idx": 95 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_96.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_96.json new file mode 100644 index 0000000..133f856 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_96.json @@ -0,0 +1,267 @@ +{ + "entities": [ + { + "entity_name": "query classification", + "entity_type": "TASK_OR_PROBLEM", + "description": "query classification is a task focused on enabling agent strategy selection by categorizing queries based on complexity", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "single hop", + "entity_type": "EVENT", + "description": "single hop is a query category requiring a single piece of information retrieved via a scent based retrieval operation", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "multi hop", + "entity_type": "EVENT", + "description": "multi hop is a query category defined by its intrinsic complexity and operational demands", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "global aggregation", + "entity_type": "EVENT", + "description": "global aggregation is a query category necessitating analysis under multiple filtering conditions", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "table 2", + "entity_type": "TABLE", + "description": "table 2 is a reference in the text that defines the three representative query categories", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "scent based retrieval", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "scent based retrieval is a method used to retrieve a single piece of information for single hop queries", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "filter aggregation", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "filter aggregation is a sequence of operations used to analyze content under multiple filtering conditions for global aggregation queries", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "bookrag", + "entity_type": "SOFTWARE", + "description": "bookrag is a system designed to be extensible for resolving a broader range of query types", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "agent strategy selection", + "entity_type": "TASK_OR_PROBLEM", + "description": "agent strategy selection is a process enabled by query classification to determine the appropriate solution strategy", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "intrinsic complexity", + "entity_type": "CONCEPT", + "description": "intrinsic complexity is an attribute used to define the query categories", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "operational demands", + "entity_type": "CONCEPT", + "description": "operational demands are factors used to define the query categories alongside intrinsic complexity", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "solution strategy", + "entity_type": "CONCEPT", + "description": "solution strategy refers to the different approaches required for each query category", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "filtering conditions", + "entity_type": "CONCEPT", + "description": "filtering conditions are multiple criteria used in the analysis of global aggregation queries", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "document", + "entity_type": "OBJECT", + "description": "document refers to the source material where content is analyzed during global aggregation queries", + "source_ids": [ + 96 + ] + }, + { + "entity_name": "additional operators", + "entity_type": "SOFTWARE", + "description": "additional operators are components integrated into bookrag to extend its capabilities", + "source_ids": [ + 96 + ] + } + ], + "relations": [ + { + "src_entity_name": "query classification", + "tgt_entity_name": "single hop", + "relation_name": "", + "weight": 9.0, + "description": "query classification defines single hop as one of its three representative categories", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "multi hop", + "relation_name": "", + "weight": 9.0, + "description": "query classification defines multi hop as one of its three representative categories", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "global aggregation", + "relation_name": "", + "weight": 9.0, + "description": "query classification defines global aggregation as one of its three representative categories", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "scent based retrieval", + "relation_name": "", + "weight": 8.0, + "description": "single hop queries typically require a scent based retrieval operation", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "global aggregation", + "tgt_entity_name": "filter aggregation", + "relation_name": "", + "weight": 8.0, + "description": "global aggregation queries usually involve a sequence of filter aggregation operations", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "query classification", + "relation_name": "", + "weight": 7.0, + "description": "bookrag is designed to resolve a broader range of query types including those defined by the classification", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "agent strategy selection", + "relation_name": "", + "weight": 9.0, + "description": "query classification enables agent strategy selection", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "single hop", + "tgt_entity_name": "intrinsic complexity", + "relation_name": "", + "weight": 7.0, + "description": "single hop is defined by its intrinsic complexity and operational demands", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "multi hop", + "tgt_entity_name": "intrinsic complexity", + "relation_name": "", + "weight": 7.0, + "description": "multi hop is defined by its intrinsic complexity and operational demands", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "global aggregation", + "tgt_entity_name": "intrinsic complexity", + "relation_name": "", + "weight": 7.0, + "description": "global aggregation is defined by its intrinsic complexity and operational demands", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "query classification", + "tgt_entity_name": "solution strategy", + "relation_name": "", + "weight": 8.0, + "description": "each category defined by query classification requires a different solution strategy", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "global aggregation", + "tgt_entity_name": "filtering conditions", + "relation_name": "", + "weight": 8.0, + "description": "global aggregation necessitates analyzing content under multiple filtering conditions", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "global aggregation", + "tgt_entity_name": "document", + "relation_name": "", + "weight": 7.0, + "description": "global aggregation involves analyzing content across various parts of the document", + "source_ids": [ + 96 + ] + }, + { + "src_entity_name": "bookrag", + "tgt_entity_name": "additional operators", + "relation_name": "", + "weight": 8.0, + "description": "bookrag resolves broader query types by integrating additional operators", + "source_ids": [ + 96 + ] + } + ], + "node_idx": 96 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_97.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_97.json new file mode 100644 index 0000000..6d5b244 --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_97.json @@ -0,0 +1,159 @@ +{ + "entities": [ + { + "entity_name": "bookindex operators", + "entity_type": "TASK_OR_PROBLEM", + "description": "bookindex operators are a set of strategies designed to execute tasks identified by classification", + "source_ids": [ + 97 + ] + }, + { + "entity_name": "o", + "entity_type": "TASK_OR_PROBLEM", + "description": "o represents the set of operators tailored for the bookindex", + "source_ids": [ + 97 + ] + }, + { + "entity_name": "bookindex", + "entity_type": "PRODUCT", + "description": "bookindex is a system defined by the tuple t g m for which operators are designed", + "source_ids": [ + 97 + ] + }, + { + "entity_name": "figure 4 a", + "entity_type": "IMAGE", + "description": "figure 4 a is a visual depiction of the operators", + "source_ids": [ + 97 + ] + }, + { + "entity_name": "table 3", + "entity_type": "TABLE", + "description": "table 3 provides detailed information about the operators", + "source_ids": [ + 97 + ] + }, + { + "entity_name": "agent", + "entity_type": "TASK_OR_PROBLEM", + "description": "the agent is the entity that employs the operators for diverse query categories", + "source_ids": [ + 97 + ] + }, + { + "entity_name": "classification", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "classification is the method used to identify the strategies executed by the operators", + "source_ids": [ + 97 + ] + }, + { + "entity_name": "query categories", + "entity_type": "TASK_OR_PROBLEM", + "description": "query categories are the diverse groups of queries for which the agent employs the operators", + "source_ids": [ + 97 + ] + }, + { + "entity_name": "figure 4", + "entity_type": "IMAGE", + "description": "figure 4 is a visual element referenced in the text specifically part a", + "source_ids": [ + 97 + ] + } + ], + "relations": [ + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "o", + "relation_name": "", + "weight": 9.0, + "description": "bookindex operators are represented by the set o tailored for the bookindex", + "source_ids": [ + 97 + ] + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "bookindex", + "relation_name": "", + "weight": 10.0, + "description": "bookindex operators are designed specifically for the bookindex system", + "source_ids": [ + 97 + ] + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "figure 4 a", + "relation_name": "", + "weight": 8.0, + "description": "bookindex operators are visually depicted in figure 4 a", + "source_ids": [ + 97 + ] + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "table 3", + "relation_name": "", + "weight": 8.0, + "description": "bookindex operators are detailed in table 3", + "source_ids": [ + 97 + ] + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "agent", + "relation_name": "", + "weight": 9.0, + "description": "the agent employs the bookindex operators for diverse query categories", + "source_ids": [ + 97 + ] + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "classification", + "relation_name": "", + "weight": 9.0, + "description": "bookindex operators are designed to execute strategies identified by classification", + "source_ids": [ + 97 + ] + }, + { + "src_entity_name": "agent", + "tgt_entity_name": "query categories", + "relation_name": "", + "weight": 8.0, + "description": "the agent employs operators for diverse query categories", + "source_ids": [ + 97 + ] + }, + { + "src_entity_name": "bookindex operators", + "tgt_entity_name": "figure 4", + "relation_name": "", + "weight": 7.0, + "description": "bookindex operators are visually depicted in figure 4", + "source_ids": [ + 97 + ] + } + ], + "node_idx": 97 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_98.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_98.json new file mode 100644 index 0000000..815caec --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_98.json @@ -0,0 +1,251 @@ +{ + "entities": [ + { + "entity_name": "formulator", + "entity_type": "TASK_OR_PROBLEM", + "description": "formulator is a category of llm based operators that prepare queries for execution", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "decompose", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "decompose is a method that breaks a complex query into simpler actionable sub queries", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "extract", + "entity_type": "METHOD_OR_TECHNIQUE", + "description": "extract is a method that employs an llm to identify key entities from query text and link them to a knowledge graph", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "llm", + "entity_type": "TECHNOLOGY", + "description": "llm refers to large language models used as operators in the formulator category", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "kg", + "entity_type": "SOFTWARE", + "description": "kg refers to the knowledge graph where entities are linked", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "qs", + "entity_type": "TASK_OR_PROBLEM", + "description": "qs represents the set of simpler actionable sub queries generated by the decompose method", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "eq", + "entity_type": "TASK_OR_PROBLEM", + "description": "eq represents the set of key entities identified by the extract method", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "pdec", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "pdec is a parameter used in the llm function to generate sub queries", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "pext", + "entity_type": "PARAMETER_OR_VARIABLE", + "description": "pext is a parameter used in the llm function to identify key entities", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "complex query", + "entity_type": "TASK_OR_PROBLEM", + "description": "complex query is the type of query that the decompose method breaks down into simpler sub queries", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "sub queries", + "entity_type": "TASK_OR_PROBLEM", + "description": "sub queries are the simpler actionable components resulting from breaking down a complex query", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "query text", + "entity_type": "TASK_OR_PROBLEM", + "description": "query text is the source material from which the extract method identifies key entities", + "source_ids": [ + 98 + ] + }, + { + "entity_name": "entities", + "entity_type": "TASK_OR_PROBLEM", + "description": "entities are the key items identified in the query text and linked to the knowledge graph", + "source_ids": [ + 98 + ] + } + ], + "relations": [ + { + "src_entity_name": "formulator", + "tgt_entity_name": "decompose", + "relation_name": "", + "weight": 9.0, + "description": "decompose is included as a category within the formulator operators", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "formulator", + "tgt_entity_name": "extract", + "relation_name": "", + "weight": 9.0, + "description": "extract is included as a category within the formulator operators", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "decompose", + "tgt_entity_name": "qs", + "relation_name": "", + "weight": 10.0, + "description": "decompose generates the set of sub queries qs", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "eq", + "relation_name": "", + "weight": 10.0, + "description": "extract identifies the key entities eq", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "kg", + "relation_name": "", + "weight": 9.0, + "description": "extract links identified entities to the knowledge graph kg", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "decompose", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "decompose employs an llm to perform its function", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 8.0, + "description": "extract employs an llm to perform its function", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "qs", + "tgt_entity_name": "pdec", + "relation_name": "", + "weight": 7.0, + "description": "qs is generated using the parameter pdec in the llm function", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "eq", + "tgt_entity_name": "pext", + "relation_name": "", + "weight": 7.0, + "description": "eq is generated using the parameter pext in the llm function", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "decompose", + "tgt_entity_name": "complex query", + "relation_name": "", + "weight": 10.0, + "description": "decompose takes a complex query as its input to break it down", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "decompose", + "tgt_entity_name": "sub queries", + "relation_name": "", + "weight": 10.0, + "description": "decompose produces sub queries as its output", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "query text", + "relation_name": "", + "weight": 10.0, + "description": "extract analyzes the query text to find key entities", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "extract", + "tgt_entity_name": "entities", + "relation_name": "", + "weight": 10.0, + "description": "extract identifies entities from the query text", + "source_ids": [ + 98 + ] + }, + { + "src_entity_name": "formulator", + "tgt_entity_name": "llm", + "relation_name": "", + "weight": 9.0, + "description": "formulators are defined as llm based operators", + "source_ids": [ + 98 + ] + } + ], + "node_idx": 98 +} \ No newline at end of file diff --git a/e2e_test_output/kg_extractor_res/kg_extractor_res_99.json b/e2e_test_output/kg_extractor_res/kg_extractor_res_99.json new file mode 100644 index 0000000..c1c367a --- /dev/null +++ b/e2e_test_output/kg_extractor_res/kg_extractor_res_99.json @@ -0,0 +1,14 @@ +{ + "entities": [ + { + "entity_name": "formula (2)", + "entity_type": "EQUATION_OR_FORMULA", + "description": "An equation defining the output Q(s) as a set of query vectors generated by an LLM. LaTeX: 𝑄 𝑠 = LLM ( 𝑃 𝐷𝑒𝑐 , 𝑞 ) = { 𝑞 , 𝑞 1 2 , . . . , 𝑞 𝑘 } (2)", + "source_ids": [ + 99 + ] + } + ], + "relations": [], + "node_idx": 99 +} \ No newline at end of file diff --git a/e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/data_level0.bin b/e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..38fff23c2c7023a42d69ae10a02af79b16d31e5a GIT binary patch literal 423600 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

    &LL z;ZGm+Ichi8wz#u)mrGMOyT1^Z&7D_a$xTc%bOmY=)F-1FC|n+xqzx6D7;eR)pRlmz!acOz|E;lM?R=)Ch7fa2d@|b?1FMdO& zT6#slo--W(s?Gcpuj}77;0Bk0&kR()FXfeA;vYWBjvj<%)rWW)zW&Lqjdw-Xx=N?O ztt{6+dS1)|I*8eG9lA-G>!e|B{q>7g+`mSL2i|#sxjMHxsd4iX->~Em{fPdV>*5o9 zw#%Ac+bI=Zt}?OkIQ5s@I_PCTz#B}wWq#(^{K&`rv~49D*xWyXJ($t|4!+hp?CMcS^f1B zZ}-pccx2|DN2Z_3Pp{fCbN89|*Wdk}>g@XMuO9!=ts7o_>Q7eR_Wq{(t~~J0j`ub_ z@%7a|+O*~Brp(Ny%-cJrH)UowJ#=~Xk8j`p^);6}FArZ^y?J`|&MQ0K&d%KTbJx~y ze&exkKK9FxPw#l>oz9sZ2WHkE_jh@~|S`H|K9`k^abzkTA}Bmd_3?;fAs z|ApBdr)Jily4-(l+9^=ehd6I4^Cge)7>B>^)Pf zbPDVG#_Hr5t?scS#JVo6o?4+#nU+m;eY@>fJEm3-FH2sc>A1A|QrFaSp2jX3nfBNI zEuW7KFRSld8mH&59r+UqXEbA;)vs^q+jpV&Q)` z*8TWbopdMU*T(!qQqgpaem7V@N5pR;^FEh;#_FOzW8(dcNN4m*aQdM%eFPRwzNlNj zNTfT)_zjI-sf`uIzvea0?`P{ttv(agk6r8ct#or7y|`Atzl;s?>zPObO6pZX z`OCefcJTNpVR&Pt0D1n_JiS|9_mQ1GtZVWSpFac6L^vVwpK9XNOiyTa4VD!sz^`ub8JSP11nqEnK zg@+o^3`xs~eUG+==;)SNGuJs(p12sDxaK-0$`jFDXFUCX@ZYantChFy8wcb1|Cjvj zR+W#&8~?af-74aGS~Mw|NT{r9MN|_NMFmk1ofKUZ(SBA0AD=xG~X)2)pTL4DHAt6=4tU^ji<(k%xU;X-~KD()42X!HeyT z8xo z<$|u`B65&884rAD6-ROb?3@!|K#U!4=Up@Znqf#A^96gb4Oz(eFj%%~6MP>gM~!D1 zOL7`p$s_wrog8Qt!;*ME>Kd__ez2sUEBS~X<4KMa6Z!^3*v_L}`spJV$P31BfTADX z#(DdM+Tep9dGJv`AX?0}dlSC0uGq$PsWIT+DyEC+CP(oLo%n=)=jmSs3+!XQrSs#I z>gd8AbOaGNdCsA`RiBXaQS)S>`PXPmuXHrVc&FO-igt^blf;;{gLMLa)=9_Re$kI_ z$f6HoEEu)wFEUKTj4~LY0|EoOKYY|1{iF^18e>RKST`~t z{9$|$@tmnFvR#znZ`IGgN?fsJA=~hW{j8a7^m&}^UJB3j-p0JAj(*~g3@|w$q8**! zk8fa3KiIa4$zpyri|vQ;#W5z%TSd&*<05P(H@LQHC;a$`z07Z~tIceL2aG<-I!nCB zH?YK4>coq>RU`uSklsqS1v(qRR6TDdE8^QisNbVdav+3i=VF`gZ1J~jMx>xjbqE9oHoKZ@mR`5G1KF){a9r?(4$7jm_Q)Tw4AmV-s z9@Ylhkk6Tta{y)fkQ0(J?eG#;?xm>zUEk9=+khcCY`j{D!LeiUO6C*!#ZKCR$+ za7A0&F3}#*KGE-sg2sMY=ku_9Cx=?WZa{pTk-&;GEN4-2F^E2`_^}q^dn@>PUuQpI z{(>Rv>8Bk-_GmC^hM}K}pGvUuIW#17pM}U_+Q694MTiS$F0YwEW$)uY2QY@%!5>7- z1)sa9N3S*ON{p|U?#99dZ=Sh5T*5UE`uNW5d6sG z{1-&7Q?`%JAKQda$T2VSjIZ$=P+R)B8PCs~VSG^SV0ui{>RA!}=r(4=l{RAmK55&% zx4}<5;b%Ot=o2vx3@GD=@u3}lWYL!q1(7jiewl}MWWr0?wlLoDrw^S$gbwU-EU}F~ z^mE0ZAc7Cu%x8PjpUuISmQ5M`$Y>U)pmuaPXP6%@gG~^f5~VSw4I6C_b;{U_P4>%i zu+6q3hzC9H$3`fP4f4ooWE$5Vm4nD*(L=6U4!WTrVk|P~qs?O-FWQNj^MU(x>@*)^ zu!lBmLl*NdhA8wd`0+g}@|@nPGV}O|2>Iw|EV*Ny*w^Yj20PCg z^dkq|=)_-az^6VDdeG_h5MJ~<4t~}GFSev}*KP2B)X!MKYB8U&nH(h^_>~bEH}Jw2 z>~tQ$6OuOM;4@=rhXJx*(dqUVuj8R<3DziKVX0#_>&O@5&7gb2A_XUL@dz(CX7QDxGi0I6({U9;g>PPzH|=(b;Zm9f*< zU^{i%@e_iV_8W*DY%KP5if<(T6ew!J7K z9`w7-_MB83d4^ubp&KlNXrG9}{f^6am7yRyCPEjvfLz<+9HkHa9=jNS5MMJaa%v}j*vvI2 z3L@i4nb=adpS0mW_Hh0&FESkKpt5t9E4I;w4#t5cIY8O#d{EhI9loXe8uK@&eiQgG zH^2e;&c(+0(yKn?2N8VsnL6c#u%;jV@L;!fhc@`p%~ny_(2_Pf(XC8E>O3gA(e?gZHwWJ zeCuz9H}Z)QgkHyzcE(b7%z9J~qO=_9*aE-f${1pYOvc*JpfWPC+j+?P-OMM(y4{$z zx<-4PG0G;g(21SknYM#EcES(-@Z0Y`l^KT(l)=c@IA+MAk1@6t8<2@?@*mlac%la^ zXa_H3Zx^N4XU4HU^@=?2(2sn^Wkf;5cQMr2YB$rX9Xrta~`qE0*g zmhU#?uwLRX{fxs;?DAOJ7m~{!3_o)4oAH#97epsT^Ei~)UVY_JDgjTJG1mzYvUXS$vqpH-h@ms8n<&Ssdx z`*@0i${*(%*yw*Vea54a7hjB#V*@tEyj$gr2${JQ+5fF-W36b+nZJwcf%6kA!3XRp zlShlK1<$GhL#K}1fGYs4go4vCmw$b+9UdgwRaN0N4I2_n`?_-q?(%qh!32Yr?m zk}`Vk}CV%3y^I<7vO> zvkuk+$HQZhO&PvMT*_*5ZlD{xkPptZZx=Q5X(>5}G!EIsq!G)E+JcCF*5Pv^>_aBH zvBP7=@(FH7D{~4<^Ks*yKb(M1Bx6+K_<`&%IXfZ_ta}AWG|S-XfcJ=Mntm zB;@@WyW#P=LLYqOY!EfdrJY=XXGnyuAVL>9%ATM!);VUOqXE|t@9u|9Y>%i@FAL+r9I$VF!mp%)qSeUy7F?6sZ9p=@2)-OTT9 zwQm#IANV20(%vHqNx9iQz}BQMqw7L*;Gp`94Y`19d<`P!g3n;!O}lZ!X3CC*?SYTD z6KBhAc6My$bI_QaXd%DpU(8p=!h;R?;xhI)uJlnRKkOqpkr#ol^XM6skzxLjl#vB5 z?Lp+6WGp`OY$L5Jt^1Rn1CGI|#1>+M{vc`=1KRKrELeAXMYK`JM`9F2>D-`?Hsj*^ zLAM!q<_>rmC+nwrM_`i{+(jbDxRpf>D<2e~1+!i(?D zV|??PKp(mx`{J{t=Q}xJe1po2!Dq$<5pwYz9q`&l+Kgi}?CB%#;3GyZ<9`r+S!5pS z*kj$)(Tgs|2N8W-7qSPR(|#~6o!7|1FWSK(jj!!!v^9v2`G9|vv0))RZC_42&1|GS zh&=a@NgQpn@kS1|5hpNX{-

    en*pb`|(lskiTvFgx8K{_;TK2O(tGoO0F7HV?-UE zjA)_#W zE#_yB_=4z^h_UItADPI(Z)8!X4S7L?KCaY>5&euu4t>}dMEFCUvCJpdP@fTqx%c(7 zZe&;wSL(>&id@SJNgFm&h8J9@gExG{C5WhlD`n;(>jH#c+U;Yj&l`*larC^$KWsD} z$fS-P@Hwu;tWVT9je)vR||_7GEd_5jZoJIx>TZSkQ(oTpc@b3?l4f|ALTB92gJ2 zL3COK4-`a}?K*R0DclZ<=cMSEsMY*#%tP#Pj^tGakF+h+u^-&P7JmGttxtr#U_cq) zk->P{;ipU=;~4|5V+22Z$OKn-!IAciD2N*M)0W26Jjh`@`mqlgwwE;p+MZC*^^^!c z>~c(xsciem0c6sTT+3)Sj`8S4Ur5Txp-ddnvyj}M^|(1Vz#KeW#~-kvjriI}uHcmw zHOBObqzxYCGX2CUU1#ipq-`P0h$D6|&hbMZ^@YY{)E7kf!Q6(=v1OcdGpOu!H7%cZ z_=z)PgNPi#4#twF$b|W958lSl zomm&)WzRxBva#7Xk~2ZXeA_1S8i9?}Z8K$T#V6uGojKS{Co&vg^oOL5Ztyd%)ah>) zUt@r+^n)K`vAdbh#rV55W-%P>BRuFqhx3N~#0GF05aAc`f-fV&mRyRcLt8~)dRzpS z%vXb$zMzpD~SlT&wsJL+o}gVkd3rCclxJwx>}K{ER0K#DH=5NSQf?49A7oQl`&3 zK8`(Mdm^vV59-*0-o|;8QCkpsj$;pX{KE(A#CBxh2Qu*0IgQRBIweZ$rHwqNjXXsz za=5bgczm;Q&Sz{+>$eX}xp*59$)8VP!1w6 zxBj$!#^sRuiOn%l5Lq@pQ)ex*eq_^@mP6h67*}khJWPY z_+mS#J3rxt@Za|m_-g$glUE!1j0OF~A&4x?_Sr6UGLA9mfIt2GmH+wLV!Z6L_yr$h zi3xcLAs2n%1K)8GK42I8eWInt7_$NK+Rvae7$OTCkU<&yolDe-)48OLcsN&(gKdlp zNttU-WSp_FTa*#yL_vg4$akF30X9Lj(3x)`UFZgLWEy*Ha(rmRH*}$sc47z*zSvLt zu_K6bB61hr^!T(NJ?aZ0=ddwBF1{N}c#wl0>~Idy)`%PS7=Oo~F+tRrcgD{4GnO&P zP3yB=T#b{*V5@BkDmThRr!ie<489s8^DGoY=dv+qrV~GmA+oa~_?{Gz|CBx6al~(U z?dvI(u?bn^O%Qp$!w1oZ9LJnkARj!ClNb5fEi#ZtE>mWFx^8S43r`R=#_OcokZ+99 z3x5!yn|9)cFW61p@dVd&t}qVUgQ!uDWAFThCoSKx!cN+=q98gZLKbE0#6I)~5&lxQ zZ+Vr22s>#vrr2rQ(UbO(xkDTJ;Im%K!XNrQKB&xi{Gn_-{ z&%T7D+-h7N5p-0 zjfW>qV1cjXp>r|424OR{6F+!+M9t)aXR~(J6y&mhG8c?xP}#n-#vr?2L_hk#hk0PT zz|HzYQa+_CGQF7I81iT;$w|9^}%7Ui;{L2x?1H8hdo2%kgBLrc9gj z0(*~&kWHWagUZ;5KKL8g=Ed~%h(Cysy*0UJbZv(HVse_<>wHS*I&lCe`nX!ZeZklC zoIodh^dpBD4~X#9>%8s7W~iCow0zGocylT8c;u(!jQ%qsu=V$0g39ERF~=|L!QOOE zVoO?<=LYuJCf~C#ukk;K(1kq4qsL{h3)s3(L@CFgK;urey9s95u8_?Aw3L^YNSK5EtvB~jE z#}fbOM?P0%Q6>)9h>jp~Jgg5MbWryd+kyxgX@Bi2G8jiahEYuoITV`Q5a z(qlV}k@>)YITA$3M4xq}ZL{C-W<`$efXdDMYDJ&%BL>K~9r$a1=))fB?)O{;qaZSt z=!BYKkDozgzb&6SWn_Vk$AW`nvXDOFY(E)~t+X|ZKk~>i2)XDnzSuw=8yRc-xgrxj zFb*Q*r2B2V*FWr_zef~AV2KQL1QB{X9$DBz-T2TJL}_`xKeu1lWBiB-W$Rfe2FOKs zWB&O0spVj&d2L(z*=(zP_=MlY6hbE0;7j8(+-5m*G#P`>=)@LdZJU?U;W_eUjRjxq z2_nZG+0?PkzB&%@BHuWJOM0FeZ!l%7bI3B;e-`s0s2@8Ri+*%Lt?pA`iEig+R%P0- z7kOZowwXGMifM}F^+P2K07z) zrw`k)1ABuAdl`o;uJ+q|Ye?EX$I|-2vCq?8TI1&D^*$#9w z5AfM>0+&7!Job$;y!Z`H=yv?zbxfVhZiD~hI2+k+`-{EgiR|#P#TRtpPY|J- zKFahtpRJd6kEhHy%XO?Rn|9|vywscJC4Jt1(T^N-2NCj_i>@OZ9_(@(xkedY@`5sC zKiuAEC$`aMd$TGB(Z?}I({n8+nI`;fw#E=A^2ZcZUJOrcMV99XKHz7!XqyQA#21{L zqhNw=`a*K`xfVX;!HZ0I(|qo8Jh=}5JJwOk^izk@;~YQdH?hJl#?Z#NG(WnDFTUG< z#|S=r%ZR|M<1gDIKmPcq@%4Lu5nrE9uD_~w_;M+t4xJR)7xZ~91eLKXUAGTlLwgY6 zHyAONe#RKLpfY)Ae)!M@_QcILcn-I+PB7-;rZf z%b+s2&<2J<x-DKMfBd=|QY zfghd^n+L{+90(%fO1vo}E1e5V>1Pb_Lk2d(@AVNMX=~iCk0yNP-=(^9g}ew!9hqQ* zy_G;& zfHgR=PB8zeV=wln_a|f_hd8l*!_y-QqJ_pF4;|P?zB+cu+9m=Y$JFbU=WTj@vww`S z-)>7|OwQPDJ&5Fxvj&)01$_UsU0^FyKs zMD*d0sj=SZ599ZV(&If3A5=TzsY4Ho7!S4|How3MUzdu{)8YY3ay*Fe&3?I#Z)tn5 zaiMr~jzc$iGuK`afit#@CRcd+M2&oo<3aTW5#yGMeVPv)$ix@pzL1?CHI9qPBd+8y zSH}@7!HzoZ`$fb)ZQmyq+kWXu&pqr|D7K9@1@Wc{ds~giVew9g*!zO$i=tyGa-19I z>v8eqMO6`T52DYDoJ-8*G;Z{#i9W}bxkN65yXPj?#`;q7$kj6<=dW`bJ?Xd-Tk8X3 z>f{3Yn8y%x=YBJpXGS(mwS!qRUszl46W#P% z4t614-Yu8?^1>r4DkaQuZZY}*O(&%xo(3Wf2sTIh)tHw zIQo!BKlag28$66p$ILM%w(w>|j@dIRmqnHxk}~!nhxQ<{pU6NLW1JH~W!s5u?1}hI zOo9kI8AF+V{6`M?K-q27g9v{5DWe}-;0q$;pJ$hik*Y5uJ0L3B)HJIPsOfD`h2L_uV^*k)gB2Xf(YJG_)>gU3D?AKPcl z;7`Yyany~&DV33fO<)*Aj+1%dH;%Roetai}j!`SIah$NrjDZ(9$n}~KR7O91#veUkVLQ@te3rLc(SF*|f$i{yB))jhK3lwYpF4)tFDqUWu>d6R`(lax^3Idg9OP95-SD zw&VoyB8H#TdkH5cn_M7<*hQJRqZ10ECq>vpA8odmGINLga*n~nK9IKel&8do zZGHHOPo8V&r;bi=07v*4Pg|b|9~yT* z!-gQDOdmYh38q1W40y1QoB?0>h!JfNzPLZAj4b4!2RZiHbKr>DkcpfivTg7gSK84* z8?w+19zCKUYTOrSgAY4=HeoDdyzU!k{G%L1ww*F|gP;3yNn0Z>vGJxm8|MPbW~*dTz84!4Ij}ZUl37uOg&eY%45bc1{v@o4>{-z$(1_3I9Hup*kJykGJYFh zWYLCf@`N&djk3B^ZO&`3qMdv0-3euMg^X2DIZdAT>1Y1P!470K+J-Fr$fd}B9a9^& zrele1_-b6hi+lhRunx&JuPZ)c5Bezw5#tz786Ntbr8Al&u>Bm0$X$bKw@0b}8X&pfs-sEv4F zD?YR!tJQm-v#rd@qukB(y_L|=~rDKC!Y_cxL&+#_~ zzT%THKAMd4m|dznPS!=N@X@&kZxEqxp*@cN##~A3ryu!T@x}QB_TWaHe*5XML2XOT zp}${i;8e zKke`a5%wYze%pXN#?g*n#65_XT4$Iy-kW_dk9>6DCvuUAe)Og9<>7CI7e2;KC zJP(n1T4a4(;bn|%T57y~IHED&iR>U^9QIo#{!pe3KCpr(h>SPBGv0W6JUo=mPd*_J zUT_E^WFwa{IY&R(QFi{&2A}0G6{8;U22pw)qHg)lV`FBy=4${6|)Xb-)GD_5_jV4LbZx1l!%;IA6#eVvQ{94I;fCsiXhv{#oe<2z0r>Su)ea?->KJ3LO=QdaH-7UgD;un@6WY~7kKV&!$ zT9L6-E+C)y5G!OmzscoBpUCSVvP{-H{IZSkW2a+?eYq4lX9v{g*f_q!d3se5ffMi3Euk9CfCEhB~yW6bBZ4IABujvykI;7y#-)hk-e zR{C0vG5Sqlg@0gx?sFn!(cTzuc)){p)>_J*JLJQMwKt9bs%INj{MNc|sa;kg0dErMEamWw-X+sb=4<{>utfIMV- zZ)4u&QbZkWnw=km+IvOVP8saL7{7=CcrAu~GhMU|B;)NXzIkr?Odr&?6n@TkFm()( z1$Op3B=vO8v>HFp0px)Zcv21`=Ne_&((2FH|-M`x4NEq zt+h?q{Ik4gEao%$Wq*iSMnwKVen!Mx`v2K`7wEW-^GvWCKohUV`wcXJi#Hm?g8&GS z;2R>rC-?+OJxB^@q8mViAVA)3NFvp+buo(;AY#hUOGt&>!iHd=5(ZoaO_)VT8<%3I%PjnB4NU_ z-5Hno8J9dVjd_IQlX^qGB`j%qT0LPIGYyor#6$e7Q|b`$GS2=$n#m{OS)OSfaD*YP z3{(EZ!SYNeJj2Y3r~gPS&sTE`Asxm5sv~#94tdv(x<>lxezaTqHIYc z!?G<}5mw+RXIVdSl26vBz%ftCh`1#jWyU&X8p|K*eKX1e5+yfIFEd{Tz8&mBkD zJkCkJIlizC#-%Jt6M0tP%(Th4}R05jVqf-K!wHnye%p z#Kn53OA4Hsc8T{G(xrT)?#0t6c_1#SH%z0<6gc8wTS}f}{jv_JSCkta>6SWgrcc5V zw*u#iJY}7f3(K;MS*HlcI?0F3H_tsINSBUnOxb?cbpY#;@*sc2H)3+}Iz*bJuCN_g zhV=7EJd$?CCERC~A9-gxusnH`VY4i1kk0YcJZ^JcO&QB}A$?CfzRGz^(#$%4UFYHW zwrdBiloRejEL{MatC|1sPFC-p$~C-O(VWFEt- zeWN8jVOEnVWk7i)=>Kdf1QHR;*8nJUL#uB4MUchh={wEO})1G<&=SZ)XIbhB@hNb!J~GKaQytkGOU~Zi*2I7jljk8!88Sqw2%(gC)=3iNi+3S>bYFgF`ax9p9@aXNV?5y zI>J8!Ygp3iM+_L?9ZfE>ZpX3 zc+LEh4wl^u$2z23nh+*03Y;tQl<(Jsk^Plp9`gw+Wvn1f-dQi{n}#E91&(pq_a%Qa zuNip<;fRmr55om+aF)hsL0CUG*KVba2RQh}3kh9%uB6W@=`YmX7+OGi4{E>fIC~6$3X7Y zaIAB}k)A~IBCf~r!hCbx>~oYGWi9oAZOb}jJtGK9CuMOQX>3#3XXQGBe9{q@9B0^; zQn$$`>mzS0OUHbs6CcY-ePnwvU5TWb>mwZd17Rr#8CDQZq>F?zmw(cnLOi5xwKdw) z&N<|pe8~Dq=dWrF|EpMovaKlVME!z#O4&<&Q4sz`#!>1e^`5fgQ-PChEA@(PLOA9n zYG;4~X5GUP~1;-905@sDzk64a;GA?;$ngU0?G2>4})6?n>ahhpi8_2pz59^j= zjO-)qx1^o?5}xIm#`cvoGt71&4yhM}XP9|UqMvvv8^RNoxSVhb9C1pyFisj-KkH^4 z3LIhhH1ond!m%v#<+#Rj3fv?d^O>$h!W;`2CLP4Zax70=X8tGxrpx(=@aB0z&SS(O zc_$2AqOznziR7E{5T5i(JhCk5B0cSJvd=Py>tb1!kudTpVV_2J5}%Yi+em>s4kzVCzL-Y&k}p}0csnpY*S zq?>$@#>erXAfK{WO&50}Pu5AE%=~{E8lI+IA4kWN^k4STC-J%!JScFFq+885wB^{50CH@ zTd{xADR8oGwi)Fr$2ZDWfnz$;*uMxX!wSMu-(_3KKFB)R?sCjxT})#;NW2nO#^rn^ zX=A;TUWrS#HF>Oo`(>_6NGoZSbdgWa%WNOne&n+QjxeN~V->@MrT$1hFC)x+!csSg zmpIrSGL7)$k8#<~l&8eaa?E2{=950=o8bwQNVlalOL&%N8f7HggJJSZ94yat!ZXag)p#X7@=7?$i8!2aOjqDe zz_BdxvR#N*fg=q}XP8gMS)NZx2l-Oqh@12>EP0(qSoSR`6Q;2a1&+8}aLh~8&o?7o zfumfAn`KD{>tY$|H}e=*;E0RQ5x60^MD5Nz1&;WrYm;!~Hy)3qT|pl8%uK(mk8+S< zJ|+JQoBLQi{e+Wx+m5gTw-=6dupT~};H2!y7wJ*pnD_tJH6-Pcs7)yssheyo%9nDK zZL^v#$gz`pNWA8|v8CQBNSEsN}2rjs7hPnwu6`;Sa(MjF2# zv#ps&-6kI9b6udo?So@^iJ!34VW~?T?~cQ9oN~e`aBXm$?-+jC@~qoDwh}Mvpv`JoB#sz2YlN>`R2d0_j5no0@KGWiPV!B*^F`xaF zX{?7&wwr7t)+N)VZppY8dFHldI&qk3m3U-Z6DCnxwEu|C90eCvQGAu)!I}+p4rK6amEIcM@o zI@yk-jk-o1WBbZAxs)&aUm_Ux{m0GMl3tFVlr?d%4vz2a1FVyI5>Dn(uZWjV(m)u- zWf?xXMkTG(VKa`YNE&goJo^g6?32WC7LMucr{taZM@=rd9N8%zs#M2RR ztdo37T3Hv{nKG4a$hIduVc0Hm{vs^(h`bQTWjN*&mO8>T;vfw&jqsoKd&+8UDcfJl z(1|)^TgvYba*azKNCRmj-NgB;`i^oOxG4wLC-s7|m2vh%)-P#fm@=ij=?KU2?E7XK zk0EZBt%5l56P_|q;8>1r!MNm|X$qWN2Q!~#q<#@6b(C?b8wxE&$yH+>n1GY%vaz@1Lqt;8+jy=@dBD$u^U`G0riS zI3*p#m1uoVUWu3GC697GFxMgHT?KHm-KCyLI{B1sNO-oP0v9h+wv8Mc_abaA&vlKN z4k;JO2kDhz(ns3q`KPQYS0`Mex$$Y*|7pjq|B~j(r{SA=z_kVCNZu$zsTXoSlKqSL*dDTN*k0!O zs2_2*8Jz+buX9XWO>c>p`pUA@7pZ@8{xj2;7B9&RpxPy+X*LihvgWS z^(Y8)tRr1aXL&y5SW393)eYjHY*>~wP_~j^@<%zE>0?~hMY;&j@=WW1BM)pBhDir; zu)LHH!^~s*J&u0jB|U^U&u6WOD{!mLX&gI93+1iA$+3+zF;03&my{{f;@gIG5(o3h z8|x>%EJr>VmwXadfiu@jzL-WFq*K;?3}LgZ6~twm5r(+Tcqs#^*L4UhaEWm2MEW4y zJ~#=_=MWt6(J62)xOm>FYfr-Yw7T^F)i~1znkhH(LU}sj6gc^gBIQqhnJ#6_cB5lD za`VpR$f8&1(u^*0w?K_d`lXcCuKqyj#;vgOWlH_mwo_G{E!ccbP zU4fIbV!o7txqk9!#=$sow8NSESqrOgu85 zymr7Hha(JijPS(AdMQV?+vDDe+mKIu5|;R+3}u@$jbWyf2kHdVNGsD>p6wBji}83J zW1O($V-k*SL7YxF*%oyOD{znFOTrETj=W1Nv(Ce2-Bo~(^+~yNd|*Cl zqJFWzD{!)HC|~M=S^f-D#x6KXyDWDCX)McjkZrUNVc9oix_lQS9;V5*CT_wiaKvpM zLu6gVOFfscq=U3mU!~5~ApE3uR{+C$Nds|`4m#G)bk$(V1z# zcY4;Nob|ZQ`&t!myQf`oO-;!Rm)|=x?Tgmv^Gtb0{T??F`6s+S)aSXNOnCi>c^<7i zMyh%pEU4?O@ZL*;N9}SZt2)D-NL{gcr`?`c-m$6=kaI}AfHY^ON+GI$LLjQ8dV}Tv zn9)CCnG`U4PQAnU9_IWf!gR4@f%;{J{|{#UExrGf-goGIMDGm2|1XBV$k4O&K17KX zJ5dgU7VoIXw~{SlQ#0ek7u1=vzLhc&ADvZI&$NG-B8!3=S?cWcG^GDUPc!Or`&R5{UH;LD;hC{9pU1yaY{bsbxV>Xuk6TvZD*%DA=}k|STC-9*Jnr!i z1LN?y;YgzzZFjkOk7wGWipW9lE8gk$)gb?eO!V4ph~hQN{Vf)I(cKCqSkbCiwBF6l ze>3ZitYB_~p4*@`ZoZkXC`{ z{?f`f18)Qt_TPBro1cIG^LI-21WN|>lEGWYw4=wCONO+Q!+Oc^yggL2Y3a0HvyT|} zzKF{Hpym&bE~aW-yY%K=TJ0`9ZQx!`rB>aeZ8)Ok9MRH_s2su62UM27r}ua8M%N%s z{-q$04ENyg;k{`ISOY1OkYfCwALWd{NtTHFdpAhlfDW}vI!<5kQPV}WQ-*bS)3`C zzY`rK_IO|NaCqPVbD{0P!$V0cGrSn6MrSZ4wJNS@xAO9YM+{!@E{Va!_2^L2iqVf_ z4~s`@I_vTImFb!3wlVLt*EfN2Nep9;3~Z5+(-^fp%CzSd422jTMW-+gQh&wv4b!WE z@SHYvFIvSIgucbp`}8>8U}zEp%)?rt{*3t?QC1%A^RW>mk9D(~Mh6*VeEJbfa**<& z6PkOu(YqT&pOr(1U~+hDMjaN|qMTgrN!Zn&RO~MM{eO*WU$cZAmfCe%*HEzQq~3M% z&ayATOT3N`U1Rd?V zqh0G5&@9g_JDz7^Rc)|ponEz0>)fO5dttfil$KTzs;&!Gck0!hS{Hi#i_6u+TACx2 zqiD70b_cYa16tYv(d}09IHFC@o;OC+^Df`H(Oi>WqpKKQ?*>GNt_O8=Tlw#|lE#wQ zAugja=5hlm0lPbiE5<<9Wy~aj?8|A$1K)Egen1$1lfV)G7f5p_yHnn?y&LI@fgE?r ztbsKTSo0=HLEIl_dE+lpw~co6HKL(&QlL7Og*5jA0BC zj{ghf2Z|-+oOKnL0uxN~Dlmm67~3i^MJAXuNIN-T3#5&uV9-pz{NG21vJ)5FF2Bbo zhRwLq%sZwubC{f&p1P!X$DD*wJ&Fr%+Ve7o*Yg*qJY1ATmllA)ig3d95}+`kj*FEc z2V7=MN9zP0C9;@NqIE`*#Ky%#VmK5_xZ}>Gl@!-2UaVfuc{~@~-t#_HjGAI;$Dz}i zY7Ce?96H7LDTdAsjK;>#5@Y-vLCYAkY7j+@N%mEyagtSkNH0WB46OeTLt?!aTgd&G zX)Ewns@-0+=sw##Ty#Qi}D_Jr{ zOj0Wak?2DUzLH3y*N1{w4MyuJ5Tm=yHCB?o5-??2vzdd&2wyxrD>NXAM~ryB%Z-l= z=?URJ<{188LB<%vyDV!5t=gesZNz;LG)H_yC(X1RRl%`v@vP){42&%TFj$9An^d$4?`UcU3Y1K&IN;lbtdW7>&R zdig0m?bLiW7H;V!nq#w8v3cnwy?g*`t@-RvGAx)*`mXmacsWHh?7ii>Q-O6?>D|)G zx6-etFKoV%t<`S7dGt={p82f1SY~>!dlwyCo;4rUo_+346{eYryAkT!wrbm7)LMr% z&)A(>tR<^iVDkFpV&#(aPSviPNA;>boPY{TgN2QHVWZZxLF*e_E<8A&9x5&m7B}m~ z&5M=V#ska6gY%i8l8Ru7Q!jC9Ex^lVBo>er)xnB3y`oKP$Kv#bG=uZF#}H)CP>E|I$4|`Js;_% z3DOG!*2(fm(=p>Gm0M0@7?>-ZD+&|_@-H*Y(ckeX^kmheY3}56%@|2aP(pb$ce3`; zw7HV$`A>mAMc}VMiH1jUy&FlIYe&hb+%5cts_ShbmiD;lGak;=6xjLO&gMPE)(UNnOfl4*gzfT}u&??+T>7H}C3j)pv)oI3i7^ybZ zyozkmYYIM7-7(3wm}+?%{t}D{Pvmc{sg6WrPO&@fAsK#_I$BM2{Hpk9Gu5$5iv;ol zMI86WlHIwcmN_nUA@*EFYO$7S543+~tyR!po{iNdLxD29M3pzjuvwrNfwlSAy!6)0v%&kuO+bN53T==b#5J@+;+s*{h`%et=j~T4AI+;N7Y8IqC@hI$=b=r=c z$wWDVvQJY-ZlD&pxbYVE7vZuNb6a zV1bfA@q1tRCi?=UV2JxwU~c3D-pqw^j1-g=4Eoq}^Rf++tK0U&x}P z-3C9uyNExGXHki$WxzBib7D`d&>WOuV1ulaDV*u2xq1_Mlb?^l%Mjor-&?WzinIsb z*esJ@kPxva{R+RZ-3|59BGR%>yExQG8BcFNxP?N4E zzrNZG(k!(rQ1Dwx=22I2IMl`@LCOv2iffMV$PFd-46ZFn~ zcS;Pi3?&?a8~nd5^U+IMFw$2Cl+V|Hz5(NSEk?yvdV%ERJ>}g@qx_J?f8|k3!181q zHSeZL9D!zhv8{D|3ksMaKi@^Z&Ed0c^xL5_GluP_bJzg$x_t`vXcX+@dZv8J%U=Hk zzQ#_urpISp;~pcKJM|MDms^?jG1$_=PmFT6%Iz7&7Vz|VOAB|&qLq%irm@Y168Pdv z{C?~xwFy{{irqEF{4;HQV$bY?$1^$+i}N$`OI{!L^krIvy!MPJ{(WQE8*7qZqE+m$ z`Mu{o%B7jvCVW74dtV}@-f0*QJVRoKgi%7P^0Eg;2KW|z-h(;-j2QUhC+4x4si~Ql zS?Vk{!W5Vv_%}ssoACQD_%?NPOw5jt17yrK>S-UH=^$js#LUYibKKa!_9)FB@H6U# zdBP=u*eom`_6EV0)5OU0AcDdYWL=mQh7vGRi0r>db|958b>_Ul#!dg1yzW`ol*}?3 zg)EHlBRen*`&HMp&&!&IjUCJpWo&j@R2^lhc@>`AGo!u^fdI{h@58>1^Dcai9-VUe zd>-U*XE4Gm@Yk6k+vC3iuS$-W*-0%j5*3Um&NB<#f-DT7|0KT*B?=yuaSzYF#i zWaL!Ba%b8VmM4G&_Aw$FLUF@t<|TG5>ct}nM$SZ=nUwNRbVT$9VXt8*<^|OQ0}^V9 zR3)IN9<9>*T^BA)!O}y)rj5rnI$;uwFtB-8I?}{vIBMe4JTinm2b%rtj9C2$`8?Vz zkBBE>xlbjZcnpsbklzElB5Y<+5V595YtLMO%FWD9VFwF*Jj`tjkY+7o-f^Y*)X3*z zsivN>Q{<1FSw$aXWoVHAOtZ%RKdlAicnU4OVDuW*ds$cqP%%ib9E=t8sEHZ(!$kTn zLE+rP;}>Sxr_RpIOeIpzXQi2g$?Ph!H!rGqdBO{$EFq3rSY=Hq=UuNvI+@Zu?eVyw zA)wXu(u~&)dR*?QnbC6`RynmiqLw4OvA1<;Xu_qU+%A{j#o=IT$}=@0Y%X?T_ihNY zgIjsQbL_A($B|PfZ-L5I0M`+bU6^*Duvcnt+VZ$b; zHqX}M>MX!X*rykrckJOho1%CO@N3hlzKJPg{ zqh5+|3Ny*+8NcG2y>MYhBY|T%2M$Z|8kJmRk z3!_cUCosIM>+adOu1jf&p*eC)8AlDqo^y*~ROND`A{qx^K_;xGuy{jjVr8Z(n81C) zu+uOiK+#JcKZXV0%P=f(x2ybwp#B5BQF{E!BX<9t$txLS=+wh6xu#}4>Yp(EKhgV- z^n@J%4L8*Wc*oVRK|U&951kpG-VzhWSF0IUIdjwz)+em-eo?yt^(0WWuVfFao*4{L z>hLHgV2?B1Fg_4wS)vMIh9K+?PLe}mMM}E^l@3t90 zN(v1$)FiU@1A?w`d;Dl0^=)R_#-?Umep(LuySvmc66k-S_cttlkTjfS=vz$VXCuRW z_Q) zihX+6GvkAi3}*|&{Fyd2D;dU8-H$h`l?<#ABCj^;hon^~ah&Q#bvmjCrcvQ&Xy~|7Op1r4aiV-%@Tn^(3JV+#ymG!44Y`tz_X5KZJ8o!LN#i(*H=0*g z3b|&AOx{?L8LucSSrKhDqP|V2L9Qk~{ZrWMsHcJBvSUxYX|*84u+w+Kpu+b7J{Q0w z2YsW|87$ePmu!LsNl9}w=x7T%w(GE)fu&^ix?uHyUJd&ZM+nfR8}!l*^I7I#ZFjKt zfL;sp$m&pGL$I(zFYJKfN?A*=tWPiNo6j}}iyDJPoqAE{e1;j;RLQ-T?yq;e)3H>$ z)Cv0*J*^3*oeQa{9k_TA3x3zb#ARdKx{Sk|ML z^<3E>%F6rli&tI@X4UIi^;+}Z+gW=75iIN0%et4#dV*!o=w;750=D^f*5)XpUcIdM z%Km#2?|Qv#{c>4vu&iG%>!05rs;t-2%0rd4@WXaX=T>dq-m3w_CTFqcc1i0k*S!61 zX~nhvYZn)`=+zy|rR#3=>7`p>DFmyceb@Kh&C37s3s+vaR`y;GZPD*!_5O+N+nFC^ z-aMn7cu^mC@y_^EaQvb^e(}ymRkQm-xp|-1k}ETQzQ&T7b)|Ox`CwM1o>jS=Q588tQvu`J9FP_!XD(|nc*y|SjUw!rMSA$Ihx0?n&Iyt`J(Au}_ zH9LYeyY!k}H&5TGIi{VzsM)K2y7%-|yH?q*=XL~hyY<}e8;9?}g8%GTIN6d_8_u@u zu)=6;`?J>uZ#y>J4q}wVp0E;GS>kPK;(pz`kd|o^9f_B=o+&YGguhe|y=t9~;$wJz-c0J806tYz> zY+WvF4;HT13)e3f_Rgon6s)@bt#jAUEpEDTNo(o<%c37te7{0FGZs8^UO#jGP8E!g zD?$xU_+LSTUstcegsk>%amAaHZ%i(_qIeId9^t68TwC0%(dS-Rc?49D5 z<}-0b0Gw>TzIid@#y+iS+jl+RoBVK6d;VeEMkciR10+FF3Mb$$K7I|qbRG<%()Tua{IwnO^1LpT)C25~sS zkJ9kg6Q|+dn%1|RS#Eeyv)6_ywq9Ewtk|koY}K|M*DE~Qb8h(agFkgBy5kx2AjdOH z$8S5HnLmi?V9s5!Q?J+=%B>9LIzn|#U)}un=3rgFUe}M#;Miq-U`gTOkNX*x+zJ?T zhjL3%s<_Km#7X1%C8Sk$W*^)BuDOWO~!zMrMNI39d)T7Pj`E9zY? znwj7INt&gs;;pRfS;5jyy|nX2-K~5hcri*w*KIKho$owYbducnA@o5!VYrlw_M-JyLs^DxOU{|hv#k{)V3Yf zn~p8#4ux{dAJ~#Rvo(7g>h0_auG_1x+Z)R5ys>F%?m=>rk&|H=v>ver56tQZW<%9& zp{A{&mYt!lArKPIMBYmvVa*^(*sIxbz6Lbx4d+{STlZUo10(vt2q{J(M-xj|I$3)C zv!R+!;sATdHP}OLbz8U^C0#(7yPGJVncsKy)rCQ=>zQ!7CD#$msn&C__yIW9xZM|00d8eQ&)VnFzyHD@k zcdJ!WTBox%h6iYphaZ=9Ro6YA;> zb{*5Zj*;~G4P*ukfNnGeTE-x~z|uVg$}_ql(T;GjrLiU0a9D3R9Lntud!}>xk+vzv-Fi^iPSifGcU$6D-UasHs zNr}BQKWwq*<$vO^l=j4z#b8ytA-+gnI*X*|<)cvwD>b{ru;PvEB4NE}vG6Pb;}3ol zR#(rw1 zJB8TXHo32=w)j&8DyFXa%_u}7``%qq`%GCsto|aDpmeHC1yznFfxJp^9{JDfyz${FtLh^2G+ zTt%SVopWv%-n7iEoGbDChSgsqshO;mq1ZD}?pI`NvR;N_Pf(D+9vPO5copWKuv2v! zVY3fwjf5ownbDG&?)&>Q#4^fZn?O4D$+iTz ztx`V1Uc7ov2~;QA^#)}L>X&6aa25YKZv$yoxkVlaLaLRuFhQ)sKe-Y)TE`o5=ZPA z036%X1eM4pvI1IH!|!j2b?@<-{$BCBDMpR3LM?f(RMN=0Y12X*ze#>Ii2Dmv3roN{ zVewb*E(_FypR_=YJ4aB06j|Dx4hzA00oM>{NM!x(&Twb^R#KoQ(}L1yX~qoOkVHCW z;%8eNQHUm%0eUXJyYTNz?N{0-`;D;Ke>W2OQb){IJP@7B+$CbH+2S9NWhAFk!**HD zpf}Go3j03jD0y&apk*2<56RD!_6Vwr@I_2Ec=Ahq*wc6Ffs&dw-U*RXc1vK=B8y< zgx*9}bMC0kIm^aca;{}MA2cPf-+qXumOw;yfeKUEwXlS0iPBOorOERiI6Hb&QXG4l zablhTy^}++Tp5yW4(pv-H3OD5HR1$`4HiB*mrEc`*xtxmMH&jqy62iq(o58Lt$`-= zD9Sq`Eu6Mo^Mz{I?wpYI$DXike>N7AAxWQXG1!egZq#o@?|M#_jXft%#lkWaXf=A8 z39~(+&8`(1)+|Rl)Nh&Oh0Sq)frdaPa-MSiASL;pLykN+n`Og_q*Bg^~E;H$D^x2VVPQh)sYe?G~s|9v%Bh3;efrZniOcA zwg%cjQ?{x;J;!RdpC8=CAFL@G64?%8q-cxEqu2yr1o$yoI`$;Iy8u>!k@fRj(X5~r&!^zC%v47SsF{>B#GViFSu$N3S0aH$@WUkn4zUWb z1`1@q$}!HQI|7c$nOHqCB>NCXaEumMdFB5iD=%nh%IklIew>Sbd{NdBd&=6Z7Snr; z-K|Jk)xB7mC9n^ks4jHnK*X z*pJ5EHEs&R^&FRIk%yDoIO`rY5c9Pw{Ssh2x}lI_S{ zf3m7mp315YLlw5GJv3{526jF}k?2UP(lT>_W;w2@mIP`h;gp%Plg33zFc+03cCx=1 zxZ}*jqI>J@iku&4NhoZ_c#Fsd8X(6E%w-?+PpC7q;}gn=B)A>6bIqb0t%se4At5c% zBml>3SchD|m2u*NIS#+B=}Rz?Rsp8c{+IT<7_Va{S*%T1B*QR4m>@$ehE?)zns-FZ zlAj=(;~+vH!Dvr2W?^C+n@idiSalgw7^pBt@>Uq`!qyw6H!fm@}*pe6?p_e<*SAX-to>EE^W2K>$Zo&v6x| zejfKh+Ce-?HORhERO*3&(yRwG9*f9d*jLgd4RKh!d)(quE|{CbxXeIfR;$%$6^a1c z6Y6n{-s4m&rc$+^hVB>|LA#i-!A?{r21TooEDFQ!6sHEndco(LJumDbxdITHiH`O# z1F`yk6=cU`_{*bMG|6YN!u4Ew88&UO@f(L!ru{sF@)-?sA5vGUtjR!EtkQnv2Dyn$ zY!eu)u4awy{ohe`CEGXUMi66Wl z@XOQzi-NdO?ciQqupJ{IV5Sl-@?+-G`i3 z^$r5gB(;h(Sf_maprt5=F<1?Gdi3%=$>gwnOKIN%lYLlAZ)@K|zF)bZZu_6GrRd}K z(cf79!)q3;U_$R7U+VvzJ=glR>W&*l!NLtl_y-?9Pya?qnf3Bki8Lm;N9>EmQL`Z- zGQ4iVoYgqm;_;2Z-c(p2{w~m|;MAfXrYCF^k1%wU-rq8pHo%ACjes+mQv>gEZ$di6 z6=g9)XAb7ELqy6}rBhf6?>;W>cU9jcw#^WvVM#5n5W{(1!`4{b6AO9&If0%5S*y40 z?^>g+o6FX{l7u$JM@rGQ(c`|6w#`S|TG+PgSBaTyqLqzS^{!;#Mzvw%{E?5_T#EAA zFWkh(uvhG>2D1NPv~k@jz5j)!{)PQtyLhAK8%Gyk{$V{D`GtRYz()RJahdg3&Z*iC z-qi0w)W0+)kCRCy#$?l&KIpl5QETq|R?X7U?^u_be%SmBlKw$mhq|5Cl|q~(5d8u+ z*TQm@D_^0GE9n!SSrs1)(BuCl)#2;#oZAiC;J=}Q{s{G`84R_M5z5OjeXe6Dkzw?o zvc#X$qg}CK2`wy?g>mw~Wm?oAS(p;9WYY{f`k^6WwEXXhpIe@43%w1DimQkJhS9V1 zgt_tC41E{giVX(_$6-`G%)>FWuz1DcGULk#hA`tU<3Ayfe@gGq=>33Yg+Vd9g}R^K zNuo*_Rc9`<u1;i;^~s)wlTcVc0zL4xiS^YCR}xg(ZoGFg?#;5NuM4* z&%2*JKK1*caV1CIupJTjN?{Z=E_;1hre-pXs~c(HypoT|)TLn@_=s9Os~zkYqJwiw zSou_cJ9ZdD-Wim5Q2**KzH@?Hm}1I<(6D z%lQX1`+-oVBbeE#XLf2mr}WHIA$#S5L$|lx%`LfR*BW|Z=)6>VC-<4VxdnQ`#7ze- zFVy=-g8k#S`^T3HChp`;{EWy>FXx}p>}T%rO4-eN)#gxDN2s_uRNfSFtPNGdYOFD& zbcf0s!g-eJEe|Z|)i9{6fH4m&p{1$xXSTP7@nPAz_Yc02e=B8vjoEVdKa0683}u_& znz=r+cy{rkR@JGeRm^8x-4n_zx@P^-HX-;E%lRiY`^md7sD%OQV#}Wle0%=~`)^$e z9v;>Y58tUCp@9~!H%x5Hd{3BMhbn7mex04ay4@)n;LVvgW)@tyIB|Xt>_2<g!Kx&yFmwcj@*{&0Y=Dx=?LTuy&(fyK$-T+Z7*FEY}VoJp?nooVB64?qFT7Ue|lW z|IJt5e|5QTr^e-!e zuqXT^+oIIJb?N%0MaOb=FS74e_rjPC_X!7UH|w>Vm-_YEZ8uZCm-%64aL0@Kju&CK zsKB<)0ZU$GgSG)z6Q2(5JFD+ItBtz#eV*m&F=Udux^6wE`)<#sZ$AJ2^Y>_t3hVMs zw9K?$w=X=qIIeBntGDmfj=m5)>e7$8?s%tzUZ3vu-6{2lZOKK&FqteX|0HuwFYZi- z(th6S-PmN-J!32M#CIiwli3^TQA#9yXf<8oL}4*Y~7-_ zZlT%h9_s^3QhE0Leza4~+Mu#dSJo{nT@c{ioP4dIZaJrZ;Uc?kSru2GHF|aTkIL3x z?fQYfcNgY*g|MH6X)gX(!5aKQ=9;zndT!HI`*rXAQdr-G z9F4|Z(l@#^NBgp)_v*mi#lSZ>^Y_3*u>O|Y{a|6pQiv);5v%dHP7>z8u= z!g{Ow)-!Nx^o@sg<*-(DBv|>JUiloY;47b7t{kCeRJwx>ukP?JJI-BA$BSwOnKgqR}Rf+pd`xd9PTHK+3 zr*s!Ae{)K-oH|%eziEHNe(iJ+tzFr+T-k9acO6V#-|D#Du~?&*x6U6xi)9rC?RC1n zE@*GYRr-q+H!i+YeaGI%93^P))9rmr&YLel74O(jAu(pYT@r7;9jb0#?7Th~PB*N$ zZNiEh?L#Z>k8(>tPJ^L!sGlly)H16>_QEd@UKxD-5X6vGs1-J8&P{jhn?t#E z#>tIf?tq><5X>Fbb4Rst^>(g`*3PRB=5Ew;H=?gm8#;7*N6_A{+xzd>Pl|&gp@+?B zyJ-?zQA2au#~acXWY8)$1BSGvmeS5xse~r9S*Zk0g$ZrG*@PC0k?0?dS@|0IfQP`| z#JhKF*EiACw~4O39ggA)BqcI~edtnmm{P_6$@fCMB_>HzmOu)wKu?z60p@Hl%}svE z3d2g8{E9!A~C6AVJuW?7OO`XGqmbety21Bg3@Fq+n-i$;hDaQ5aG|Gb6N!k~(aS^6?V|K&5 zI4Y53_Zsey$G(*$GK8g>u&D(dkJ1MU5|}%}w3x5E_zNVv(^(In!kD&3BtPWEOqT(b zL1oSNxg3UjY*v4D%m%0 zznAG)7}PV@nO}Nv(ub?W`K){8Rl)Mjdimz1L2du3IUi+~i=WHr(s3H6dsnb~ zNbeq6b{wBSc(1G>SmxBraOe1@rCrN71(|)XxMV)_#}!TU2SSz2i<^UMx9C{%9pjR( za>x83{$5RvGt{~LJJy@qZyvh2UE6U??;MhA$GbSHcKV&uq1=jVFaA-_H#fb%>E^lM z?&tK~&*98jJI-%usLtL33AAqHYIg0u;MyU5?GTn$%WF^04_>RnYQuDLZ0Vd{@xras z@NjOdxK1w~SeSx$Gv#*i!2F(j?LEQv0lj^Icw2NkP9im5IS{V2IGV$XrDfy1T`OwP z(;7q09xR-6=bl?hw~{sI;H`_g^GGz)UK+IH1<`Ts#l_>x_O5yBy_^cX%ZURS&ZI+! zoGFL!=S+qtKI7pF9#tRTX_Iz~kTZ<{`~&!Ir`-q}K41>LW8Ljsvs=WS*t|knmG))o zIK2saoTpU0)LPW@)X>)vT1h+N@=pwU&w0dgc9kEP)!(5fJ|)r6OFd7I-(b{#PVX!9 zV4xG}CKf2$N(yhpP=C(E`}ErB(Sl7aWPe&qFP)zFBGtztcH;xMarcb6gPG+lAWpe& zVyJR4vXtf)Gx8DIGlfxa78lv(9AS%R5@(n zjVvn7GmX>xJm+uxrdJuiVZ_eZKYS{GC0`;ESd6+(6AM3Es2l;rKqyqk7!^Lx40_|> z*Vlp3<2Nn$lge#r;Vt6uTBvp1{nX92=6g*YH*7aXm%6^a`Gd_=(sg_EroCYsvbe0S zU)XhhTbO`2Czz4{Ad{iXRs{tMN{#cdVH;wAEman5L8Vj2|B|k7DiiTKShG+R#ET&Q zmv)8InFu^N^RvMmMbA+d8iKW5dTp1M)1{|(KgeYMF6-8Zup{;;b|yZ8or#ab&iq|T zmezHlo<8IM{j7sYHiwB7Mp0XN?Lx!#>Ts%vK2ncJ#o_3O7|s-__J=usAn=FJrdV3q zLml0rP229L_gii2?&X$VD|*Xu-GS4HVH;CWX-W09*|!4M130!8P8Df*5w5=GU)Z@= z^mWHO4z0dNukO{0H-rU_2&-QXTnSuzZejHLnZ;c<3T}A5IraXO*7=Oyx>L*9si*IH zkSS2%%W8~-D%*(lVG@`UPl8BWl?0JXX$RBG^z^a^nId6_wboX3uf)NhCkxvU22uyu zVTiBw*SZ&yuWfu|I-JfFb8*J^TAR=svNXadQ&G3jeZ4K5&KQ0@qcxn#klm7zJwJN2 zdw$|d)q^aiyl4f3_p|zJ9rp@L!Ztinbp=kcGZd-X_Er1ab`3xCRt$tp&#=@qGA*3R znB9_B7Hbxw!clQUS$W2Cp>SbzvFGbs-r0h;YrO_%EjQ}veGhU7_mb7JCjVXq4h}bm z)~&w}?QaSdm4=h?yysBZMVdfPq2t;>(9x>ne?eQAK#@i?4snVKx)&ziuF`Tk^z?Nf zqdzn~NCxI`5@83emU?HXs``Fr2gH=;2;1-kT9a5)nUZFytO=(xlwm1zgb5udFs9)0 znvGjRJ9dS3?zvxZ#A>U%SFtv1V}O*FMLKt?NJxwP;#@dgL^CWE?cq!jw3}jwmzIA5^~XqTHO}Cd}}yQB;;GF8nwpln9#$b=5V1U!||X<}OIf z90uxbrGgba!HJ_@!z(t&nR?7>S+^c9>i08WvD#`d{Jpv5 zjV)mtBfyhaeAV;j)EiTJZe19^9e^}32t>!Gbdd%fs1A$r)UBK^JFYk$WHIMse{!p> z7`K3|vt{2{zm&W*w3PP#wg(nOKXzMNZ22EQXYB=2beZ<9`>9?ldMxw<=ULHcHby~1 zWy8Yp>xaT37u6ROhtow4M+}W!QOjx2(;FXTGWFw=$rVuOO|7wx+*qzj5t5_;r8ok-QH1R=I*n+5bddhfSoPEG}_ysWprWe}^ z@0B%$ZFr&@j6SIhfr;9My6cr;=2N5cuhw0ue2~f5x++^Ehq~C1n!^+K;D<(3`nosBJ_4Vy!4oks6u0D4_<#%3#icy3_|34w}>Hck}@9N9H| z2uF`g7YP{LWhclK3HB#--7Eo?Z7Ht0=6>VFaE^%LQ<)rn@>E-)_a_F9_f0`R11Qw|p$ZkvWXX&^%6O$+rF0g@LaQzCB3j{nn*X<9RFc)J~oX zo;<6cJWB-oaj8tSR0Khut@@hht*Pti0tgzTy9nOu`N5X&qh6#&N+ATHves5xM#y+U z3}cMSz`hTE#x-n17~;Ve!s$0ohf^7Yb}DbRUT+PjGnQe=FA8TeWM}`+Vkp~Esf2SF z;>Yf5?uDJ#yn1PKIFCvBNcy+{p$G{~LC+uD2bv-ov&RmW^Q>BkX83Z*92_1R|QoTV^PxbP+W;5kcI}qlB|W z5Z{VR!#N_DYbmV==ZPS`YLzq zP$od8tcA8g>pf!&DGU||NnvEs1r`y-$7LrkI0=J0L^GrSGDXx*BC-3+PnF6A)F_o z`BFy;M6^&6UL>N$vK>l96#G0S;W7~{r#4lHpo48tDS}m?BwQ_min-ClH6pDxp{$pR zzU}zHfuCX1(|13p6M*;;(8}8TS%bERMgT@33XT9GXp8_NXp8_NXp8_Nm@9gG%|cHQ zn}T)ST28l~zWza;$eYM8#u>gtVFuW_C)Bs~eu+Efp&A*D)F^^RjUs5&D1t_fB4`?O zL>!v<&21T7YR2H_X^2X6SZu`{lx4G;CE#whD2KJl06`+w|6a=;e(p%Z?siTiV>#4gdm59=jAvGz241s6XR@k_5g9bd^) zFJsqZF2jVIAD80(0?~{3@m)SMkZ}%Qd2scH9S3|-I{wcrJGV_7@Qvlr zsw0pUND>EpO9EMLn>gT`6|fn6yYXXSNCUjw1DMOkk8fm+CGoIXq8|cu+r(81__4Q0 zn`aqMqgC+3yIBEo@EBKXL|PU#2pLBp@=Wr8?OyyJegq>=9EMMMZ;d=YIF}#DPq=%M zpXjGvCHHa{#cG*O3gph^o9Zo$uN8X{`EFb62XQA8X;*YNi2RuJyZ{`gh=cNtraFof z)M1jkly{&2$ECRsh0j;~Gs(Xo7Ivn&iqT~<`0cx2Tpf-dAmA}M9)!ac)-dB2w(l{E zv*__Xob|Xsi~Uuus291uj;^lG&i2j?oqb(6yEipHgImQX&MTeHcEz|Y*|?Nh)FFP9 zTbSI_o{2~O@Jj&L!N8OGuo63q`gps#G?BtN17YwKIZAiv@bQ67%8BVI91KxrP)2>( zi=7aD@RSD=UUI2k*IC?+jhze_2#fN-J_E1_tAcLB&i{~Ue}z&sJ_lRXpF(1WO{v{5 zyA$7R#fAoL?^e=bsD}$9`EmCLEG8`QxaqNC!}rkh7x>xsrD0VV>(TDdS*UL12g+^q zw$l?fS33||DG}ybl3`qaj8B|AGP7d6xRQKv*sE3p!AkOlVed*F&S0E%o%O<6@6xci zkbEUsMS3Po%Uq+QxS|+0dhR6pXNcK0?mBqlt31%GDGY;b>F>UDh za>j|*c81dOgK6b@TKP2<7DdZxwV$puZg?EMp01@7;Yz*C+%I=r>Cnp8E@!j?aefi^ z8S-0RI}j?Uy4o7dYt-`^7rV5)#^pR%Fz9(*!Q2gc?uO;uzSnq#Tw2++=drbNyK)nG z%D;N_N;WT}dcqQ4{Xj%q+Y*dppw+Dl7j==QZ!w@~&-%dBXgDTH>60O2=dL|3Xs^`mmDk2^bl$P|1npaO`_?7bvVF(R!tY$X zS)$wb&2tH7FS>g1OIz<^O^)Br)f#bq+s*Qu&YR^+=k>7RIr`n|k?=#hAPYHonFXj6>1l!uSrD?qYb0+By529Wo2Q&ke&({7?i3JfBmX zTsx0T+`Twf9kub7$MyJ&E*L2=#QQPy@y7rZ|11DSwJ&4r^cX)Nf&0ff?BeIEjpKOu ztq%drqj!&@H3m*&TX`C6ixITl_|QsxIfYTA5#&&{ImReV@+>)40Y^9MurqH7Hc$qUad zj4wR5__-Tdi=We!t$O)3t!#&G-*IJM*k&oNVc*Zay6@^1J*|2^^ooVS|lTD$$)o(0!e4%|HPy;C2a(vA*&I2^0+=wjaD(RYd# zp1+ZOqY}Sat!&fFw`;h_*503>(krRB7BRaDZ_oCE*A5vg>!TF!@2LMC;#I#-p>xww zeN{*sC+1y|Uy4xyhO4msm-vexY6@Z4dyVbL*tR9-x0O8OD5V?L^s4tPe!<4Ql4**l zqhjjA`MGm0{``*0))1FvV;4}^3e4h%D162aCfAlK<_e37X2Ffv@Ky?id4YG7Cl_HB zK5T&JF+ZOktz1;jLo3D5R}Xdw#l7?GZv6ZNEaEY@6)`jKq0BL#`+~|96Rv@F`Dh0b z!At9xm8=Vw1XGbTUbwQ7A34=0utzeuGF`D51YsF%Q7h;<=vC6AQHokkPoXDF&TAQ} zqgPK4gPKKcq}N2RnVyqg3p|*On}0?mQY*$Bi`q)Bjh@)s?U2xZ@AT{pCT(#hhT^7i z_DZ&4U(Tzoc{*0@WWg?a-SpPe>!H_6Zv(xJ^!n&w#KRdHdRypirN^; z=TVO_H(eeR_NhaRXYhmtcpvv*ltO~~FR1CcT=h(Oc%-3yVrJ%?Pd(1O6ZCcwV9ikf z!6SnMD_MJv4Giphet2l0|JcsG>UWu!`OHB7!C?bH{nt#%*>!lZe|XQpp@C!l$M+pR zq_$Jz^Y$D&eB#Kk0WHd}l#Y!f`Y~+i=3G?&KbQ^{OD|Um@NGvy2!$TT?(&)#vFwOOIbH z#7b98Dsg53D`{Jdv1^-p9l+2T*aV@;!^u{w^?_os+J9`x{;?(f$CjL*SZe;tvg3!A z9e-`H|HPvF#8UYaOX1H`)>xDN&I0e}**0quHaQTrTdX^*Ke6=w#M1K z1AqnIeR@C7&tMeZ-_iSdvBdFr*%oW(&y&iTyNdUBBBS>qeD{kjDS1ChS@)Ba{-2~Y z-Ak{SFA1hs=;;;L_AaM4ytd}2$>n#F9e8a;$c_&->M4!5tMwj%YxNZDpY;on20f)gYdR*v^?FLZ)_6pOTlAC` zt@U)cDASRoSxUnWOH$@1Ns6^~A@hL+4}7yt%ETtFwKcrkD)L&9w;7vK(L98>hs|=$ z$UE@Bf=8qrLgAA}UJvqKePF>Ol7|q_q10^BER~^#ZJMPvRNk#wO71o9(k!@%ce`d$ zLX~}*rTkviX3bI&68^oKe$4_~UHbQm%C(Bk+SV7eiWl^vQ<^0|lvAh`VS{n6R)dg)2c zQWRok8?{ZQ%JPb}l2)yKhgPyf&+C6J`;#>zJyyrnnNKWye!TmfwZ~fb$pvePwLmN# zptOp~O(4wa-yLxrUAeFuhV#Ms;arg?^O&ZN4&&E94|-W z5}x=+;Rr{Vm*6;&apL?eG;yxYfK#5}J_~N*d>p@&o%;W>cYnQ>UDtKszsd>=h}76r2;rO_Zzr93pPW(4S=5r9GZv-kMHX8cx&QJsZ_Pe{o{tzjT z@bG)jFTTt;opo-Up74u(_wdg;?nb0Nh7J47;Q|hG&UyD;HX`P|8++2#ys%%~MzM8X&aqkloO>P_ z5gZo3d1qnlx_4*kdK+Qe6Bqoa6L(!V*LnVKInqbJiqL`U;=0TDT)vO2&EkywhN1TP zNC#f)H|#KY!qNHe-OIs|eY40T=Nm`%=%fn{Yd=NIk4W!{bG*WLtxh%?Yqp!uBV%i~ zj1QfBnPX$_l0Wc>2ad(0V;o)M>$!X%(KAbP21dM;Q@Gzo#Ok5=T!U*w-)AQ=zQl$2 z@Lvyr0Uo@N=8mzrweHH(jGvDy`MJl%76V_mx<}?#a&@cgefaZG-^CyQR{E~J_;&}i ze~gS*xOf*hK7?9-6+W7qczsM=s!=}4qvl}mi$7&5(6o z?$p&g=Muiw^osBLPQSPI?$`Qm&ECEH{1*37>&9<^hkl>fv-BLC=8-=CetI!@F8=~-j-#y(s0%THr*ah^Wwp4Q=^ z-fVPFC(&7r@ziT-}&q*2iSnWT&P*^?AXUYe6!!*`sRzn{ynUCfQ1dX=wO3gF?Z&9 zWSquZU$^_|a0buCahEZ9m;7G(uKU-_?+V9aBUeXcFDK^wwRc-LVk{5j%-kR3i~Vv+ zjni$f^LxK#oBJPSU9L8_u)9xrUO*WRl~d%qz=oNzSCFo z<`#E69{0G!3%`5kc=o%+w>X~Ufqn4r=@^-xWy?SOE9dkgeTl8&!k5_0aT7n7&ADer z#9VRD-&?OUZ!bOech4#&{?lEX^ccfQSMl{eV#8fnT;FCa#@jRWs`vlvv{qaz*uT%2 z5osR2%D7ngy6T&_+7CzlQlV<-Z4MR(WP9N{q+4sAHng6 zG-h9AOrLpYF2(IG>m%}M#D8#U31pI%vLb&`Tf+GR&dF)e&2|Jn6AmL50C7dtJUm8pMe;YAB*W8zRx1Ye`sn4wB%*eiLMBLs) z*l2#i^VGbvIU;JBz4Fg4pGRcwQ~j=14>)Xm%#Vm~e!BQzZA9Kg%JuuKo4*Q<#&TOX z*2LfzvAsK}=axNsk8iz2jP|ip9b%=1T3grNk1PJ{;bgma{azla;l`fdaN}|pV?wZZ=qWrvWaV)>o;t}YVY>@_S4M$b)@;V=M$cNYsquE=&Wz}cjnUh?fyMH zd|HXg{7p7;=4dSF!Pj1l;hXIgZ~LMr|M~rIITm|0H^Rx$n9wICdwTz^#$cr;+IR8Z zzhU5UuNSmVw>8;$xvfvAbvZuw2DRSWSgqH+`Wn&G9NAmf+u+bQ+vnBV{96JxKF;`F z09GrME?>qJA@1faWxp&Eq zI+*j(+15^fo7qFhL*IvTdqn8y_*KT$L&s5{M$XRCnyM|jt^YQHPrUZ;Dqm)7Kl#gV zyno?I55(D@+iyH|u~PFR`>qjs?eFhL+?=b;58-!Y?@GC@ehIw&8|C|`dwrvSPjDZ) zgGNLz@D1PE!>zd^ah&~bkKuc3d+ufI^mmm$@yE!BypGt9J9G4?gW~HqgFSlRe~Ek@ z(Yr>(HwRw{d(K?GFp9>1AMZ5y-0E>9g)>9R~WX`9}Er$mgfAv&JtX z^M5yYgjY6-gU!ZhWZZ8Gd(6u-ez1?9;)S_6Xuf*P*@G`!^p3mcUh$1|#IKQav+RAR z@o#Vb`RVNZEoJZg-aRY6;zy3*5fA0VoIJdS4>;bn%_IEZ1?S4S=2dg-=y$?O9^)P7 z_>=SMRW7Uh=Bcq7mb-FqH9zQ~pKiLu6{b1%e5Lc#$cspG$h#WH85t3E?>S>DUV7nT zi%mMqAKa}```Lu2zkTeJgFi*AHBKwBa*pm1*|RtMYVTw6TunH?@^2;0A%528+-v5# zea!duUM|3ia~Q;2uZIEmjqhy#(*BV%?YVol6#~>HEl@&6RWFzmfwZ z`({~*xm=Kcu-AV&>MOqX>XMIhJ>izW@_mn=>b?{UIJS8O$2kmQ+dj>H`K5;)dB(rq z>vV}veeOQF0Ur+7YOc~@PK>&DtMl%(-g#&G_tN%`;`-~X+5fI$DLy0em{_jXM}7R) z7DF+sZ;j{C7~)3m&3PvGnx7-%#_CAzHr{a3bwtOHId>#Kukr0%J>!9W_2+JdUq5+B z_Z%PGszG{s*BYDi&bC^opPi@p@6d~94~rPd0sTrZdKY+_uSeqgP!8b`zc|G)UVncY zi(6wS&-pwe&G9{cy8m2_tlC-08(4l8@!Z4muJfjGg6A4}${5{Rx4X3U-xztHza{0z z-Zw<=;q89Bjgve(J=Hqw`uE?R=JXfe3+*j$Gp0*D%2`h__pA*ybEIz6dHc|8$9IBx zdHfK!_Vg?~YRH`L3p(JO`-mJKk=B%fw!KAyD<}=cM|%_2`}i>b9xc}^e76?q6mx=~{ynrj!NsEZLczlnJh&`|yJLkMudfG?m=Qn#RcxRoD#m4@Kz{VGTjmWD=eS`HW|E2=Nx%_VK z9`zHSE1Wh5^rWZ!_v7Y`T*2#$NON^$d`aY`JP{W?t+9KkkJ{%|2{~ z_FIfDI@x1KzBV5}$#|UJttWV zr54nooY}^x@mYyczai-uk#hg8>(0MreIBXrYOwx4re5T5<@=0RI4PfMa75lGC-XPN zQ*yGx%d-<7+q*)Kl9MBHwC2^Rnr*+MYiq}Qf8VqB(48cXD}Eit+`Kq)UQY6rPik4N z!Ruaj4>$Ke&Umg1`Ox|v8DEkue~r`JH_Wl$HFous-u3PvaoN_w5uepKzbkXCkIdKS zxnHvLP``8bvy&LVh^*H7V>p5fFZdjh$K=B~Zf?m5jC#mZbHh%#kXP~<&;2bU{>IHa zIZphJxm7%xTaVGVR|9IVy2V{>=tKOywJkg~ziMY>4o{xf^nxSx%0}ZTK1X$YlCyNp z-x_!{*S{6gf0RFZYD2x?3U6%uYwrIavTuLx-{2#;Gv}0Ef9<{0{9B2W+-F0-yv5%O z*xa+LXR)*TH-Y-yUahv~-`>_&zQfe__AYB5oxkt#;2W=N{szm&JXfy7;~cK}I|^pJ zdb*4B2H!ZV*u~MkxyR?o{4D)O)|>TjYp}Gp{UKv^^+K3N?C@@%$m+5!=1{Y=zH}v$MSGoQ1vLL_cLL=j7k#5q+&SxvkN?{Fc}5Cbcc6 ze~2{C)wDC!w|9QKpN=iI6;9z^+4mvj&Is1_j1K{ie9)uiq5dSMVgTFr?+$a%ev$RR z@P7Oo;u_v@-8%aD#QRFl_xpnmHb>-TM17JG@w?VNCH`VRB633fjsFzszfZ^$-(J_) zzQy;%-giVfIr9Cm=hKK^t+tc6HV%%?y z{yW56@0V<;`45o?_wk6l3m(|I6%W_ck=kz!zs*=p5V8E@X{?U>n`UGz*8Mw++O^kj zmk|+r`_0=&*NAk#dtF}0vDz6Ko3DLm>G0nnjfnX^VQP=LbcVfacwhtG5uu+?^|N^T zx4PPg5uOq8-BIrN=PXV>JBf8Z`&;+?_ikgHu@5u5;!(bwr_Z{l^>S-XPx$-D=clo= z#xElC|9*Gm{kw?sbi=xh>(4XiyyrFCJ#{ZGR`G_PZ+D9r#i3l{&3SYBQ8^zOx5n9$ z>-IV)ZaA59%~&jdjI=k>cTIooJv0C9fgSeQhV73LSj8PCWBA$pG=hif@h%teQf{t^ z;osyO`y&DazuAIeM9LxG;kl-M)y;_1r`8W$=IXP2Y|Yzq4gROjL0o@w!U`ws_`&(i z{R-wwIf<+C^DcAJ{nK0$UpXk}{t%Jd-uWx%8#6pOXWpJUPpyfoCq44W9(!>&_fr1a zXODh}pSuVySNMFEeIxR>k>)TRa+qHI6_ydXlygs+r~O@AUdtCQSL40a!AHG-d=gp7 zEBx4pm+EsK-~N5jo%Qp`_mSp9`%2&86-TkBM{n>hUso}l(=po+GrtSu)e-&M^L$*% zrxhQz@vA?pvBX*H2>-ZmJkI4vxmm$C#}6iPlKW!x6#eQFAJ$<0A;Razb7TyU=Za4& zx%(oz_)ceko8b2v{ac)3^Yh47ue!J?u4{cuPrya`|@A7DmGkVpBc&z5^`{d!0ue0CA70LXi8n0HmQ(oX&W)}tIW-3)d3$L%AeMTz2e9RvAdK@tN8ge>s`(J6&}Y4r{}eI z$TkPOm%DBJ@pz7l`m>T7&A;!W4<|U37xM3AMBZPjgB2Tlylv;iMDEm{occ>n{;$1a zgp;joc~pnnxpUmE_DZoJbpJAPuII_gOFEmEBl|AN7XPYGbhf`=TYKN-?418Axqs^# z{300CJFeAWYhSN~4eui|@AG|XpStZmH{Vl7>vQfcY{(%v*b-y5*o13Dj`DtuFWUd;a&k)vGGO~jp^zx2J!{b7Woy&kdU(Y~X3`Bl!!Z6e>jw;s3g zU&+6b^OxkDKWbTCyp5>0zvRY#or#fH$$@ctUW(U|T74e9E9ZX5K5>JoxWrKG#Mw8F zc=o%>+^X)L>sfk@=bqnQZ7<#aZs2$1h*`&97 zzR!3>T5GRPYxdc{>YMw`emLMMM)!|-e)TsU`+V*mSlF}2UU${}`&1lSOMY8B|L4F7 zzk09py<>isBOLIV|64w0Kk-2y!SRSRX8Id_=AEH$HEw&~3M<(DT=MiTT&(^b=2`ZR zh~L!rr}6eK@jY?rJ{ehe-m|qZ|0ZAQL9M0MiTsy4jWOMg{gHmPg5ikX8CUZV2l_fb zJ&9bu_U{%S=gbjI;{T!e`=R@Agx?WTv zDAx9o=CBxx_fvhR^6_2UJj%^2zE}Bs3q7koywCf6wO{&vlLL6^Z=n7b_z-*K2u^YI zJkm#;yXNj+={dc3e;(bvcfZIOr~3Cpe@oS8)clBi9r6B`@A7})^1p_QnaB2ObN%gs zJH7pAzN+UD!F%uBYwwCZoJaM&tG?0RuUEKd$|u~-$JWY`T2njM)X(2!f9uEZSTP`Q zt^Brqk$ofbmm2z)`0f3+#nGSpcd{7w4%psv@@M`n&)=hc;a%0?k=nw+ClSx5{B3&_ z+e7iuZ`_UTHSaPfS9(%=qx-=3kau`Th@NS`_g|de;pfYj5q5iD>8&i&o8`qbcv@Q*a!o^W)Y z&20^rt73$QK4(AV|9)-j2M*8qFtXMfIk%_rxA&6ZrF@^$1xvs0;cOf{`+X%Qa>3t6 z9{M*9d&SXrD!tB)2%qZLM;Xg2Yt3C}*z9jwd(P$3$l4{@<9iQ3tPlB47hA=CZC(9S z&eqRgXN=QxJipBvKE8}R#I^c37t_0}t@N_u!uyAuCpeQI_>nhq>t9oT?D_Yh=1Obp zL#)kL$&2yz432YRCWO0Ln@9?`#ljLfwk{4rzV%r7J7&RnWjXMc#OLw0*t z(yK>Z!m?WHdp@@J&VN&|Z$$R|J9qDYo&B&ot4{gq-}SHUmHHl^+tkmu|e{^i`yL*j=^hOnZ>{bnqPcO@|08&g+8V*$+`v`2F^@mbqq?{Md;V9^C7xo3x5nh$y!!q=0#oZuT=DCD z{@V~Aeu&6J>x2!qFk=oZgx{w)6~sv-Q4m`Y4z1x3=5=`5{;Eb;O^MbF(}Ko7@#MI^cs< zz3FRernRM}JAMj#?Xk1Xr?zv1`_}Wy*(0?u!gK3aY{cWoh#Hei@ficT@Y=KID}U*N(cePq%cYp^=~=-*_hVx|qT`a3C$^0L968_SjoMwQUq1Ub5KDI- z|C`TZE2q`oHpb#_P7LjLj@WPBvvbwg@6Fcs&$FjF#=bmNQ+h#hi2Yq;MAU_|#8v^OwN7PY;eK8=kFHV5w6)_Yed);XFQF_W8%7X1dmecTEVaWXTW}b|hr8nHHy|u}8s3hceJWq%93L9X`tel1 z({S*vZ9Wxu=judGuEbeh;Nup0p32AhUV7}mZ}Ih(`fla(U2xr^PaNq{BewD4*&3X` zYaZ&y^WPEqaKsONtKR|bRp#`5_Vt8^zQ1mDcOT(k1YbFH|GbK{59@96WJI>}jr(Ic zyG8xpia&h^hopC7`@0xl)0;;2m)BeCoqwAiiMhP@+w1#?_+AssIo~hE?npf!jpLTz zBeq9)I2W&@`sO$t(eaqr_>K}E{bxk_-QeB#srPM_#I3nr`UOGmk^KijwPTn5n(fPL#wuxH4r7peyXs=L*BQn?4>_6Ssw=sQ{Ih>hi z`!2H5k1xgP7tw*I`twc3Z1i^n?!Jxe{l*c`75gLmW}&k-<=>ImsNJLSJc9X%Eg1QE ziySm~WeX+IC??CxW@Jg>Io1JHK%O{RTWd6pd&sl#1!Oc1QBWttJ z-ChfO{iK7B#X{<4W2&`=3n6K=&&y0+F$M{|E-IIO3sU>Gd1Ri>bGb3V6 zej59`t2JZm=KXil&V3pYUv|y^A!2Xuwd!2)3%17dTugAu&R#FX@k2d=jh`a*=ig|o<_w#&Z1a<^TW;+yUi=gLzK-zCJKx?$nuE9U>!Esq<5sb`i>{TN8QC|> z3WxGUkHOLQw=4emfVe1e#0^%jpem^nT*3Sh@7LHo>Q{3f=X}5!KS$&i zKAh8kE*7=l?-%?w?($Vm^qU3F@^8-fRo`*j{o>TU9k*WO`VSE}on^QAH`j-KtqW(3 z@g+~aJ8M6?bcvlhG-jJ!x}Qfzr1O8u*x4DEHFdSx>)|M059uA*YrlQQuOjsU&Q+Vv z&Vn=N@gf%9@iHP0VOq&uaeo_;A0yJ-tnTuApS5f1hOW;}V*Dbqf~R)R#gDFHlm~Mz zTsrf!>~$6n&reRzt^c2%=8NN~|MF}^aNxP8&z!i5soZIe_G~fxyX*>g^c>9<@s;cR zmA8aG{KCWj9)@CWop|=_-v3s0%fs{RACVs-<)Av{dHW8Y-bOt6NKempzH81I(+5lS zZ2O2jdNu8#m#?d}`Yd}#1YUOfo70@U!k_s+MCjIU;Tn-6{yN8}a?P*mEhl)v2itx- z?8R(kewJD1Ha_>+yYfG$ zYsGIhcf`(J&aK3I_Q&{$E$6QB>6%zR*8dd_#9`&zM!pui8k56*56E@AwFb(?HuqPs z%=IVN=_a*jY|o`$Hcoqr2hK}1c{Kl@iZ?Mo>id1p!iA%sB6y?Ey{RTfr1yH~=eft& zWfRw8L^pe+nB-G6L!uYVhI-W}sCJ92L&|K>Y;|{8kx})?+z#1~+(y)jJ>gL#G&Q z|9jh!xohO9YGaRUe)C8E$S)koHU5fA^Jb;T*^BGu+_t}27vu8Io;m!nSDUyrmM52b z6|Qf|Rdanr?==GF{4F*2%RSEd*1Tyg^ocXJ>9EI`pO4Am{{OY!!?L0mFGp(+{#n!w zU)4%`j(9iEaPv0OT!48*T8Ddh@w3vO=($FYV10hFQ6K8ZYEJX>=-Jx7Wlg|yOMSP9 zlYCsglhlxYBo2C*cd;0eBk`?W&u1q+U*xG?^-j6Xp4=XhZND=IOY0vN{My%=*B9xq z$J%|wob}d>I_R3G{qn{>Yu?QhwPpTqB5Zqi&%cPA)6Eaq^rP11V{Fjz&^^N*8-D-V zf3yz7raZMTzf1f2(UIKJV@E`cnhQ9iOPpRu@Pj9D?Vh>rt)Kh*)lvQG?Ogx=C~FnG zkBzi8oNqkUYBBfw$G%k`-()YH&Ya7Ad+sB9e!a{*Y;4nW zF4sraW;s&h&da$sk#fm);|t?g5x(Q6@pzpv|HKu>a{4CYae8m=TZheAJUcfcZz7M$ z_twNG(bL@bT;*$I?<{a^4vvhg*FN#-y0tlOYrX_VB|wyJIn zpMEF#zrQul8^4LbZ?Apb3%{Izi>=y**W8=PUXJ}!=IwDtzT&U>v>L-VIpaLOoNw&z zGrqQOvNLo&EML@@kQkO z2;cVnT~0@^`(5Bi_;~pwz@`e)z_o-!FO2t`?)>I98UOtB=%dZD}EpKeQQgM zwsZWE$8hu;O1_c$_fQ@-rl04`C9GF5xzR3j?LL`{p*PN`QKOgFAoUrzKP(14)|emp3nN`Uaz#*9^8%y zp250s9$`Q z7dUMm@NGnH;lnxotFd@?!s4zJhY^7l#^xsuPA&0Cr_xWm0ERS;c5Dqb9 z6Rx>8nrC;;>yh{JZH?SVzK(3qzslTvRu96*L;d1;_KeeB`G!9>XRhYn$o?vRKEY7E zcNsq=uQO(~KO%eleUbUb***AK*Q57W8*NA1f`^&|&~KJdqgZ-HwujGX!GB*x;mit91;0l)m$x8ax9=K9`z zADP>$iGR%e*OA{u)IoXBKkV=C67gM$@w4n3k?$gNPJNp9ml3##HC%6TuGl!28?!w< zs64R2)?a$?|JuJsIN8c$xcy5X{+D}qweDBA|4Sdf?k>RT`{={ly4mYLu(bzY`Xa{5>Z};c;icUcCChzPa}s#Qa13n}4q(zK4BZ>&cI~-&S~q9d0(=cd&c* z`+j6x-rWP_KJv@Rxih^B&#l*|mHVo9;#aYU4+5_{QA}WE$KS|sY;1i+_m&@i(MkCE zmpku&zvD)DndKo4?QQ;CTesVodp{TNm3oyQYFZtNZQ~5zxmuSK&dDjybG2Q)?F~O< zum0d1k+;n$oLTGNgV?wJ(C^MmbyFLB8WGP+Tpg*8)w}s2-|>%2Pk!TLRd>(zEKZH_ z$=`B}OMB_|9pG=HBl2yeF`UoX`(wnvKhan2#Fant;B};Nq_=y%&v-jLW$__Toov%BP3Ump}R*`n%W1*>j}s_{-N7 zf1hRFh`fx5b>rRtzQ(&8Cj7*S8W8sp5qoPL!;2H|4{>47e7^Nm2GzDz{{tR;(VL2+!+yLdq}bN3@k8?h%uek@ZPb! zx(3_F*{_ysw_HBY+=$HlH6M$sd+=kfI$&u$o#7jw@gUzug#Z2DF+7Cf8vVs|2{#NY z9MuQ9;J;Mg5A78fv9b?O;z)06rg(AT??(0GMaEBoxAuOF{%iV?{AeEfdl|eB`Tnl( z;}yQv%elYj-4gS&*c*}ek;Cj>Q%8-tUU;io{&TFO70f?`qt?8-Z_mRU9_5&P^R#Ae zL@wR;<-avYS9Q>%Cp0eRpZd-pv2jV7+b^?EpCYiY-uL}Ccl|}rXrCAvx2NN-_XGb| zz7^af+xt|!dI!;`E@o~UzxIaqu#tUy+VZVmujENNdZ_*z`&-r??AO$PIWI4l?&;^z zP5&j_t9|{kwRGgX_=)vX-nU0^;q(?g!adgcNT9cRV>! zwT7Rfen$MiriRPoE&IqypF6@o-64bjx{SGX?&o^ydK4_@ilxEYyB>M zdPbxe=HFT3ykg@>4n05FEZH=?>ab(4> zk$tlq_4A0WnU}^62RLb7@@;$f;^ydCF*$-29(Mldn>*k ziTODB)(-Z&ejp0n^T_u5E0Y%S8;4_Fm|8gi*4~$D{Q+rowwe+u#b$$wg3IeuXCog^!hZ0 ztM=5Y8vP~$SHCaV7O%&gmv`rWBldfS&uRf4zW3k$ul4hboP~d@50_&j{kOvAtGKAI zt^elr@A6li{okdx|9q4^zJ2iOJMqQoiCcbpr;A;4^ohH3d-(co&=@(}F+9yF^ZaGk z8M;Sg#&zx-U+i~w&VO@wIfu;}`*0AP)gNmxiK98X&wXZgw2?3xV(!WOn5rSNBO$8 zuD?6!=07|yBWx2kn^Um0{_iqg<$h%EEcDcG-13pXp0z9QR(!>EbD9ph_xlJN)oV`P z*!vjVBj;zq3%QT5XY9!bb9xvI`jvTH@~e2d9~Z50v9*55ce+=7=I>t3j?7;Yc;9u5 z@bqsjMtok4k^E_oYHY+w-h0X?WBDiVygy~%_$vBgVv9{RCcn-7`ZSi;e>ly-Vjrxx z=p+4mdhaW>Q!M(5I>Cp31A&Web@kVg5&7)&Jl9WKXU;z4hrNw~`W2sZ+`x1fIZ~Hm zN@jcP^39wWST_d)-0)x1S62N!cNg{^5(}~UG$K}=*PqRs``5t3_P(i~xAgz1YhTU~ zIrMcz{&;T=%L%bMdgouNv2%F@i*L);w5K_^=DarlV`RQJi`!ng_Ibov&&H>{k_~&j zmuIzOzn;YwJ?8M@JK0(}@@!u#7IXcM#2sv&*6E^yt-FXmaHJQo0n>$_B+d8 zV|e(;hY@)dsn0MTjX7PjT!Rt6d$FH6g|RU&kF&kKapOC4S1vqp(Y$zjdcWolb-&O- z_@I{Png8zeD(|q%2b?q?=X3vfTDMP6_r140$7gahJ|99nM)1#a3DdQGqV=jbkmic} zUu^UO{H@g9Q|HYb`!9m2_2>H#UbXO;SkLf*V1phu+sFOysMO*25&6)Z7#TlCivK=(>Z51#{juN4+dH*A9CyAYK8@g^^GCjU z%NyLi=Z(uDAC39cm|b&MUHf;UZ(>KT=|#nMm+{g2XZEXk#~;4%iO8W#Ib41}%04;i zEFH~3Setk5P`Ghq&e$2TF}9bU$M`gIeir)6nVi!z*^-yHz)KI@<;>IEN`CY6UEF;u zHb$__a*j9gKB7+!U7PP;<&4V_R|HgO5>`^5NPV*j@%9Jo;1<@PS))wtUGq4b-^d;Yf9SI&K>%87T` zUyk5A*H2cyrAPexEaIu&_$%+=aGq|lZ|+y8?-*<9K_1IjJh~I)v%Ds)Ics~qu{R<= zJ3W0j%NMfJGm4c>*ha*-wG5x}(fjsg&VCd5E`kF#=;H6&h<`8mI%16-0=s-4CwX>y z!eXC(7xTy@7BB*zd7$>Vo!T1dp(0A{CH=-V`s}5 z%xu{spT(5ldpJktXR#Lsy5M^r84)>2?=?1?AHO-Br2~F?F8$v!_IM zWuDEwwUPN*^zX{b{x7nheYro!3l{v1NOQxScl(=5^BHS=w2wb?UX8pv*BsyKY@Img zZwmI(RXcn9j? zZLD8K5AMaG@%9vp`YOhQdwp=`NM5MTIsY#8GJOm$e3|p~(wXPkJ0kskrryg1 z4xGgUy+1{8(=+DfwKLZ1PuF3Xc`G(Czl*Ha_{iQ_o}J#^r@uUnx4b>3p4gf>pSiS# zmvc2QC!NKK9;2S^$HR!=%eZ{wdZi9W_RUfb*kg-L_D00L#twm9oN)cwNzCaV){7N? z&fQOQ;^d6D+Gh`4<{Epx{611ntT|VHJmIsCJ@53{cg{Xe2rOSj*!DjE?bTZSBhA^*4WhV-6!&peQSg+^Xhy=>Tkb+S7L?ZBR&3TUwMf8$KGvffQ{Axj&OQS zEJyZ#b`s+kkrgiOon`J*=Hc+fdGjAWm>YlbmhWo6`9{xuL~jsxd(F`!XRMi%Q*wtL zI^~b&9v||^+V&eqE**{S$k|!yC;PC832bch4QBYw>oa^Fk>-HCv(HEF>LYQ3;gTHj z>-kCNwQ&`rOL4p=ub&D-?x75XGIr`a!<}}@1i4dJ!iKZw71IT z-r21KYp{s%jK`e)^4(YsSZ~j_)-&eqQA@^rXpgW@Kd@JflufblJaj1-?qQ%U#}w7PwyV* z@^-b?KFi(_`7$B~jYD$-cg+_(>+2(Ols_Edp?8YB@m=KG0`BtSyR^N1WGoN)jrS30 zOmPGkJTT*AL>eDsx;k&4cV{{`?^Va_vbV?W$owqjuQ9P!Y~`}OfzBD@_InIBD>lo8 zr<~dLL4Gx#>ZiSPZHU2$^iISJ9*Fby8}p^U?bZE#*7?+UZet4v9eibLj)rjT2(HlM6jcYU(ndx2rSOe6JViJLM-oA@Qq~FNjpWfSd`*%5eF3C}j>8!1zI>bq>$ai@pPU0?3^LHQ4?3Fj_ zL`~zNV`sX*d#}-}ZpDJYLLWUVbs$0Kr-7j`SHS^m%|H}C)}9_HSmZuV-> z9Dd=V&zKJT@yOpjU-xRrxA}a_p&#$o6GeZ*L9@|~~5 z*!L4Vd-?KF<|}*aUt}E*dvyZ;h}2H)cfYl5KALk5X4ssm9{E_#N5vs`rBl0RjH>@}q zr!kChm>;L7Ioz=~B8{Cr*61m3^S(cx)~d@s_`TalkLOPj7^=g%y(7X;oY6HR<~x3! z@vkGliHykGh_&j0xA^FguU*s6>-RYudvRCSTbt#DZ!pj|`z*HOGzU-Z+HbG-j``Od zpqJo?U-D!`_`n}$w`=U0hoftKI)5MG*Pd@LGw-Z@?4Ij=BWttR%P%(h!JpQ%7|lNK z?H$=O*PD00xtxO?AI2lXzvf2kLmsh<6YJ&IJWOo5(>?h=BE?0&d2_`^|D}Af-k8!q zBJ4T?NBiQ)c-~7td(C(2FCw1x7j`l5+>6o3{Hnk-a}P87^uuC(MA$0k*0y}>`pnT* zr#gCj+B?T-&sY2CZ4GX9IRi`MI`4f9#`;E|+^*e`@f@GdvtLabG-lSEgY|91zWO>c-tu5>n}^=b*H7cdm;P-Hyvf{Fube!0#{LnR z>!LMF51;2=+&mBm{yqioZ=!e42Uu{43-&*W;72{-xAF14Do=gOeHPi%b%~GroEec< z5w;pPbH=r2Yz`+l65A0m@0_t`zu94D_iY4L*q=v68q#*6nQ^d$#ZOk1tOVTlVA^JFs}i$%xFD?STPSd+lpojf@}aF}N+C^b`8@|L-w~<@uDSO5jbyLb%-;og?>ENG@5ubt#wxD%riXr0)8Do$vgad9gN5bN2AVySy^4A7bfj*UfLgdzz0c zF&a7l7%4XO3^!f!ta#^neBln)&f$pP=9&-p8Sml#DD#!Q^*x(%tNL57&oehp^Dz7= zg45z@U%GUsj_mK>t{PMRHV@$2!^qF}iEX|;WbZ%a?1;Gc)W@EF>$AucxY&i0k0bKi zhIAff@iClx%{t=N6?65r|@||vD@hTo;7}a*~060d(nd*@*=018S>Ve?1M5wX7%<2PA<4EN5r*5#KxmrEle z$K+w(-(*~TY(DfYV1MtZ|8eEn|C#+be@wha&cBVQ2R(H}-b5bD*X+|{bny|MRX;D) z@U!R{5&5FO!lhTpq23weG-u6Ntc$<=$o2L$d+2JflOOo>tZq*_^fuJ+POa2@0i|Ae62lrT08W) zr(iNixA$%B*hi-|9MVx=U@2d-?o0O{?5n+0&Q<>LWUIf=;2x(rf! z`^Y6;#%V9!d^dV8FZ9jdfHNP>Sx>f{$1N<)U3rPq5vfl5^{H}QpFQ_-aAbZKn2yGf zp5|<0i7T<);uBZ?wr=<`BA=X|JwM0dQZ6|A+3D<_t#dJS?q{cSIAafo>^p;ZoXE9z z$zOf&4UfOa#HD#kXL-eCZ8T>*>*tEE?ZMU4yc^L&mpl^R=IHFh$b8S$esk8Exw#(9 z`POZIS-1bl_t%PVcxvC9aqsa~+}8GRH>bD$K9tYz@>_ER`z(+3`4(}4M@=88YcXDl z^J8-OQZB&0mkaXBy!E#cJ;u8}Ga_@2w^py|fuElAoa?!l`e4uYn_-2&xlZ0U-ty=9 znEYM+reJ55$JnH&HPb%P-v7RN?fvn2Fy2L0YpcEAH$d+K9F53hxH@OQwfxZc*lfGs zP_V+K4%_z|2ld&zt>0eT+HOrZR&>$*Ho||He8=t8RL`u|d2Kac)cT&@k@;DQ1s-=6 z9*o)NxA(oCcAxqF7O zVYbOH9MtY!9*?ZIX5exDK2jd=2m{^tyN1K(**_xA^7lx*aa}#?4PSmA)=${Q6h?xZ z#%E+a%MpHXhIh8zJ#>snIg`)Llf9TUuFlehz8eGUILEDcT&k&azHj>$F4&pl zN533q&)WRAm67+Jna8W=`LfDM``D#Cg8|0ovv)bUjW4^a-wIof#N>wvzv&sL@s_u} z+Ov0-87rQfe_MRk%;8n6og0zn)+J7yeT*Ho*BGzH^)6@5<=n{HERAdLMEqKx?@Rrs zy~SGbm^bFX{A@hvuzy6hoUX*BTwhaTc!s5YneE1>xpAMlbADOlhungF_Dc*_aF6Vp zWw!e^YqRb0eI&kYd>Zj|e#HFSmFFx_KoSBG2ih3GmMS* zIL)yQvwb512i%?OS#vOZACYaZr$>&E5!w4zXQSMev)Zk%&f)}4_NvDd2KqheamE-| zBhoYcZ0xNYtKn-n{B`zMw_Kd{jJ#i)m(Khl0$Z`0o8w<@_|@KKt{k1qjrm-2xix&B z^DBPyk540lV>a=oXVDL*IePUP@#YI&_j->xI>lM--9<)3Pie3JJmb}G8fRyja~)S~ zl?NE%o4M;8pGKs)%-7Z{J zdY>`bqZZ*ZU;WOENcA^fE3tNNmU8(f^X2Tw?>*;7q}&*v`)|t{kJ__$_QgA2`CXpO z*&}xSCT)BgJ9|f@`;7ID))0N>#LZZKw&&5c+9yW#&QcC*cZ=^F59W)loYbfGimt<3 z|BTshAC)7dx!jzwzjvv)*ncEP_Ux?G{fNERJ1l%Tl3VnA8u9ckwBiF>a;SEX_L^Jy z-ku`PxD&%`dZ@owd>;8e!v7Tx`2JYCBRU$x_PqPd@uPjTxhwziZXf^p?jBjeJF;(< z{>|~RK0H6^o$(htym*4Kb#tq~`7~$Q6>IwU>IMdRX00*9pL4}-9iQ93q0K(E_uBXK z$cxBbWJEqWJ&)#d^Ny}d!rn@(>nGoj)&w2*5nRcU<_S*tDW5G+wvpm0O+okW1|U7-3f)&EM3`+mZQM&duM7W42nSx6*kZo${)+fqVJY ze)hiOGlHe}N8^4?jP`1^y`^>3o*_s57A0)pL{5&=v;D#xo~)0Ez2@k{rLnwi-i+y; zE$8HJIUgC*vDHss?N{Hq^K3cqyM9E}QR7-Y#p~T3Hs`*&$JIGboTa1r$Ua^2iGH>{ z%K_VR>Dn0TE3YDO&_z#c_T0SQqsQFJpCi5Z5^u%-zH6&Eu8oO4cOPkf$p!Tw-gDpB z<9}q&Ebp`T!|}-p&ovzE`Ss`6`}zN~lmD0UmA`vFw~wkxwJ8t$)@WXgjN2>aMtj-0 zzdg_aNB1?S`uE3?wYd)(>vQb4AGx#Hg2A0_&3Hs+ENq!`&YmNG8`$Fnrv5#X?$!gG zzA0e4=C?N;YOVR{-q1JX+lbuazip-G(}<_Pap<3WzFD8;R{q`Uw>CWRJq0K36S{lf zv2`?W=$ZL`sJ_^eKW`&)n9O@11nyEFA3nMuLTo>XX+U&u`7{A-o=ALn_U$x`;yNFooYcC?d zjfkfhd;i7h9R~Kj+s_~SzKP(!--6=tZKQFUV>UA1oL#Yd)XwbRKg1?I#RIF@z-!D; zzVMBY&ENhF+&Z6%#oiHF!QZ-|dygl1d99vb=M0>5zdns&D{k|A+p{Of&h^vAulEIx zn!|F9etvYmHN_r&oNG?w47bjicNU*)kI1z?e~~kL`Y!py&Me|42U;sQ?A>*ras7hz zoWJM%fH9F^2~n;Rok`h?s}LUi>r`BjaMc zHl|^Th0@rUe--#Km?lNFAhMbC)*w+Nf91#uduIXU6I|F+~Eeqw+70v&ku?oMky z$^Q}Q_hb2F57*Z06&vHN9&>YC{8lmNOl|jDwYC zzIc{%F>tm$&3k!e=ZA>%uOs%+2TS){sw3x|mm~7LwLwRHvi4Ji?z@OHdWt>Gt=fXw zIX3Mja&#q6_xP?q&7I8hhnY{r zxe+Pnd$_D$l2zW+OF4kyvAF4IPvJ}J51$Xk<(B>Mv3`u;E&tcn@K-s@Un17t%fo-q zSlsmqYnN)^dDch7ez`AKnkRAuzK=LND&v@?@J{YWWo7?2 z*^j%{py!C-(BH&xsJGZ7Ps*>{84>ktuXStl@6_tDCTAK~9F2(mb8ecmcmBIz=bEpd zWt|?Fy0)kL60V-xv%^PH8?6!cXWZ6T_*Ez0Mbr|W=zbZ&6Md~q`tc!0^fP_JJ8>45 za)AHDdUep#nl|P;9@%2^{xpW!S^BIO6E5ku=I@+;ANf4;HxXxz|6}AooW#1Ew6?-Q z^U>4(l{3$>Z$#ci_yIeP_{LX$vR^;=A`je^y({XU^XBX=XItLiWNk$3wU4b4!3z$> zVMLs>Zhr4?2ll}_B40)9g{yj2eCHoOM+6S~YMbYaZaITv@}>wRu?H>7|4H zS?9<*4A$E-@Lqc(<9{FVbZ*PF`R`8i&N%xraxPy-*60!E)&`6t!e3aLGyN!i8XD;Q5b-2c9-(3H%GS_(H@n}6g%h?f;7w;le+#_ZZ^zb}dTO8F+L0f6QEOJ5&8bIo#?Gko z?o|_FAjj0g5ufQ`mmc?V?cQa)!aFSd68qNHp1=HPE!bzjoMC^<#kpF9O)sYh4jyY)Srm-Ne%mAH=V zyCn3y%RA>T_S`$Sz`n=XHn+rJFLxRbIdiK#eoDX8rd)w{zQdo=zjHQk<)<1~1FZwT z8O!_jn7!KI^U<@n!Y=n(pL-bP+*8J8#r{!W)##D>+^fgN(^`97d3&gDIx7$Kc=hUD zypPQJg6Hnh%Wi=IZzBR9%)W(ShQYhI!eY*z?vuZA0VWumqt2Lvy?eJhXPeH>cQ||J zxX`=#PkxLXjolG{{_>smzkg?~)Q!BkT5*){ppDdeiL<}o<`)mh&lS5eHl6Od;b#WBRbi?_P4)t zv+VVEBN7GS+WbYIS7aCE1G+F6ZAjxB3ov zDE3>sPwAtYYOOxS_vk~up0j^TpIb|6WgBPx=3T{=?T4@&^;<0*se>&aIC>~%_2FFa zZf`pGtIUCPw7jh_igBiyvZuFIeP^wfcuEu~9RxBjRU2 zo!uiRR`Ih#KdCO`8Oz?i`qcPGFf^xMWn5lhT=i|Qm(@3Gbn&e*lvl<$wsxyHeHC3| z$%pd&I^*)ajorxFV|{0<`MAx^Vz?CZYklATeM1gDwI4@%)HQkgR6d>SyX}e1LGgJX zc<)ZJb4T{?55LJ+pMkBl*xn@1&RZ8c$4`N zv9I?a-qZvR#lyJ~c@tsx_YrGs*QT6vPF#PAIP*L*B8|h5?<_g=CQ@CWWDM)2yUrfx zR^vFbca~q}U5@Vcar?@-@iw03`0g9jK5@Ynp1fP5cSP{*-MTgTXumm}jfg$`H9sQs zc!zJ+Z@+i^s}nj#MC|RiPVOTkqNc>yKDtK4*^X!3o$u54l>L0CyLHtVZRcSa5zqR| zAGYczdvuM6*p`Pm2KKDf7#*{0V+2EEV0^1sl^?d{;2bM)w2nJ5sE>U9Lqz>_fB9@2 zn>+U6W$y2MV{1fkN$=Z;Gkjxfg|ln>7%Y4J6E^n6iohVw#{73~j(fjPZl#Zn_OV;) zY@WhSFMmelRir-g)tskXccyb4n}_c{(sdgSc8ju|f63)ImynDM^C{gK!|kM0ps$LH=tc=aiJTKA3ZUj5h4x#wLvPyhB_ zq_=q@*6Ku zSXdJ;{xmjotv5&Ta|=Di)Levv4LMOv&6hpi;W&DBh4<#!%HHDcH$m@P{Q>rKcVhe3 zrJTE@`(5YI3Kt{(&T=$HkBP6`I)e3FoWyX&5AlTi7J8n-ha|e!nO|%{b+d=cU?zsIU0D+~<++BWhu#9`t>8{D|z`f4vvltMS`=qjyE?1a=td zBl`N$zvvJQrm%o?%I+~mMBztt@pj`3a z7+2*(U2eY>;XQh`b#ZMk+s5pgd*Nt2&)FF9|FPV+p76~MKKnbXJ=dP{y#1Yr#}R4W z+KZzj->>c&|6K;2uDNS2@$)YK%}6X(@@Zt>EI;NQzv@mLj@&_N;Yi)Deyfb=pXIT6 z1Mg#X9L0Wwr{X=D+xPMJh~1+;$|t!*T9d|ePnB=C@N3o9sxNbIR!{2TKSzEQ`Q=Hz z%=1;m+INxHk(Z~ZHFMjwe>$z3|8?Zsh<)@r?`e+S5y6e;i%7o@JpUoW=l-q99Yv>m z-&pU%Exz@pe~!o-|K{^?WUog!LtoF)P_5xh0-jg_41Iz2GM-kh!O^34}(@Q%p05qV-CEY(ksGrnh< zU-W(-8IkstR~h#V%$K-uZWj8sIWn*Bjj!?1d3?T!%szN8XP;yY|0NFWxyG-N{j+?X zcYK!ny}p9`xlc4-oHOrPjCjV~i0EnFofp?1A~@pjePl#lMvm%mo^AHn8If{{x6T(k z9Q+&+IN<3yKJ|?LM6W&LG(LxsAO9(`&0+r?mNj_jqMt1~J>jrco5o{$-|Jb{F9|zG zasEDM%MaY_d>et2Z~fnSl~Z&4@ZV0bYhU>i_i}4~M0)quhI}yJv&LO(47;YcG*0+x z{;B^rk>5nvasIoAT(qA!3yXRBVEigl-oMEBb;R>cq&k`#2Xem@c|o-#RX0n#T@E|8&oSw}A?=axo9Nc&sk=_@-%XmKj+q}=`e{p*6 z*}eOA#lI0fmt@a3v1S)-7cL~R1$XN*5{foZ^hU5y?o|lxohl3=Gf!!oa5}aZnnCsqcNu! zFRk^Fv2QOrirJYF!6A(HTf2{p$gd;zbPcBZa!a1C&Bv|p=ltSNy$%=aFbPb;>andKZuc(^4_J~ftnd>aubPrkQS z_;C(XYeamUD@VBLyC+WRQ)}waez6%5>-cnbM9$gbzrCwA=weUr;g|7Y znt#OytC;ZBxIGLm`0M}3xOs*<;>_0(arNH)_!h%k<<9fy8j(vpuJ)Dkv%=-GligqC z$v=L|DNnrM%Xq%O-8XnJ?_S2EGwnyt(be4ZE>{VCdfbT2{j;{r+lOD=;)5-^37d4Y zyW-zo4$x1xHMrGP^?I5U+q(!Gdv^XI^Dwuk(MJ!Ti@W;yQvK&}JIBxV4o`ZV#W!2V z_QAG?X=Hwut?zPdniYtGt37eB zbKjo%?)A>^@{3bGn1de&T{Fg~`Eh#M>z?6DxxKKQ)T%dT-bG`8M*m0tudHbV}?KoQ1Vqz%$!17DK#tPcfRG^K#@J-qy-ix3#@q;T)aT=@Un1VQJicl`(tsy#P=7 z#Rtxcv3?Y5^UpdRBf<`y#&06Nv-C^Taid7kIkjA5#DoqqV~YcBG|zSZ9$BYWBR zgh3B|6QScsY+vRa|H(K#-{#r;GhhD77v4w2lRw69B3oX}jR<`+?>OZ*9-Qx5IsZ6w z&386^M>ZyR8JEv(?!Zc)GsVnS$K~F>{$6TK*was%d$l(*x9wfd^J$Nxy?l`;#Vk%0 zb4OxU%=mj>dGt|iS5|z$OKbii{u;05NAvAfbTo#oVR5jpxpPkUefBh`{O=^>m|PkW z-#-0zVw-My;C1d6d>_42)dnA%$MyTSr+GN#tobh^_LJ5XKlve6Uq`liJ2I#Dn4fhu z1~{YNd*jf&ADQ#tV3fPn9)=5N&;8rcE%^SQ(a&cwmY*v*+CIcjK6{s2zO&{#r99N{ zYtPNKaO7-b1DiM(&#TkB`R0kIxHhlHG&aAIpN;!N{v6SH)VFKu z7Vc~IuVT83-qoIPgqsoluzQ}%BeC)w@4M{#$Vy#477Lql;>SpPt{lQKochU(_v5@D zv3U)@u&}xPJvA~{4)<_7r{BnX82Kgd`SUJu!$wA=c(-@pN^I4%n9##FzVyEEUK{px ztPkT(&5y{|?$PhPXD5Ag?HRL;=iY52hY6bB#ZX>7&mQm)|ftVOL)H7L#xHk>-wlFpAr`yv2om+avGo*WcCPi-;coJTfA^x787w zaM>@19)sbW-q|ib{N14#**wP)F3Xd8y^9=))6sM1xPS{^a%!)Sv=+t0KKsQ`ob(E3 z%=6p(HooSpU;4k%gqOYF3eH}_C(oKk?AH%t{+4fgw%^muGj^@fHUBM8j^Ucv+ql}- z@wN`m#rQ~^dvEX$_oP@GOWcnLJgpaFb8^yIdE8v~9FgMh-{HiberwL~3zs7zp6v0h zv8W!u)2!A0$oSL9{I}G{_)b5+8rP9Atm0Zfd#`Uf;fFn>=g;wQ1S2lksD1A^+{?9* z`PR|7bN0-CxB5KqM{x1CG2GT>v%V>e*Z3V1aEQ4FF5IAgDqSYYhwc=5exR=^Im_|wX^2rHU0K(?a*r< z9sFrr`?ukFKb`hC^E@&lxHIn@Y|Y_$-I>+;=H9vm4@d0Yii5lOuzK(DTh5LM9&m(*5oz4K%Ng(X;83nQ+xQ>7 zci3z1nfuVleD53gf_k%8T{TwiNBkX;pPioPblUH?EByaC@~g-%Px57+uOimIi@c7! zJUy+M+phi7Y2EyZ8*g)kk9aq)-p1)kk29S+7n{|5y~M>AvGX<}pV%~J|Le#%5wY0IHT)fk%a$Yg zx}AHTxiQUe^LIY8UF+E&avt|;j^Gl{@{XVCldqoE%+Y&}YwP!sBYKOe_G%LzV>p`! zt2kD5t;Faq_M1zd{}7?Safc0Wcr@0(%AwqXpD$u@E-##Ej`5iuzlZ4UdGqvH6N`@~ z+4JLfS%=f#XJ15q8xc#ky#M0#PAA7@f`=aN--zb3}^0-*tO2{x17|6LD938TqG(xQ@vG z5rK<;;#Zr+>1_Rgfs`w`s-E|3Zu5>`_U*-ZWd7Pb{3>UP6-GXs%dIc6b|kOl$hEj| zEN1Y$K8?k#oSDb%UJc>s-1m$#&i0;E^K;$PFE*WrU5+@zcjul*Mnnv7r#8$xE0&k+ zkF3u^xBQhGZ19;)I^;xg(9MqL7T+Zta%C^CM&@Usx16XwT*Kzc9x1kS_R5Q#b?*Of z@BVr$JFYCTzxz`JiVwr2vQh-6ZTMwiQ6;iXpjafDC29OXAWIDxluQWFD-F+Q_xizi zVPcNYy&3mpX0h1f01GEh{Mmc$wRc3En??1|8pP0dPqDJsc+D5@2#kx2M0Exq$$-3a7DpZO!u-+JwNCf<&FsvkB+V6HWNXRCE~?U^vL7I!>7w{=v` zG=HkPareIs#MnIFq%9vu@@nnMx@snu^iuEc6>;|)qxYs*KMU-$zXY_Nb0UTjT&wrq z*?LLa)!5V&E&I*YdY!)wn#*#(l+Ud_^{2LbHqgTy`dsqW-=F^WJWlxN^i)(q8d{BU|d29^FIiu-9BRj?Q<-@V`<=)^xvJ(s16VbW&@0SkE6#@zaOT zIW6_$*8CnlciG@;uKztvFL7mK1g#-j!(H%gAeYT)^Vb;lt99?qG5zRZy*{>Za*vQ zoV2d#xuWSunKy#30`}!kEqbaiHnm$HBkgl%65qzHV@th_z`HsC_S`QcXuX(gj>wx~H1g2i1#h`4L~a z=yT5DP&@eX**WEl!|K`nB6EusZC+)5b?2`d&~^m0>DhsoK5;r*X(czU6|v|Wf%;&J zO&EbV^|A9VpouYBjiA2zjsrc-?OJ1em^%Xg`K6_t;$_U5Jzlt*&+Z7eKDT)?XD?6s z#le<#?bNS6vFfjG_!)0Zd-q)D?&&9P{@7f}tyrohUHGSCIU4gmPET`i+pB?c?pU94 zbQg@^n*c{S?f$MVEeJHa{zIUz;aq z8lNC{@-Twuj6*G`8@1kjp&sN6f4OX|M{4i6V(M9gU-w3Ni$hFm-S{=N_FR1BlaB1u z(fhUaAr`eE_SJnnGWXj0xyc&qUIvf(zxVT9){C`wgti>vuKg;gF0=r7bM|?fBi3(% zy?tnZtln$vyqK_ZrkC3`XCrpp3-`gfoV?DMT#45`^fqYx;%px8(;lby-bcpmOZDR1 zv2FzS0l)Yd7NF-!3g*(^sUskbu*d=e5;Sx+0}=i z9H}!r-v#C9T`VJTW_bFWuKjr*urUI9w8rn#ekz~Nx1MqQvOR)#r{`mG$qxM+Upa5< zRbHDrd-Ur-9}e`R%XdNRReyPnv}rik&`sXuas<`wNM7%=zMS!ROm2G@>}kwL>w;E5 zxB4?KX8TzGrTsHbbFS6=Ro2mT){*XC1Y+mA5aYno%eANo!i znbSJHc3rh*>LmYD5 zHeb$MdfBglx43(UTGLuJR&AP_x9P)|&Bj0L-?(UWL<_$`*=5rij4w|5@SV@#`QPx$ zA1~+A2&~!W>Z!F^-3#aZZuQ;MufNN$`8$boc%@e8G=uKyVOuwHNzc{>om;m!-v&qg z)n0SVw>BQ#dvYtM=JMq?w0bfeYRb869Pex9uX4JH-PJPzANy(qd;9*HJLIX(&7;42j^tU~^5A)HPtfJ(`tR_+ zkMARA+GDj)pY%|lYJk1FfELD_HTs={9|uSLspk=NUpQao!uM@!c%*#|?6vY{&$)Q6 zF2yo}=HFTnr#)f+dhdR7k{vQK#+0kzeZF*1if1_%=-vQ=WV=Wuo?}tlV&*}9t zb{?bIk=%{=tZqm1&&DT#Crz)(8x4Jn$O&!fhDWuiR&<%$>I#~-eydsgm^y5Jo9hqt z4D)x3o+&Hm%42JzdZ_o-zVABcihTbqpk4P^Yv5>2$?Zy9>IRNRYS!1nO>F8Z8G%Yzy=cC>zu*0@}WOP=|r51zhJ zoOkwj&%C4DR`=0}uNio__nI?#YVEe~NFJ|UOQYW3wED;C9Y6T#^pu0%8Dh4s-{jS` z8k)PkPpY$AI13sZA7WP@{HvMTF{Y2Nb9wwMWAb=34@dZ@pZ^x%_f$C)!w9+`KTTWQ zo-60{$h;YH@^hSx^0e};fa`AqPh91^HK9J##JO{;^|0c{+|}=&*3gRH?i>2zh_AX8 z`v{st?`p){-s$dd@8UHM)*JUU-@dYkj^yx24COK6v)tdLEk1d`X+@L9F*3g~?)}?~ zd3>73K0ovu!Pf85Z-eHivGwli_Y+@@^;Oz5$D{MVNEQtxNXVq)GQ3KK!fYZJz0I8;s!GoQF8FQC+XC zKRoBUl0$LIC;r~e5rcE*uR&|$XwC7*HXmxG?U8nKdMRi060iCF-<+JYDQ`d5-&*MN zeXx>~k$E%D<-r`<%=&aMUZYF(lTWof0`*77+S6y;yY{wL-lWfb{c2{Mp6poDzH_;u z%ZfIawD|7iXZ{|;M~(9D%);kg(6}12r#b9@6SNNJnxyjz$B}t6wpyy|ZQpJB9%FlZ zmd!r4V@G}c5RP=}HwV4w>pY;RJxp6qWBTwomviHH!4bPhV<^9J#9v!nt>0DNtF~6T z-h@Nf6K3a?T_3YJF*VSF!ia|W`ZN2dy12)Wq5&SvO=dSxK_){QX=6nDB>77m5 zd>QcP{qq2yp8xud8)LJ-^B>x4e3`%1-X6P_-?v%AzZl-0+H6-3{rG+z;H#~VHZ(tX zcXeLRMA}2`dg9-H+-Y3f*2(<{#LKt*=(kp$F8LoBpTRcmok@I%nNK$Cqw-*zAI~kn zOFUY8BkL}K-D+a*(i%5U{-E5>`KvB3PU~n5VqizxQ>^SYUh~B}0^{N|cLe8r(Z<|W zALr_Uk4xwtpik?-eEW-k^(KE}`64hMy0_#~4#p!vqtAowK4n+l%Cmb_Kke|t6L)By zJ&hZa3-7Jvkv3hui_5wZ$csMnN1(s8E2oXQs@GwyUwJDO##qoLjH+zjHO0<$fujTYKtHZTFm@hdB@V>hBJJzZ)lfbb8XV`;9I9 zhX0j1vZnj(l7{m>rIT92!+QQ`il07w z&S|M1x90cg8O#P>bN%mWdWkC=BWMlL8t#H`gLgr5+Wa*}{c7ENb4))vSg(&Q9QiTV zd*eQ*kGVI&2!4BdUbAi`=X=`WUj2+iYr|6ixr(-WjKufF5Zv!`o~@oVk~T2r)~?+Etyc;Sv`_wm-} zHcumS_wuA)9BgUVPW|c=tN!YSpYg`Dcb<0co_^xykIj|bilti07yooDM`PZ{>1hsb zc=I*aKsk4;Pjl{q5quL^C#SwsMo?YKL%xjTAXZ>YUObH(v(CGC*&Km7WXE`U@9DG} zH{L5czR0{{W&XCt_VPYrvl?pCL2R_K9yhUx^_p*4>-PMyO;b;~e(`~X2zZ$ z{@LfJf14C%`}lSCZTI#_U+;-8(-t=^steuswEtcD%~iYNQ!nhR4{i0thA|wfIsbe1 ztixRn#_7q9watgNdGy<}G15PyF*LWgi|fjj&W%rOxZx;nadqG7<4ZnA@J(Q?Ic$mJ z?}2r=`1gToCMH_hV{-U5V9$IutHJkauktTHK5A>rrT3t@{P^!6pPT=PkJj3ow5tn_ ztFh4!=bkm*--q@iejdwRysf8gZLQ?&+Bj*%C(ua^jo>-sP{(TCKJA`X%jyk(b=X*s z?3?F`$v(sfzwYbu7KfPZQ{&g{lc(Z)6Tc&P8T5Zg_s6txoX?n^En-k(^4|S5(taDL z2m4*W^{;~ND>(u-op+w*(dV0BuYT3l>RrapiwP^|c)8IM7wZc#JRXzVp8tCq^U=DX70|8zjEmVm*56tiX>ViKXU?^nzsee#&N|Zl zi$Lsrcij2sH|tHHK3BATk$HvrD{Go#zU?9JxY$SYxnO(*t>bIgRckhmtgY6#(XV{o zoZj`T=W%+bs|3e~Vx9w-M*?O0Cdo2Hn-ewrb6`S9{Gd-`aT4thFhp=JMq` zT0I_Jdz9Y1R% z?W+;&?fYx)kf%B~kN)mCl4o(tgXg(DL6@KFzwP}#zK@(~kJUo`(nEc!0ru_!S{QTI z=ywi&931hdo=4Dq;e3?~-?y#dk@hvP*UFnc=i<4#6w3&je``UU_JsSzyEwP^f%tz6 z%w>m9Ys~9C@$3JN`r&W7Pomcd=zLAy=f6~wrzC<&0D|KtbI%! zZol(B)HBTAEqbP`oGWTvUVI1BT77T#jrYcH575@0vDQ8@4%Qp@G~d~B^z4ws)jO^+ zl*h>0?)f)qi|_9NPAi%;j*t!38^Nz+nv-oPPuhOPD z9@XNDv~k0$WBqOZI(_q8xvK6X?Q5{*X>ECJ$F?!>+d11hyvx|iIUwF`jf%VbpHDv2 z>o%8Sz70k|Cz@>UMeFq8w>|&Q*?r&KadaoOF6rO9wt2m_{%JVZH4W%Yr~W=OhrT^u zTboB~o)gNH{)C$%sCh9>Uny} z_S=*Fr~G#&xjdqQeJ9qQb!ubVrxqS#dwU+uKDJ{=efy-UpeBhEiOF0ukv2CwaRrq`_#hTx64TX=fT&(cLC0O-}|pmV`2fd zD>k?bthZJkonb!)a)!gX^RPMRZv@U#pdGuOv}`}0e6!2Gb+i~k*UabUd^WqgI+yL0 z`?2%+q@Dcm%fCAO&w=kw@q2cD@5$bq`hNK)|yg#{XTi@-cpO*FZ|;7kCT1=+NZAga_5vE zZtCFesShXXA5-71bYU;z&ztaAnKWdVS3YTgLW&FRY$d=WLAFt*+qbioTp@6AomBV*?O6wq}qN7kO>b(^sf$Qe8A z((BXUCfKW)k^UJ+a&LX}A}+x5IrKQf@0>3EowuTke0DF|2Xc#xJZa1A2&#j==660P z=aW9(aXGJ^76jq~Mc-S!NTck$7~dDicJHF56T8X23>{X$zBd8g+H z%9B0d@0vQBZOh|qUry{n+_&dfYiKWCJnVaMvw6)@s&?=JYWRe3>u4+h7E9eYJ0;wyxDk%q!a9h->HL+rF*N zKgtUujLA z>>S^bIWuq(t2%65w?=7F-k0LJ$-I>uZ{udacKMm(_jg%+;xfmXF@o;vdG4$goAkDh zjJ|@2Io7SlOiAg@~i4h!)=^@+K#CEhU&*?hH z)%|~$SYHR?*C*HS0=eHikInDg)pO~StQkS~HQk*PY@Oq}S8KPKKY~3w*Y3re*g2{% zeeCttjlHg~?|XGbTM+ZV1$3tSAA{a0`0Q~~Q|9+<_2fg2e0TA!ZQfqas@o44mpk)n z6Q^p8f8*ef&hE+)7^_dQvn7_dfw}CM-#PRhfqSCo{Ixb#?`bhr8*Mzq)O*_)-}=PY ze3`2j_4z*27EAN7>VIU-4F2SU7QLIdTxf@r`-67;T7$bWT&g90BfytEwmQbf2wqQp z=6m;?zv<4^*T}pXADW(feDt;EXdqVaYO^_{r8X_)gs$h#o7;?yU`5B9%sW~ee9V~l zFaC|ow{2@-J4b!)ofEU&BkdQl`-gyLH1+H`r|rxbK{fifv_C)fsYm=r@HSxQ%?ake z3+7ssixKSE5-)$Wpo6mpA9{?yc>VpSw2h6Rzp=FWvrpj1fUP+OvDkb1M!*J}+Md?w zv(BFL{3&3!{pHYD==WTC`9ETtKb%KE3%ayVjLnaj{PzfQr{5Z5jrDEX59McM&fYn; z%@_Tf7rM~LIVNxX=^FtJajoun8E=i#?lyP|{ccWnR&0Hgxg!uOez=c7Es2GO&Ww2v zR%c_@^h`FtwPC%Q5vQkq^)JQ|w8pi2CecIP>9dzWZM_cI@NN!2Gf(-g&Nvz87e?@9 zz)tzH;|}!Ot+8z5mls_4gU;hi|BANi6K`vQ9lkGpZ;Xuh+xy6Rangc5bl|VC$dxu8 z9|z)ZK0ZtPCRmB9xf9!bK8?JWd;Q1(ZSiWJal;D_Z%Ej8QN_iUZx+T5|>JjCge9rMJx!sjOQ#QWU&J5pC8yqa6_0IqUNbMN%VUCeT! zuY1wlZ9cmHVB?vI(|)l@$A`!yS25`+W9ek#*Rf9-yP9t#CG#` zWIa6|TaWJ}wmseDXs*fr?%C$;X#K6`&3WgX;MZR1`8U!&k`sCsze`)3J@@Rpo^#sb zr%iKcZ`zm6ZE^4A#v1mzjvePEyIo&<#?+VZmtxQ6pEHi99Jp)#6wrh(@4r92(}wL4 zd>ydgyVJfKf&Gq$dGs3r+v3vxufc5JJa*U~fisJ5Ym7A~`bOaC`_Y&+=FN4)R(FO9#45(#L;Ai8`b}a@#~N2-_HHd-p17OOm-q6sxA$_@ zJbD_xIX&6w*@tJjUYpx5v$pxTlq>alt?h5KM*MQ}_S6=;xaCa0Jnhw%IM4mAZ4J_N z1opzbAK0gF`*Eiae>Ai1HW&dNn}g=ae!S%0x*2S%+t!1a`D8<0%L6ZQ@A13DL*Dml zW2Aq^Hb%bf&v!xhx+fj@`z*liFM&S1={ADiQ`hEvFPF40fKblKYbA${_qwpw52(C3n`-(-9QzMnkdqtla?G<_Gag`XPheiKV|A8D`nX$`40 zdNg0`u-9BRj?P!p{IArJHQig6G~~ZEM<=z0hxPMs5q&F{H=KQiYM%7u>j z%k!S5m$!q%A*qSLaK9?=o*M?paTKfSxNl?$zDa$B3=H8v8o^YLkC^sBzF!{A{x& zrmf9~_S$M4?D3b2);zzs(Ow_Fp69-4#bfRW_F`^qa#$bcKQ?db@@3#2le-aoa(aH2 z=k2L|X|IWC{=N`<;}N$uE%eX#m$7XP9jzVw)WN$zZa^)_i6_mTL*J*0{pZm6sMhl7 zd*g2>U1=}3bZ#Atv|GoYr)|%E7g#GN<~xVwi-zjkSabJKUB6G=?YX_Xy5C&t4)2?Q zrbl(9A77sIu|LjzTk%JuOFr!_bx-ecdfEf}p!X?1V(H#7rcZw4q;|x~C*S6HXB&sr zZ?_kjTde5xD)aH;3#yTOYy@=rA<&Q42yl`wTF$j87JVb2t2MQ&uV)cEeA2|YSVvG_ zeaC^G=601XoFYi5_R^!HdMaLJJSFFt6*4SR&M{HI@ zZ90gJHrC@NHnCpwHwNqW{IR{Qvz~9OXUm9<8GC;CS1bJeBT!S~Y@axtecQb~(%1X! z%e2K!i|Ru6J?+&2Uo;y*Z8u);;x_N^C+JgGxET{i+s62{-h4dGQG2-1tel#w+w_f~ z`Mky+?XCS|z~5Z+z8(3-m45aH9yER(bZ_AJHYjKOx@OCbJ>Q`>!D`-H`<{C_80nw! zD)0Pn&t&{?8$mVI=iU6~VAjtVog3Sn4`bFf_gkAZ`9tvLgpns(?}GU^Ax*j5wz;MSVpyPC9|q{BlBid z1OE8plfMzz)Fsgd&L?#(`OD_`kGg<{3Q^hyc@Hw`^^(S z^Z4`5o_Xi|(**8({OoBty^;)WA0a^;<`5ggeo*1Zfoo8#K#2hY9z zVn2+4E}&hFt)KUfvH9=Y;$De;u1z+s;b%S$)dsi5!>)X&kLF6B`D(!!edW!1pusu+ ztM|%?jTz-P@7GIbp%|?1cZ0ce4DaJ?#o;y>!8twl>ZNP!hnrxv1}@e65&h2j{arY{ z3wnmC3vq1E5_Qq~Ru}4Jua>P-Z|Z8Co@`p%?_6#3?AtvXBmFbBHB8f$b?0=#4M%a$ z=ZQYP)b$9y3Dl@LY<16A=X|*I-S#%)?9qzNYT%n}m4Es1Ut3!)a^+k#mmjtH-26v; zbT7V1ySm`G8k;q(x$QZy68E)va`*8GawiWXc+NQ7d+J85cVF~O#a}KP>yg@fu9(i9 zJv|r1re}*iVt`p@`+#3{VT|wQ_S{`9Klj0HFoI74zAoJZ=2*9? z?a162V#jY=zvhUMfB6^z{@$JW^SP;Zs@+IitTd?>G}7+hYP8K~uXD7UL-T=M96XKV z$+mYq*!XSGGehp$o^5pQ$T%O~JARk;2)+u~b5_UJcr_gP=gcswSzJ>T~<=A(5%E1+Bb85i?*uZ{F=W7l^?^H*6%(^*Hle-VhC z?~Xfb{4Ijc>T^Zg7nxU>zp|z|=Gz|fj?3P+$4Gzc_}X>VnvElCTi>|R58n~I33@K5 zXMLV>W=;Fr)-UHYy;OI!=o(sF!+Aw_ocR#Pe6R53%%zw83SwwZaI&VgYE0h47Bwl?U@mp+_tgCqWGuQ}#h8;|Zi z@yV&VeED6h9*?d)%Jp0h@mt}7JKj%W=Q(0HayC2^&k>tPV{1LCpVnv3HfM*LvS*Cr zea-w;PB*c;dM4mwUyWdI-(PcwJk_~*^mosZJd0Z%JkRY3y7=a|$Nu-=tKbhOe39py zz}R=e+u-xl)0n>P*uR~|^?w_D6PU-Y^`83J{XRHyrae{*^+^x)sRr1)3us}?S)<=M z_;GN=pL!la_l5ISE_~nK1V`ew*UFnc8lS66v5cVkw-&@{PuRcSyI=pBHrx8d|6^b- zJNm7mP45Z+EgWr(yQ9oE#~N)mw%-qzxSrGNW$Zjgvm?11@mbxD=AVsE0#BM=lQ$ar z29Xom(hZMlQLX4Qx78IiZ~a!Y_AzzX{5IDg>KXQF;_R8SvcDc%8`VR-xAuM4IalQS zZvpMP$65nNYf5g#wGtaX^*7SCch!Je1ZM}{+kHCHr|!(r-ivW->*uP6Est|Cy$`)V zI_dRYo_NvKla@4WTP=*h-6%gG57pdnvX%UrFUKROFFw?p+|?iZ&3DgkeB5m#C_n8t zLFcn`G_U+vk5_%;+CJR+{iqM05%kPGvM=wle(P7>A9L>EG^2TBQ?0#^m}Z}kjfd81 zjZN*N`Q64%3-){y$gT5F?tAVTS66aw+!@(+_pJ45Mg5zj2DWuk-t&2Dy*1Wb=ly;1 zlM}J>4UI$F-s*nBYrFr{te95r>6^@3ITuFe&A?-O?!V7mJf(kHzt7wr)qHyn?bYO^ z^Uv?Ge#gwYTxqMPYW_a`%8R2D}TLiBJvfS+V{Q(8xPn8`kD0?-?<#9GaRP3J5 zzH!9g(Hba+)try;JQ~-vzE)$Z-R`@;hGYA*X)9;;vpj(PXYB8RGjIeC#l=p2s5ATe zNUnMgm*cAT-^X9qZqI_38JqtuvvM9>I-{LyV(Y)N@K>MJ4F3^SH}BTb*8QW#x8Dcz zJu4^XpZiYjo}qQMs{TiEd=on>y5P^Zy5PtDU5QnFSc{|iU_A{y#p?bP&r@jMc&>@5 zyhb=QZ*NX~dH^t`0|hv_4j}IA^DO zeB~^m8^6CfJ{v!Q<4y^BgkMpOr#qI9-EcpHD-JYhymjNBTe;&BI zdSB@`Zj4Pe%hsy^KYg@=o@1VT8QbcN-#Kj_%N?h;f#-Aj`7ZWp@Q;92ttl~osM=gQ zqn}!!!g%Z^R<_AI(`UswW??6F6Dn@-cdc(SI;c^(5-)C ztA=W6{_kQw%lkF8@locF;EzFVdgr_Q(EEKLulApuYTJ|By?LL$5!f?5JFU^TwdwwK zMv2XQwd1@Pfw=Io#vHclbEIvqb=rG&oi*~X^bmY!t^P#=#a&k=^%>iB2pZC_|H9l{%ZUlR4)Vi3}qTI;}U z@!{`dBd8C4=xM&O-=2U6KE}-zyLz)n*kW6~nD4v9ochxir+5END?8?W70^yzjp4-x zUfQ1ppH5F}__R;W*VbnZ`|PsUK684$S|cW7?3-8Kox`Vi#E&Qa%(0ez>tO^BaetLL z{PW{G=5@fv{NMC`ocDhX_%()y7|M^#BmFbB{Mn}i zUF|=4+vaejuV=S$ux>lg_Y+&VuW%WeH>2^1m!9(fE~wAyE(UzIn#;uzzhb9$&HA zEf@B25XT7ixPOuU*TElyo-arB>fPht#J>&r2Dux-p8v1YkMG`^S+k>if?v6%k37<3 zuD8$fu9ik{sb0GmnyWpHYPWaCe3v^%#fgJ?wBFWSdC-ENb9dCp*bMW%SKqDOyNvNE z7w67%eAqFU4)$Z~zUQDm^F9sAb=FV5@UBK9?MqnUt#qpx1x~j3+$YhIvz(Zg6z+AKXjpL%Ox3L(5yI`;8-=u$DOY1EkYgaUs&!Za96@OfM&h!o$>08as zIU7fL$%A^32eoqUTS*?&8?8rBzMrRU54{aO3%(3!?%$s;)!DUvX~p-zzH(Eu^4$IS&|3TM zDR|P=y~UqA{1D(yJ7*VucwVZ#)?4Rn&qTH!(*2z8r-~D&*0kDCEB&^4D85zxmwY@` z9P)vWe2GKdI3wiIc}_=lWR85$y?f@NI3HvCXnZ%}w^GMyOsw56AM$zhd3Zil@4uci zzn(Mwe(87Ehjh;LEbqPRjKTBL8S>aOVDB90UD9tL&z@&{f1BO2F|uYx&k*Mcd#k+N zjdZ}Nyy)Z1Wz(K-4xLx}`Zu2W9HuQ>cfpqd9%Aa+w`uoIWux(~@~j;`YeyS*w#wNZ zVlE&4PXBXo6*~^wZ}shW2#r4kzVz#NgZsB_{8n_IYvP-%VPl&ccIe{o6TTn$1byEJ zBd`xW)lcWME#K$r#9cdrmqGt;?eZ;#eoI)-uYNv#Gd-qWN7k>z`4s+W1FPQ#e%BN$ z=f>xmPY>r{^SH8ZWd4jJ=ZN(m2lv5KXvL0t=$>~rI2Y!c9(k{?w!1IA@9kav>c+XM zO($#K1#GLY5!?sjQQyY+X`QLx5wxEFk+%KCU(d77@$Ot;N87nbYhwYiEZ<`;n{1k}qh(;spX58ofq1?{@W<^hX%JW>F)k4pr z?VRR!WR7nF^(GecJx8GSXx6)1%yP%?2+V7J(agJXocJDr^|Q^|XsxMVbF8sm{|MBk z`%T;5u8pzNK7MN(ALAq7Ut6DXcKNK0acUc5!#Qp~zIVZqT$am``*_6XbJqM`Ejwq_ zGd)L8otlH@kZ#?t=Cwx5m#5~qIW@0R3#c{4^Y@8*wSw(I@fsZW3NudO~CZ*`mJ=qsO& zd+$BXE{$LWD}Kx~-`x4UU|-FQ;JW}%7{Pt8Vw(+fM?e#L%=LZbY-4N2Io)yX+5M1) z+w;d6Rh=7id9x*UxuP45R^oV(dBw{7#zjNE_@^P?&2N7{sM*dbPg>if)|Yd2(6_?j zh~3-R9s!>GLAkis>4~fJn0@2;jG*y&H&2{$L*s4V_Wa@F<6tGOk$E$Y#EI*Xb@VyH zan_SI;-wueduGsNd%xm&bnQ{D^2XNQzb9^7O{wQY}KK7oY^;6hcjo~K# zR%+=;osQV5?=_-)UHhx~Ru z-nijw4~ef&XVW>`53PG&Ia#?Mev>#xa75?#QCEAp+xG39^ZL}7+-=Voc~ocgaTXq} zv*vL{hm~A(Fa45oLEm|gulzS#^xo#so^)=oiB6KlC&2 znp|Bvm;a-jkC$rjv*h(LHMnvn{Ik{HKSNEeob$iLJJ;FVZy)D~yY)l6WAVdt1V{Fk zb6k!3e)G-X`_XTa5jgXE?i=s-gZqlF-T`zmMkDjwW&cYs0)6faK1SetSve=nopH{; z_?>CZ6D{~SqQyt-COE9)QHM|*l7)#vua znGSyq)FS_M*zK_H4Xib0zP!$PdX;zkS|7Xqdm-l?`{v>!*0%i} zWY5=4`p@OKJX=q40=4PMNBi-n2~Ix-*2&Wd8hdrJ7AL+(@Kw+;F>Eyyul~;I`r7Aj zt7Ex}!#Pl2-=s~e>QlScv*W+FVZR!FpY{k^uW!=s8nNC4=QJD{n?WD-$G^4Wq#GM| zLA9)Z&#lJhuAEKVT(Hll+VpRC+O*-bHD+uCjrCmK*y>tq=;57B8Xo1x22I#&J@09M>&c;z*YJ(Q7nSN9Bz4bs#b^rHZ1m*jA+G_Z1@LBL>@Fw{6fAjYL-_vUA8oe*o zjC>!>`F8)vEnadCa;)#%*<)N?sKxERG6r|S>ww+)4tSIIdF|fWYVFE?e(ZUHXU~D| zaWU=bG1A|f|0->3?T0xQoUOMfs--@2y*u-|pTxbAzma(}wz*r?>h_?&>eG0|;C|z` znsrX!_cT1G1Fe4ujH?wk#CVji_59O$d(O&Vx$eco|3i7h_mYpJyy+_L+NVdk&bo@> zZ6HSXhj~YR*8WzDOFA9(^<#L_cRmZmDsJ)h_sq(?RSq|?yRyg5?J2rcqd5n7&$VKn zzH{7-&*#L*d(RSMa2LD|wi>-j-@NwcIxn4dwD7xq1n2n6r+B)b)#+n6%k>DF2extH zXZ0L1AFS>EvfkbGm>Q`jpT*7yuGQqZVyb56>RQ~FzLOuT32kYumhFjO(%x7(FT^MJ zBe;}9@vqz`<~SGo+i9e&mRe8#n=E6!*W^y$>Tk1=xij|aV%xWO#<5XOU!~o>IG<1U zJ)Ym5p2qO~E)WAvjMv}iX+NaV(Ql;@+cR)`sP@HIZfaMa?}C-J_T5VTjLf?Py1LtO zm506WBRntFUhk{U={xPWxfL6q@}Rcm%=w+9_q*(`M|q-=Ak$rWBaM%6AK>IQ@!lfl~~>ea{AbB(-9jpXiC5L z`TaQi*S-l>_BVa-?K$!xpVOa*=R^DG*Yo$kf6qEkg!+9cNhH6!T%aqf9|fSj{W`N*>8ziH}h7{ZM<-#8GE$a%i~D@ z3}=&g_$n`Y(zQ9Ftz5CMum4u1ue|LYwrKD+Fqa+kJ7<+s{naNs+OzKX$+x+DsJZg` zCT%skU1KhNF8y!T&vE}g>qa2oo^Jwi;U?DA*s4p&`O^Jn{x#>< ztIX%8=PvtCbw1T$Cv37t1-6uy$x3GH{81he|l|o zyGHkixW0{jdx76;c<%ASm;T*X?!WDscnx=J*}|`NbC)*G%_XfmXPbxBJI{B|2wnys z;{WX!xuL6i68EL=0kvlyP1Fqy&*`Nm$7xPAoOQm&7VQf;Ua588oW;ug&of^w_&)ER zU0F9Wf5wq-7VAF_?t^o6d5vD|sJre5d&QkIpI;;I_0@LoVDIuQ$MZd{UoQX8K$}k1 zn8&vI8Nq!Z9_NEGewzE%MbDvsWX#^?ulufZy!)_{W&uXFP@ODn~ zJ2J=bLG>mU^F2qP_GqRqS{ri5?+DCmebLOjah&)bf%UUZx|vgZ>en1=tk*vRwP}xN z&%ce^$8T-pQ_gH_>#JQpYh#?+#@Of`itk-;B$tg_Eb2rI`ov9l+Tx(UV|W_lSM23# zUA23zy>KMP5neOIDn9YzTh5K6`4p$N_`CPV>D}0`XXpQ@>qE7)qOZEzJHwu)HGN?H~K)*R%J3+%LTc=I^PVxoT3~IdgxGJ+W8IzVXzvvvUNi`=a-A zZOe<6`u4Qk z_CVkJ-L|5| zUe2GY9{c^xo^L3=R{zd7GPgDMDs8cdvw6Eu+kWY9S!3Hd^ccaGhrXGIcWdp9uG#zd zHS^f&cjMpEb|&z>_l?-N+3xqGz9V%ZzrOX^nZG${TKn}Ojx8U4M^H`uK4BA_1^0n7 zXat`G`uW+~;mdq;s{fIAM%K^xbKaXsJAVtXe;174y8urZ!F{k|n+BcFld-!xHSIzwD~oz&)>=VHvo3|*DnUT z)F1zNvT5Jm2e-ip>}6cu=YIbx{_vGg`j)r2M$kOt)bZw^dYadms?SQ^#9E!V>-l1z zou0QN?T7R>hb^{yx3JTAYIme>>+>PocUfcISEsew?A11&wK4BCTt;AAJjUJy{8z7; z%aQ#vVrzyx^5Lo0>gQ7Y=HluM={cegw-K!5luvr^#b4iYjt?Irm}B=|9?l&;yMJcA zs`I&h$4=MbGw(ZjT+#SN<`paRs~K)$rGcE&1eX!~m(x>DI>$VE;OV@uUaZzNW_>uU z@c1b6M(|z0F5lf}pQp`c?eeLOi`;u(@o|LzZETM~EHkg|w^McS_hj>MlRrLjwSENE za%=DIH0L27A7|c5tbENl5<9L(*3s+;NBiboKpUFTxaXno8t;4G*5>2-nDs|F@+O`>o&D!*KeXJ$DIq}5pNKKBcUsAZH9{Xc(L~Irvam%hiZ*^iI$^;Gdb=J%O8ea!l&iore9?@xT%-rkk1J$38+?>%TA zisdQnJXK8UNUeFc_Qccg?cQPASj2I3?NRPG@p$!i=jMT@B$JX6bd>`4%KL+;r_O4OW&LY~q@83FK#;5ZWH^6NKuY#VJ_&H0R zGyMi|C$5|UEA`O*eI!pS9FEu>iLbo&@-L6o!`;%qiEhtld3RRP@Z(_5mT|WH_toYc z;cLII?)fA3N9&Ng1gzX;gE-x)lD zy*2u)hqg6)Iq|<$z7M_%a5$F_evMbRx#nJ{pZ!^n`@DZ2;LY!z@6Xe(4(U#_b9FT` zHlrNMx4E<4yoX|Wl{wXX&ix+8ZB6gZsTR$(8Ueg;^pxxN+oRhWxlP{)o-4MS*k08a zH)on}a^?wnV4}5#7YkT}{fM?g=r~MRhvonHo`WmA- zzd+w=L_0i3@Ry+6jCXIc+dO*KhP;XECV0$#>)%>t9p#xH-z4RQcWXmDy?0yhU!_mK z+N$>RH_f?xJ>*0F*u+P^Y1Z#CeYnz#Ha`XWa5|R{x?OAUHfu&8e*SP4qj&yj_mIy^ zYn#InJC`8N`V)g#yl*wcv1ezsp&O0xmM8rqSk2#enQOhZ^tYZZePWXvI(!@GKj*je zzQ~*{Z+7ZKeaZdGIX5zI#--fPV>F?k|9=Ry=_Uq!;@qBZ{mnhwkO!R2m5--5Q(AAA z{9LN170qtKb!DDB(t|FoIc<5IzX#15LF=JS&6yVD%=>wo6j zdSi2|C0^eLo==%4TxLyi5XVD%ab(V3Zuj(llex2xhcvoW%a4g)j+!$*?UxY9MRp{BkLYpXKKpcvLB&)*M5+*H$ii2Y?Y_E^M3sh_K{lN#v@-N_~i7Q z_vrSFs5YHLBYn=lOM7`GuOFTKf0d_w^w+@o=_x<7)b989Nc+;?b&Xrc7M>&U-aNDC zJ{&>gG}jzsBQRHN@-JqwsyD#JeCOv%e0z1uKHJ86SJbX&zgKS3=3~!Kb0CHh%x46B z#3P2*^PY{7@flmLw;5kq#~04fTG19u_mDdA9bhg$?m~NG1m6TS*{(5HPSme4w!|bS z?$x{CZBU==c24WNcgdU6nB1Aa8e8vgTxj`AjidENXWz;6q?dT;vHeCf_7wT~GIr!p zUTDbgbLWh&#yH0-)^fn3b)!Ak>b0@^I|iR1)~BkyOL3@6oYiE{0<|qh{KeE*#rdJc zWdGuWpB#BFZ*hpp{x*J1{XJCPPG=XD|I;Ojud-dFET^4r^VktQ(m>LwxcCVx*Dwtkd3kIWosL z)_q_;UGP~s*Y7iL1lIKK6NCMLk6hp~g8P6UwNbA1(S3sJPr;nK=Iq@6_T1X$Tg-G6 z2M+4zK4=|$k~Xe*ZMDIP9doQ(&H2dOOHgZUi^DxTg6gbo%|4iQ_xfzJ9C5DAk#>D|jT{;m-(4_*y_m(wAC2v^t{G`J z$IT;~jiq|jule_ZJ^yLY-1_ZfuigjE-I0AXvVO+P(>we6=UjN-(@8uX>s~NV-@8Cg z#Xkb|2DF!-&XZ?zTQ}y@qVvW5l=0DW1kV-UL-D8`@jOLLYU9trL)z1q-aubD&{k{n zUfFV&lm9JHZ_YH_;kSYFM;%*l9`GaQe(QX6dVk2Ty4(7_N#7BD=pa5k)X;};4^(e^ zomP11qf^gxe7Aou?S6k~{Yq~6*=i$SbiNPj>yxx`bY^brgCF@e$GV<9BkjlF>#S!R zpS^oStvW~f1~qH%_V=`PG&1H%=hk`8)VUGx>gN} z_kEt9-#p+?ew>x%*jf;ae2I_#-GlfyKjJWEZey2McmD|PgW8*Gi&pyCwC+9_0UqqD z!4dp>z&@KJ@J@eoz}nVCYjC8GUH1EZX`S)LI?~>9*EjoOcU$+(ceSW}w%RTyocUza z6Ca%Q-vvkZ>BzbnZ}Z-IHQ}KLvX+HVz_*xs zl7|sk&nA8}u-1QPau*!Yf)DoD+vd7{jNvXGZ9c8@-uORG`#x}2l)E_e-3BB0InL$& zF2f&pd2W72+PHSlh{wBm5gm9hlezz-<;>} z<=W=2yx9`F8mAkLj>N&=xqYPu+2^xGyfjYWd#4s`@tDS1AlwG z5B^)w^QLE)ec=51I#BmLYt;ESLFdo+{(buUZjm%5+SAHVF3V7r&}vDJOl_4-@O z9cOFxY<-cr#Y%1CwHKQ@!XFpFL44Y{TGx0-+W#f+d@6f<^e%r&o4p@!XIDHUcoQ@x zvFh`bA8XpzwtoEX0{g6M_2KUO)YwySe{3F)oVz33n^R}U3I}UuT#EfDr`5W6jQtO( zMvla>lB=7=oL+m+v}UedH|O=p+V`C^XJ*d=XXQ1VFM{+-6yE!Po`K;Re8$SNd zw}*ajf1Ek;vyF2?lUp{5Qx)QzmbfyK?AzJJ3Zy1Ir~l8BUs5#H8cMb zj&f=J;09+$8r{a$IN8IGZnT>B?j^rnPk-F- z#UJ-RSx3TJFQ>*h*ovBX}9~zrj0a z$A2SJn_^H4p53=>?)m5%Jk*uF@z5H)R`N75Z^mPCrLNh+O}*hNrq*8HjsHua4z-W^ zw9k*Ot)}WrUE$dCgU)#2zP*o)-37SIoip89b8iBgujp<*zjCRD+0#cOzWHIl@fp)M Kg6b@OKL1|~DTGu2 literal 0 HcmV?d00001 diff --git a/e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/header.bin b/e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/header.bin new file mode 100644 index 0000000000000000000000000000000000000000..b4a33c1a46cc8937f5c7a37dd5396085a07b36b9 GIT binary patch literal 100 scmZQ%K!6kk6U^!nfC#j}XsG;uD1ZtxC_u$w{C`c_sqUiJ?P2Bt04#G3H~;_u literal 0 HcmV?d00001 diff --git a/e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/length.bin b/e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/length.bin new file mode 100644 index 0000000000000000000000000000000000000000..cb3e1628bcb246bfc7b4a4b378b1586758115f3d GIT binary patch literal 400 NcmZQz7zKkV1ONe$00961 literal 0 HcmV?d00001 diff --git a/e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/link_lists.bin b/e2e_test_output/kg_vdb/9a19ee1d-d66c-4220-b75b-ced6a57da5ad/link_lists.bin new file mode 100644 index 0000000..e69de29 diff --git a/e2e_test_output/kg_vdb/chroma.sqlite3 b/e2e_test_output/kg_vdb/chroma.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..0f0dd6ced130c1bff68c4ea6366aba526cc3c5e9 GIT binary patch literal 4198400 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ΠktocMfXc5@Zr5fbf@q#4(qj(Q|&gN-plthKT0$ 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

    N4dsa~llLp$MqLIX1q%|0$yad{w zt$@}>sO0Ivf$!6_2VvAkTM9*+LN#3JVu%d->&V) zH4o=-C3_4n`~j;jHi9nWx`W0AA5iA_>!V9G{zYB`x2HFNi?7r0bJI2uv(uI>nSU1) zeDBHLfSHd<;dExY@a%m`9GjW!XJ&r&fBw)bVV3WO@h_#jihz{ zM0rf}D3b2;D>3GB*ZG?`>-{%abRZ1Pd!J|IpV-7M8{_C*87q56O5(V>lZX?_9L$Yh z_K)lT|7mG#r?R6fd-RaJxpe#Zf4x2GZ#NeI{q_Onu3Y78G@YQK%V;y^hW^K0P;|R7 z-GW3n`TfT&lK-l;nl(0^8Jad}+?<+|M9Qh^zuicsoXS=%E7V+TsJUVLzwHP3Pp$sr zcgo72`rl)yhwl)Nn&*npqa+6Q_WB=o3;d^c{=QS-zkj{vx}CD1|2O{^I>Z9Le$a)R zf&0X|@}+X(fIYA=-%hrfsfM`GwbYr@wB@s?n=s+%xB1W zDR1V$?5xAs{@q?N@!=(vu0CnfnD%&W`Wf}sltFxg<9*oWp2@cPc*@$tFJm=J!_a9Z zn0|gB)P6A?Egs~9>fC*mjeibTecFRjbA9*?HV(`F@&%{CwfTkxdmwC0UG#{)08u!K zucr4z&@pi7=_)*Q$6K!3y9(C+>?FUi9T40@TgLYL30A%ay!MNCO53>e*>^GL=O;P- zk}Yp{pgmjuFiBi$)|nq`F%7=@4P=82I`PMGA@E|)8Zcb3RvIL=l8e6$<73{3^GK~} zK*z_7xsAlry7O@JqhI)^vjN++seBJma04SIl=`f15)n;OCQ zu+_}Sc@n>BQD4>MzyRp%F-XpS*@ND}=`F5J?}4ke{P^g5wEo#~THX5CC5-5(VUGTliQ*582^^e)fL%U9Wy*f_S}hCWPOr-oCyk@9HCejIQK z*wEew;C1nM)lScBR(j$McC1wdDbV0#`rVo`*D*-YmxUmt*GyWHd~{Els$on^wTHpi3dyj1O3+aE{7?#A8c4};yU z6#Nv|Pb&SO~Agy{4kUCwDmY~4Bo_CgRwU{NvoW}d}YxcLG38DQ}sTy8X|pu3k~06Y-Q1K`1C6W zO7Fx0;RJdf%Y;y49oa5uE56&aoXJ(z;!xw^jCiCT$gMdxHgxV+>GOuyGw-YFOa zsjVBr98*(#Rd9qAjyx*r291%kM{L8OgfvW@yO)hAT!~5z^&9mEod-i<)VZeo(podQ z_vQttXwz8s9KDby(0X!2Y;zubwV`bJx(z-#l8^e@7SQETu2^VpB3m>vW53Vr6=%mB z68Y{LJlu4dynM%spLkRRW}$P?ZqYO`a~zY|opfZ~GDh?L4omeG^N-iYx+}c0PBP)A z_W8>lD;b8I(~_i7c-`qRcks7iC)pp2GLL|ny=y7lL>d#jykxE<{D4PDUAg$7t@=Tq zIlPwDAa&mQV)kRU4$}O<$$_>w&CXNehnd3jt0Ny}dm;>U9OZe8|0@e(L=<$Ug^APmV33!LRwzw789{1LzDd2p&f)IAv` zeeHg$%zrFaTZD|_JFrzmvxj;eDF};5FbmDr2LXFyg%=J;Y}3e5m#v_+zhos>SZFYT7-0 zr@7eXbCR`x*Aie?0)I7oJAUt}!Y)trSd*_$Aa!m_)tjzGcxz#qf@MWVxMlh-@&yxY z+3p0sIMEk~E0VCTB42}X9MKs}`(Y;51P8yCQqc=iWRT-<}e?e&Onyd6hW-fOJ@;V?NLbEFt-0Vua z>U*0=p&a{zJcy(}@?;$&dbgN9ZW{TCFB+o9bH<0D`HyNwScgYj>hOb$W2trmLLCdy zadT5_+Vp_x*zy#7_BjvYy`Pc}bx<%Q6(8BssR2?w-rvU^v!Yb}tOJ3L z#llCd!R8?nul;(-6z_BhErp0q1Ayj@PjM;3b0x`g?a!k?IIF2kt?M4>@WK^;6j(^o zX!>0zTy?n;_AItw3SQerPliG3hI7KF>abQSl>K#CEN~r+F_B|Q&)w1cbuF%Ny^eox zzWU8tY-yz@vj&!l7Yjk&?)ep{-pn*96ZidDD=&W-DB;~Ev^%u~Gu>OsKPQ@S@?I$M zT7dVaxPY-y6aIen3-CJSDLXrFV75;>%BHD?LMy&4>fdq~#4AuTOv2LyBo0XLS_tG1 zm`Cp)Q?gF$;hI?1^#M|UM6G~l@V>nbnkL!G$JZ7!MW2b^;Mc=dR#dFQqUld5XP8kP z-=drGdsLTup?ktOT<+LZ@gK$G;bHCZNFH6oNhMPqFWHPUtzB@=&)Ljz^A@a^>calq zy$d(@xf9N^6)om7dq;K2?pLUa*u5Vuj8eqJbEdNT@kbnQnu|7cuB7<`Yi`(}3yh4m zL8=e*)hPhV5Uf1V76?;Z!R);}##Z|TNPDYvdUx@AsBd*dnMd(*haT>!ihxe793{;Y zCO(W1R&L*D{=T!80akpMi8m~E52kFi2+7AWc9J!tyoYN&&#SiHc}DLK+lU`(cbD!x zN`Su4#*Vv->#A%O9|!Uy?v=9=DYtRLuOts8o=@WBXOM34OwfF=_KmdV=R9LrQH7v* zA$ge`GAWdw_KD%daqidSAl}-s6GnJgD7i<`{^P00Vd4O1-v4(KAdkT7>r;TV3!rb1 z>eRk+^_jOrYZtQVvqkh36OQceLy*QVK>1oD6a$_y&M&^T1Q zoN}~U!TIM4Jz?zbDM%R_*~As>Gp*Be_AJJq#ogsc%a3@g{RO6Qi1HDy=y?a7-R_Fk zzx~ywyN0pW!y_eSDjv4Cw+u0+`yTp@mebcX=9FVG^`(9d$0^5wg3o%|v2etqn;i7; z74$!5qG%D!GS38>d+Bc%;AZ3B0u(OLxKWeNTPvA#ylGq3%`^md4IL&gcYX#T-{wNT zNpmGLs)*wv(Y=qP%p}M|RNk+nRFs#2>a65p`SijhIDKa~kf*BWP0APJVy$@eVJ{4K zq1zSqEd=sFWgQ_%AEA}Mk$ls&8_>D{mfSN{Yu6K${pOKpJy$P1JqNUxt;5C{+r^ce ztI+q}TR8uW^Q&zxBY6vG9ygPm&7(>)$$#gm)PBW{FhR3FN7$eQ}Q<-I3|JR!UZtiq4Za z$tFSF+5mFXGo9Z6&Nl0czF8^OtK=o~saB?@Z*B=~2GOxU8;Y zqv$5z~_^;##$_7Za z1H}``s|v=woS@7T&o|i(q-T_g>AkxCIXL#lQ9Lr{8k8F@WG|cCX?eFWSf}PwqnV zB^sD-{27j!KZJ`*lGSCWAG5@zUVKFA0)E%Y6>X!Bso(SQa&5pY?A>q>uK&GI4&Ua- zT4=q;RbynlY!C87qT1o z&co(`esB>c!ITd5fh8{>V#iK#psWwt`)f*D=j)>No(Xum z&p5vRbOsb`TaOdzo~E+XfTh@ zf9wEJhV*Xcj|TT-pa5H(ut$DtA@)~y!Y#>J3r22YJYt6< z)Y0;#@mT@C^+VJ-5y?MP?WK2^*Msq{_p!jqM2>3S7&eV}V8IQ;q~AqDp3~trTEA$8 zk)A{0%+9kw^CIl@b>&~?F-kxAyDV2|UgRTjZ#CWbG@3W`NL2^kxu()FxQ`RPj381Y z0llZq!HMT;iH2wNq?Vm6ep@gXTmrkwTIce`$N>k`V-qT%-ofSYr%891IrcNW$Xvp& zmc0XCdrNldQyc7>(1TN5A@-F$8te`f8~2vMvEc^Nb)_ZJ=ft2Ob9rahWSr@+mUrxb z5bH!*CreetjAz$Fw_c9`{Zx`Q|ODk1WA{49Gw8aNtZ$sXNJ&c`fe%^S6D1!Zn-l z>89l}H#UdHyGp4i57?n46U%nvfJVCf`pHCWH8dD=It(L@O-8CG?CYV+9b4$|kIDXM zS-P0NrDriX*FU4~J8v~Qjb12PzcJ?Xb-dWcC3QKq1Ld<%i0^HRSnau%{BY18B+Myz zVIH?{7SOoB#%;GUE-)DzPh)zne&stxC_MaYbzO+?@xa!GhmrU|$EwCny4_^n(_|Jl ze1cSP+;4`H^s5~L#B&jo<^tJwXYn!}BRO+yC}a$nD;IRr;;w$fWoe{@WveF1gAv`Z z;=q2k!6J<*H5~uJRF+if^Nho1*p%FcciYx!Zw22XDFbs2tg$1ZVq`+?`xU_LZQCHM1D0FFU|St22WHQMm&P1 zt`>66C4E6Pm81V8Vxub|O1-eon0B0WQ=Jf~&pp=0;o5+YFz?WLm_Z&#W6f9iweLwM zLC2P-RIB0lnKAJ4`%@g%yF1qyRU7tBw~*_4)x+S1U&Y1E9r?sZAZ?>NLt3?_q6;eT z1DR0WybUPhR~4Ic?$(DB*2Pirosp(+FBd=BgVB&*>|VmQxz^?p&Ku#0#uq5=k0w|eb#t9p8NcBj0eEfN)Q|l8BJlIDrJiHYQ zUZ>!>??vp;!L_JYf2(Rjg%iKf!W{iQM&R-Bz0kbZc6Fr6o0~<<+eWV;N4;mi%H8C z4OWjJ4LR6l^dDn6{rUzW&#VJ_e-nSc^A#Mp{s`ZsS31-n~!XUp@(+h^NKZ)W{%8%qr2i=;?fUmv`jq&q@S2; zxJ4XT7s&_ug+n*h4t4Iuxv>1vL($5tF?ql>1sm)Q-G8ZgrI?+`);O+Kt!VL{v?LGT zj5b!dBZqvM0ZZHIityeq`4xL@K016o-m;wrdtYzC^e<_IRV|o$tsAJ~-%#z-P{HKA zg)OoBL=!n?%?*SHlOSQmeyqQ>4V>8V7N>-bLgEhfPcY-!JDK@qD|ES#B>JCh3g60m z@cjOp`3wKUKzbvUIUwDDbviG|yGn6Lb(x}#OxyH4dvn)P_Lw^c7I`dEbd8Z0@k0k2 z$l?{B-MkNw|9YphnUf#Fgpf@@euP$EwPdfNN}9_Aq3H9D%zQ?gQLy5piGl@5m}UC8 z*BJQ^Bh69j$G7b04Y`I*+1nw_@LN}NxjXR*ZqaDNQq;f1slNhw%P}|c@s$Yvwr@WE zwD^O6nw*Bd1^yU(HwToyT*)$#(O$Voeup&gYVrs9Dp6lPp4yhXy%X?slQ#L#Viw@p zo>vU+&C;qPWn#gy8t-2IXe{I=r{Sc+bTsy!iDMIjaPyJIg7{yfZC@OJ!WCYKbAsIX zW4!?Bc)lZEz7|J)-3HrSquqj+c+1L`_47AanDbJ{JK#vyJAO8vqSQzzIuN$OSP~B; z>5p7%>jc`_@W~y-=g%=9zNSLd zha;l8`2ogWln@u4<&295pi_tKLP|d51h1(0RBl#Kt9=xsl zN+56K4VR6k965xiiCbVDe;zbK-7#uyiC`W_F+?j3NTcK?j|es_ZY|twpbx|=><|#k zlsuSn@+D=(A55qFrWy^?yxNS8s6E0}T0JH_PzRoD5WIF#LB18DHN7DN_o?^OQWPWZ?2*M{e2Wia0L! ziKDg`1=SP?yQCWqbZw~%Tuyo@8eMq{{qjDNN45sSkjgl=p)}r8gf}mJg5le)!tTWJ z+-Rt`JpXZsm_6SF4t1)-tF{=*mNs$R?W?1rQRw_>vn-3U;FQa7C#w*yes{zs-6AEE zGa8dL+i;rtb`E~tZ>;c}>Qo?pE%ZaGIpu}sP>@p_o`)FV4zEFsGCf9D_@JwiF;}wJ zyhFXX;*YZ$k!#jli(coJfcAlTGOYi6aN3oujG6L=hbV1*3KWh9G&Ke#Q!dYJz^_M4 zK;kH@KiyEZYD^~PIot!vykJ=Mh3!h~%lghUReXb4%}!)%w{8@axh3TbF>?=HQ|jgq zlp9c4H&oqw1Kq6`h`9k*fVjXFkDJXq^czi8f_%#Gci>1aOE1X`Y&DUdFq_L15SBg=+PvhECCn&c@LFTtt zc=nMF_0iESZ?cY<)yRd$wM*e3etDaL3uw>rJqv%n>Pae6_EGW=p4brrhi<5`EGiwd z)183U3S7a@oAhatxD2-fEV-*uBI&9HA293%v{l!K*vD?1a7FW*0cO=}aH>7yvky*J zG#V)%k{z7=L=SE6f##fb>eZr4EJdE>?;sDLMwE zp>p&4-$>(w?fZ=x`M0trfw=VAa74SVtk*gjN*#wQYb#j1aU4*NW1g!TLrJSwD)I*T zBTB^wYoA5$60e%Ilee#*$Kdv^;eWr^{@+-R|Nr17)BoYB{=e$ozjNy1U$tTPzuyfo z@xTF*Y+`}mbFJlUdt*5#X&p@H?jX%#nC#{I9zypHm96ReedGRs9s~BViza5W)rV{9 z@6L3M_#@({$qA~}V-A2tzuPQn&Tr@%z7F?ij>J7H9C^i@COorwE{Ks&gx^O``q@rs zHSdb}>Ru^Mm-}m4)@AqvvUma=9d^$pKc-?9?fBkvpnHoEfbiRt}Bgw zKf$)X_u=OBI5=`Kn{6D}P|p0+UYtKz3!ab8XK!mIK&V3*G~8~=H_08iV$FUwszcA3 zzvsBt#sm73WL&m6Dr4`kEt8jQroHc(w?Q2=O5U7qAbV8bg3*CZG4^I8ZVp<8OIBZi zvKt1%qT2(tr&kAc+4AE&%6$&pT(k^&ml<>O{01_!d0Sq0&|0=*<6O*N?F}Z!e&PMT zBjL-)u@a)*!Mg$WbWOcJyg2VE0lcqhhpy8|Dc3Sj&| zTRG`{Eot`09Rm9N?BXn2fLr^aXt(($Ty;DT&vRV zapjZGSjayOGSq$7v{OH75C&J0b$EUqA4z?p{x!fyg)8t+VkYc8--G+*o5IPDfIqf2 zmDc8SxEZZyPWzw3;@fR_j}bO}XBT52Okvp1>GEN*1`LT@C|W)?lwQ9Kq^8A7q%o-< zdPl>FH96Rz>uN}Ji-ObH^`U>Zl`Q*xf^9it#=U;U@y???Bw++k7#)B?_Q8B$&Lmn3 zMB>$-b>Yj6Cv3(FXIbsvUB1$Pg7N1D%ca$Wq+i!0h~K!0&$SqbgUmnR91mZ3WpNMl zCnw=1=^z_?JcD6TZ^ZHA=5pCMx`uY45HI}rhR>$9T}ZJ+IDkKkds>>Pb8kbWB_u zl?;tyv($tUuGFTfIEy|#)~hlC)(APs5MS=?4_;25+}ceK2lTrMmadaz(32tHwMV6ivR1=@bHk*0=^#0E@G^v!5vplH26nYE_04Cs0i~hqfWD`PF@=AwVkzo9feb&gI8NM~$}f zw%l67LDEF9|3&9fR>s2#qc(g^vOfRQ?K(Cd(^0xV{8Mnc-xY9pR0V;{Pm4v%Y744A ztNd)rBX3kNJI4WHORyim@M9in`v#nK%Y(NYtRt0qnP1D4zj+u2>qmTq)c&2s$Yeu) zCb20Sf7hDoTnfHhUC`Hg7a9glgq|aV@Z_H(SbBF2glwG8+jf18JF?%wyt?rsOg~7F z1_E)4(Pw!{sF~EBX2;*GjFrpwEQTA8rVy_#BTqK~UuP%&fc83HTQ&k3Ou4|GYB+(S zJHs@$K-%Vh94jJ`u#2R7tWKRla6V}o+)X`JQV;v!fleFgLUwOF@@jSTl{r}&lPA)x5}h%pCI@h4Mf7X=GITF;|=L->&G zNj3NeJ0EAkLrm z%r1(-jRP})FvSZ-q@l;fw)oyFhxLoe$C!pKB;gtsj%_9f6=}MA2aN;5x}@>&cXzUg z-!`C`{F?QO>Efd6dTza-N8Z%?~lv-Vt!`Og%nQc;$O~9afdyh?663A0Zvw0cD1a6DBDK+){Lo zX*fKBH5c3n@8f~`f`kcn*43YV8>BB?I<>)dbDxR>`p>a(e}wpgdoVToBMRSFsMpaQ zW@zj~qmgg$wzT8=S-oKTT03qSHX4m?OqZ9(?4@%q06isrs`a4C)B7HFj#Nd*ryK1>VDl=CX*vMWO3fNuA2q-PN`u=16E z3WhM!K-nj^8I~<~m-U}SFh{MGQo&ij`Gqhlsy^@HcV5n4X-pXFE8kSUhu_(Ck#qre zZ2W@p4Yt6X_JhQ(ZR_Na?IzH~(@PF4c%VM(TF%DC)sofijD*Hsf4Cc@K^p9bJ#S3q z#xr!`>4I#aIVU}6Ev+`qkduF(1HvJ6b~TWnCL3aPyH&i^?~AxRHw!1dkE-$Y9nC&L z(N=q93}8mjq5JjcpwQ1c53%%!$FkoZxX2(;sPriTeAjsfLq4M);aEQ~E$E;3?(FXop zcR+59$F&SvDYo4lf%?k~ zb91a*+0{^z#&hzo<0Y0?g_7+Ed#u}wttzGMZ-Z7629IO)({66*%gR+hV-5()fw0%_ zWI@w?#Uj^MQ|ix6fnHxV*wW|{G+6CNe~-Yu=BC)vusgogGw0-W{9_iv!{P`WoibeU zAkwv6SWNe^vCKy``Hs94`W(06ORI0d*KxJv7vDg*_RGIU)6)$`fL7&CXc)PewI1b< zCgT#3@WVATpQ;;aZdaYx`$+m%1rNPz%c z+Y3A8Gf0@_)E{=U&lmNE>!C8ibu5%rrUPYNjQx|31=rULgLi9$mTeqTo<*-^E1*QD0~;ZBrx- z5;S+1F?|&*4Z95?UFr$SY@lF|bPVRGuZrrYMX;!27x>JZ%41pdd}zukjw9wFnu4V7i~<-GJ?|;fubaDX51kAb!K= z$D<_a50nIEC^#0BO}Ub@H!RX&ibqAAc`s;uHT_=qYb-z7v7@4^cs0t1Q*F?3Q37dY zxbl0Xe4?T}jNV~oaB507(6Tj<(`_0<)Qm_JHzrB)SJJ^;d}7=LNvlAX#o|w+mhio^ zg*-A~7u-3p2g#d2!Oq7l;7h}XLBCO&G_Fcf6*d4oC|OonZ(X1JNafengfok0Eg4_f$4bT5N&*`~yLPkq;$OP*|6c$9$3^>p@l>t(OmS?|9YYR zUwpgfQvLs%XL9`y%lvVQk zLBlr7@#T!!XmTwKz4uOp?y?0RGx-AyxcQ7(Bu;|s2&#E6+ z#IvIYcCtf80FNG$nBOyE2=FG{OLLTmMU(V z0>i>mc+ToE?9r_}sI0eHPX23%9AUIq)IYfW`zDz4 zbSYnu#~`%57wc^?6IE6t*r%ya+1lxqsFf9q7e*vu=z+C3es&aHYu|!r0&c^eZM27D z-z&V{_!HW6slv1GmchJt^GcHZ=Aa!(n}1aORJ4=bbL2>(A9!b9r9_;Wd0Vw z3H9c~YDX>EXhU6|HRS>Nq}EPWF87w)iIIwd$Pte$M4xr%uX zY{E}{xdg5emN2kWE&ilIYd-R^4emX&rKxt0V{(!pKKGytcxeJoylEfSvkE6KwieP(ecnHDqLnh--OfJ#$k#7 zd8{gq5bLisl7vlBMAvf-<{eZy<#v)+8u`k|>AASSZ>!_f54_jX1zl@rkF>c2j%-M!cdPAgH_-|Y@$N~87b;?+UX~G%sbs3FIr!|7K*M*RE z@)x|>nTm9~0=CUD;*(c#NpWX zI&9dLHqyVzdT5>&DSCVT!Ls3Qs^^1U;8)>n($=l?&I1kU>6jvDd<^~T@Wc@#;rylX z@_oyfP*U3kNr(8J$Hp>Lw}W&!)l7EndPog7cZus&<5hP~*rM-sci#2XBM9xW2|7m| zM+d8oyv0;)7@8f<1GA1P^@Qo8Tf&enMx69YMA%lU?R46Z=J!@~8oy+ZrM>>sfaX$Y zT~3G8r5zLv#FE(CqB2;j$Bu0vgC{)3H`lj<TB5C~mQ1>gXU&w}Pf?!Q*1a0^y+KPODC zeT5Gi!+~(a^nB_9={EndJsZf2dENGAB6HVa$awo)t>}^Sr6n@!$GKs=UIQ`GpD3c6j6)_4s02aiu{%ScNhy(A95Ua2n+?)r!$C;6c7&=B=c z-vk)9GXzLOxZ;1g343sGQhVav5b_8k?y;l|BhSTX?LL@4x0P)9;0==h z4pug>WW_+aC2=+R|2iOT;98yPO2>dIyya3`lKwHiXeGXZhJ1_rRi?VJ2LHJH7U5Z; zva?GQ2oIfvq}#Z|EU-o+6%QmGP&|~=oMIb~jd+*#>lGdK<3~HSV@lqkW8st)YjMv{ zFHZ9%??sN3n-cf3-YDmw^_yqT-?u5++#&|Sz10#+>_2j`w z`Y8)~X9DpC>+7w9POd*;_tII6zQ^`CFOY;;JP}s}G%iX0$1a`T07)-(1bGpjT<{$T z_h7qi3I049Eyz2-{=#s6;XPf+*Xhp>Z#I`tonjef3O*-(90vCPjC1KZAc>lYO|)$w z#5R}Ce_teK5KTMm zQj=al&ysaw>W^^I(b-5+R#V0f$=$jrUX1r{){)gu9Xa6&VR)(H<5C%St8V&o_tg&Q z$9?$y_cy>{nHk(~_!Rw1hDgY*5|mGIu<%sc!qBk;WzLf=H9oQIE(6UeKbX(c<>GkN z4(ysfpoU{Tey&0HhD*rM1XbFp-%pp5Rp4m*DAGPbQesy(8s4aLJ)@ z==-}Ezol?2{s@w|2A;|KlKfR!6X5dmp^6?NX$eGnHl;ZSINB)>wH+=%#D+r54f?`J zlgR5Ixp}RhM{^x7Vl4A#+L4snh81 z+g!r%AwV95l%>)7V+PQg1!!$UK5EAmuOObmkr$PsPt;G*y!;Gv*wh4<+~8_|e(7Kl>lsnX=ADdEj!)iWC3EZERy0jyrB$MAd_{M(Ob|2MAt|NYFsKF;M-Y$D&6W@2ak0rJ$4OSsqZFMQPLu_%tB31+5nZiT4f9LT2W5aq8eP zSkV0}EYBXCo;3o#z&&A3S8uH#_ z1K!`?7T4xgV@OCa)<3H+uic+1o6UCS**Fx>-fD+yG>^dT^=UA?Odn30Y^Tp>Vt8E} z=-YHGEXzRjiax;yOwWMD32GR1$PDQCP(9vI#?QKp#!DK|zUw?}le`bCm*0e?Uq|7x ztlF~3-iH64vOqpiHvm0TCrSOq89u;!>|4gEkI-*zG7LMuNZK{v82dCAjt^QwZM2fE z6K5j*9X35%fYx32L64NLP~K-R(BH9ZrlwTpzxUlKV#VdDXtO^JW)7PLAtu#0ssBNB zqedF?$I_3ejP1h2Vw&4*tQ?$=E`2p+TOS?SXo8b02+(KYbvLT#9?iyY^xi?+>vdU| zCgw{2q~45Fy!`wSP@mb*!S|T9n+<;b+DNY1ejcuWJ_6b)ML_Mrsfs`NG-0P(&DQQPI5d5#OIkJO%9yR=Y-F5n3mEe49rnqZ&n^V7 zm77vFiJ)$^WKm=+wr^HX+PZXFM?Bl;fUp0Ieh*QeBMP9U-sy9T>s<@Y<`*c zjP<1VinUq=tuAa9b`2ypKQ|E1Z|W*f?ug=|+=+eiohxUDzrhXDn(-&qC*b?l-FRPH zThh3&UzhEmHQQJ^ZX1q^6I5(a+i~1{gD=I9mF4P>745=3L#tKa0KryPH? zK5VZFhcdbkCs5-j^9VSH#2;1F1hsT4d4LPLd&_sHn)07+KH^C64rZ9;i3e8)!l{v| z=z5|YKQ#Y|+xHE|xg*?R|E>paZ}}YAKKuyW*Itg=X|bx&3%A14V;e9htc^4>c!pW$ z%;dAvSCP2sK6LOX)XkhL6zo>3b7Abq`SiI1Dm&}td{>VMJo#pi2oLHex@XWk%htcg zI|260*}kis9J&`0_r_zL7s0S#%R&C7O|mlAte3ML#uRqq8AX3^aNICmOm=AW4*9U9`qkZ3$T0yAickCIO zf`|6BKto7@rz#~y>uQ}9{1+G zoVSVwua|+TVIFLteK*ag1j?t!toiEuYM9r=mlNKVG2vD7r{Zhp#gIH_Jrw8Zv+}ft z#N$)yIy($NKQdV=8bb4h9iQJ)5x-%<%Mr*v569d~cc4|sA-w*%qdeBRC;akWDoA@6 z=@6upEQeoJc7#zop_w!X+HM+;riT;oM54s3lb6x-KzFWpM1{>-*5YoisW^I}9q2bM zN9rTD95)gdY;om7^UmSnqmRUwXIVmb_!ZpQep!KAt3FcE#Yp)IIzAsNkIaqa8-^+v zJBy?R82rVQkvH*Tzf$t0DGYR-DjxWLjM()~KGmWst4%;n%!efh=k)j+-{NROG_ z?{AE_Cy8&$9E*43Dsj4ymDH;E0OUn)vUmw}BA!==OP%B8s-fOv`R4*3q zJ&wasbt7x~MY@J(lMQ6^DKDV-Q-xSDV<{u;M(V#T{uG3oZ^v@dCJ4Du%6^CH^CJ6= zsMK*+MJj~X87!m!+Rc>DD8Ar(j6>wSlX&rjo1)bU2VjN|Dz#z}Mosx4->!t^)x>LO zaj>fat`)1mG`LZLlSLeBnv;Pyg%@{u8x4?z#jy8uGyLLm` z`IC(JrY3%|w5db!cj!u?L(cN@;&M|xgn>}&C^iLnf; zpANHa|0r`Sx9_`&ghBXjZOJPR3OLc{0p%dJf7cj!wtXg$zcI>ZG|!9& zJt#)&<%5y9Mw$?SPrQQhYv*d!&i1q~Iku;yyu=+fdT`)w%FZ) z9e2K-v(Nd@{bSs5?>Kjly@z{ze&74PYtCmr&$HrPtMQz{sOV4QPC=fjx8jj7dRzV<{cW)M9A46V!RT6YYm=!MH)}sv;yV9<3!~Vu31+A8 z>dRORHX0^~M|kSeY0#isgqX8q5B55CK&ANJaoU!Ig+$CKJ&5ZJ+d-G^E5ZJgA~nNgDZYCS*J>g6OKN&3Sw{DA^B1yK4-*x6caZ| zeg;N;V76gUJLrUZAbEwT+wpE7-~1QlS*HwLAU#;U!rDB zbkbpZ@C@#M&lwBXtQORlV2@i(04>un2wPi6sWGv$Sx2VeMA6QbbJhUWGQYIF7H?Ex z$$#qD)0vgV?00+_tn_f@3de42#h_Ekcuvp8jKb>k38xD{bMXflg=@%zISOOLC?KDz zw!VK5TfeF&x)jX^s&SEUc{^qvo2=+5olkBosSkt-w#iEX;RGjo9)a(EOXQCa1&Y^F zYLAf?aPRWXp!i5f-+eeWZ45tuo-y)m3U=Ytp;DpvWx5BeJn;n-??XJv$fI-W*I{^c z5l}sH@{U0L7A0m#oB*~?C4%%5D^qgSHi;`BuCf#e;Ic8ukZdpjWYcIUkH#ALQAIF?SzY3-&Fd#<7D1Eb8g#eJq}sjTlDuz zhB0f?aI?`l+^M=K26m*geRGSj=B3T>HN}Vf>u|aKT^+vhWhv}%Isqjk-wJEHW<2(w znLG#v@V<3C|2+RFG_bN#IZtl{CKndNfQ&05|4yh(YP=dFCoP2qNjG8gaRd1)IbSHh zdp__c8;)(|xm_xL;|=4D#&+lJFac}3KZdNs&tS9jIN5miRk43Wq-+spA~V9*z#ctg z*?cDF%JVOXRDQ)F}&^{MSnr-JFJDJK$7Y?b!)SGhWhY{ zw3aJ+p##5WMjm5iI$kpy$=AFYiqE=Tz^XHIadE6SUschKCD%{q*UC(xTl6%Tsp}}; z1Qy}lhbHul9p(C3!=ZnVwYbOkC|ubP4^0Mc2KymBX-aPqr#P#jY$cZEOu}yd{p7T& z1rQQ@3%}%4pkp^XnZG_4SIp9oJ={E`>g!`zTK);rmp#JD^By>s)-zdYG?XLK^yQ@; z_Of^42ORx!u>3hI7slqPtg=`g`0+a(j zbP@1Q0q^m-K@C`ywHQ*J47uI-VURa(iCCVo6R&IZ#_!RFyyXHlF26XD&-E%7sZqyS za&3KP+scuz-j)vqXWbxk_h`{~$y-L)5=|C`%kT5HsO_EWa>4{!_Wp)1y86qA^kUH% zvef#!Epgf0jZm?+5Pwfff!|l3v$N$Fs6A`($+sk-Hq;Z4dmcH3xS?Ro?Pk zB;gzH8GB*Q;>KlmHnrrh4F^P^RwH@E{4=OKl?aQcW@ys*84`x!X$u$7*}4kO7P!cP zbK1y?!$;t`1MN`-FEKFm2ew+_&zJ4GL-jBKk49SJ;6Y|`m%cT>kdp~k?IS_AvI7nn z=gH$8x6Q?v&HrYH9_de!=11}H;!kRw}8pTXKKA`LPBw5$qQ%u;ukbNDylD&0V z1hMtsVuxxspldM78}~UOD3>oGzpR919Ug&Ic4537jT_!{{l#wn?kEQi&S&E{CBU;W zv9R%yjXV=?!iTT06Ls5N+1IaNI)=m!6yDjUsH^wGciX*mRB~MF{swtAbr}*?ROS1= zquIS&;diBl{5GYbOidn+(le7d$dGD(gdcGRlc8>0yQElr-yg}Hx+F8gpiJxS!p}@I zWRzp+z26m16-wM;un`=)t;UVU13CD!R^B0=x7E9f?&{OPx9P~4{eS(b zn;=aCT)wlHtdW%T2QT#^KBK|qz0k|vRO&pwL9wQNK!$(E8G#=~YVuR@a^@RG^~bKg z?JTQ%Sn^=gc`~lv6&&;9DRlKX$G&drkB?h&P%uf{#QH3q#Z4}l$Ww)!A79oMjSib* z-QP>$Yh&f3v{7;|yVTyM@E7zSe;5*my++D8abzlFF6qiC7wYJR1+?CG z2HttqkSF&!rQTa7n{8CbV>_(DEx**~8R7P@GQXj;YIqn*0xMKFeXa|q;NHR zQO`);|B;Umj5ec^r`6{UDBOm7`(KCOS)1Sn?KvMl%MlN4oPe8dIv`<8mYA4Bb>BSI z^@fu`??_AT9BV6vzn-cx{=nfB%@Zt$RPp&8HmIo9Xbs^ZD88#9`xSf>giYyLTBh1r z&lRW^gzvLk@O9I5RBEWjwx=TY`ZlPTn?QWF4N|N%_^R|YUe$I6(&s9tQ5)FN0jBUN zKud<_AH#E*x!Au)L)w?FgCH${j-7rJ_L}g{7AoG|+@5&t2~Z5>ZKk->bO-EWo@a}Pal3}KfK7Ex{96O(?@4`j5Ip>9jH8;vsKEOTheHBcMNp@A5=m zr`Ic}_&8JHG)b7iFh4^{aS>)U7;b-;jn^A~gjuiVGtzVsk=~jwEuVt>tqjqyNJ|o~ zu#Gg4%|^Q;csT7n95PNE-M(~rxe7B9+R2+$ zjXB*%^&#&WCim$A6L#qF^E;hodOIVz=|=~MIPgS0wD>l>nQ>p?Re_Fr@~1Q+SguY&&iX-8!+yM8cD-gewimIet_~++Oxf%B?|l>>KvrurO< zM>agf+m+_9vDFV4ar++H`4vN0z+xZ|#TCy|FCtD>_q7(3Q~qS^Z)iHJiwtqe!^brn zaLNs?Oiq@YU$p##mjokIPI`$0f-Lxnk;XE>>nUzG+yjbND!h%*yuF5OF=L0y`Rq(d zbtcYSehLSt1R%wW-Dw>K#7lyB9Lb-^Y#MLXc^t;~b#Bi|6ZpNC%b+X<#j7s+*wYp} z1YrmE3YcOVtXad8w_5I&0Vh+|^vD^$KfJUADuqFD~Fg|5|+3 zD}8qRb{*a@$QN=JuM>|NxHG~i8fo`IsvFcfu-L`M?42V~oikyjPyz0|VzA5YzQ`iQb75iLWmS3x|r*_i1<33J;}N&&5U_ zrsPW<<>#RJz75BPu>&cCFlNRA*w^_m68|D;8!EL~-c`5Eb56W+J=9$qk9{Zfz>A0W zF-6Za`_+W)CU)w!wwIdN3n!lAydH`ATkBl!(OrGBNIpAg$+hOk2?Y!$Y`IGe2k5 zObMpK`zVmOmVPd37qE@1VmK z@9cfO7aQ0y0d0ofmezKgK&dhM6G`iUyf_*=ek!Hs;Y<5!%4Cn`zQm0pu3o5cnDY>) z7@VQ@SCb$63Y(3BN+&;c;@{`BPyKML0ky+T-wM(^UlN1eODOqE`MfSkAKR&h5EX0NLS|K zw?R5ejUf3I@#LE}FSagIH6FBA_^h_%WicQXUNf-zDh4k;Nf_RZR_z~%f<4Qbx|1iX zWpPIkk1>i9J6>{6M9$1X#p{ps|#&y}|`* z(l=rBV7Dqf%0TvuzYeXp1PSH;$f?N`?C4D}VJ;M%QblAd2hdO&zS0Hir;rGDbI zYXa3jkoQt$E;-HkllDLw_NV`|;b%`AGF(+v+u(U!BPc zTirw%6a*DR->Pg6on#Y6Jcp~A|u~Mg=_CXv;6&e1t;|)ZweQy2;w@wZxdDUAWuNkdJVC z0WE^dMPcT1jNP<=J=Ph^=V{cC7iU??xF}0$c)8BvLz{RCieFDuX(1;M+Re;il&g;eKLAdX`mKv!*tB#dPAwmuv6??;%DYe?TY8FsZbA+Kp3e>-7dQ zb;~ulHc=Bdbk*b;9fzU&TQioi>60)Go6U<(JYy#5TiK~e$>MnP2~scAnSDFz4yzy6 zmTaJ#eD)v~M^p^J;Voz{oo3~wxKb893%;Ja{gi%zr=Z#$%p0 zQgQ(vj=N#@z=_bSwJpp$dx;hAYly=_Vo-@wT0#-rZSTsLls1Q3Z=bO`;SKoSU>AO= zM>EON*5H^Yhj7xvJHp5R48HidUR|r+bJ4mm4c=7Qux{GsGVVu5Ii_JFNLjaD%>EiF z?e%PVVJm9e(iGS@w*X!o`i%V?Q(?;Chhl(FG0dz#1Qzs|3BR8i@g`Zm+-SNkc3Yc( zr|UK+ERN&l8&5!KYfm)zc3$;(_)oA1^umVMTjNPpWA0ZlPi8);4Cu!w7GOr}PN|*ZXQ2#2i<@$#-hNFt#FFWQVcDSWQmLE4J+tsrhXt^w?N5x;)a7rc1To#D6+paz zl>_SYp05q$i;s@bV$VhBK5-fLj%p){L(Ju{cUQ#3I<>G%Mh`h{%`;&b&=1arEgexZqcfgJ0>$K6gC0f@Q+E`Yg@oW!}FEO@Du9 zovriOsdiU^M@Gx8r(9%I?OuOsWr(`3d=%aVw$$j#J%4DkXAj=9C85@m@W_TOqCGJB zb4j%c6azTe@)CN{oFU;}p46KnmxSiQ!bLW`>F*ih)5OuZwvQE8>!yef{d;oaIot{@ z@wJhWq#EIuQw{!L@o4f{HE{^sDDJ}*{_XO`7O3tZ&91&k*sg}K6=kI(vcBP$C#|r{ zhrxWFOC${5-54TN#_Yi2`>_ApQbxFw+ct~^tzna4NBJ_A+j~DOUR#b7XBk_wJ|8){ z8}4ZM5dD8n$Osa&DZy$*vml`yI^IPcwF;Vul=Qb%Sc z&Bs@sDrWQiGj55#0Un1Nv7fi=(cWCEWnOwcLHXd>lihiXIuSUoS*YlmWr7{OX+41B zZmhL8jN+3D?QsbH?$%)ckiIA2MXMBOv+gTsp2$SXBWU0B=4CJZ6khm~pBX{vKo}|Y z30#PDuRol(H+Tml%&7xY8}RFsKf<}CwtSG)9$dU35xmwk1B=HSFzWhSk!zcc&ee~R zo(GF^=F0`Cx8cdH13)WJ=!}!w#4)AfZu^}uJ&sArDLhyEi+LIeqA~+ibU#sZ>{3oS z#^@57Z)>y#n~q+9YhMNM26IdJHF|G>^ho(!$h|iFUOg?DZ_*z0GivdAItQ`Zpa|;~ z?7+Qy+NkL>N!%vO{e5}-r0c3nJvK3y$qn#p@H;H}p3R8EknSzF&uXh$*rFC(ao#4T zj@PH(yKwmGfW#eW;$$N|PljS%dM;~Gx`a61Nt(Q6xb$cP-ltO%v-|D@m7xRF)@>S! zk6BOX9GN&w=-L90%+6!WuN`J%Ur+iI*PioKQroYS9Bn!t&eEEX!qcY(=?>LwwVJey zv`0&p)TzMDhxUT=lD;q_$XF;i+kUqKvNR_MvvX~cFb3m}28gx~@@P)4C02eo4a)tW zJ1pZf_xBK_f2f;OUs|Pgk;Gr3$$)EE(6pI+`#giS2<{*k`|V*$ZCAPeQjgl;%;`BH zV1k#dF_iY}_tt5M(NE<~ds62~^`(C7;K>g7qozK2gt>w^NVXoa z8F!Rj7UV@xdu=F?jv#3z8f3R4&Kt?*xF1z;gNo_4_II-K#4b@AHt^=Ihv(C-k0|cMkDF zB~Xnh_vVUb_c|WLNVlN$%zECo>IQzcwE5$AjILGUie+b@?cAC;G;=d%Ch4Q;=dqA| zJ3*LT(vS*g%sF3zH_RVVE$NY74rA{>Y4MG79jN9vvoNh%tW#(GKi-D)g|%5XjbbWF z*}z?(*3|>TJsvom0fZ&KAaxKY{-HdX^6q0VfI|sSDCx?z3@#!p(AEYz9~7euhWkr_e3lL@M_>*s`~*-jK)0>i}Vgw;s`) zuh|_f;?259G5#bjXT3momjNgLrtq>{q}>~1QY^Toz5XAcnW9(1jt#WK)q#cTH&v@d z=Nk4c*`3)prPB}}#g78%0@CI_-a8y&9C1D2IR)yifHun{u01rRw@f*SO(C)-czOdYn zeAYUQ+-w2^D(wgt1%kY*q`rV?`Fc0B>$OU_7G#%CFt=V`p|oLmnF;N*C%4uMj!ibl_prXYk>KrL5o8f_&0?Oncmb74zVl~T;IAQr@X_`WqsK*#nrI(4V$$#tW9`H3|LV)zkB^O>7#%w$ zI?6s`n*HCm-V2WlkEH>J=wZrWMEIl;Bdnx0jcfr*ni$RJ5~)r?4QeMSBS0O z6Zq$Amsu-XM0jG}Wm@#-hA(pU@k+nVXmI{M4z}5kuV$q3=2r&6i9R#Aa*sDnmdHlB zE3xGRE4fg!Gt4S>kc-xs!aR-bvh(V;VriS{a$ZFrS*6_#mv`GOZ@%ayllrV@N1O`5 zki^PmyuGv*F5Jgd3$8>x!=^3z$b>OT(Aaz+PP*1f_|=i{;Hx8#vb~76FMWU?{cW+r zz77V@6f~4MLRxur!lnbArDZcc?%RC@I@SIJPxqxTmyS<)M1H*Q(kOEmE*YebfHG4sE!iG9jiOPgL9pu5>q>KYD|F|!XrAG1x|v3?8id|w3GG-?vP zdk^UJ*ns<@hd{T^>HMno6x`6O4|qv$IpxI-`ks?~a%sFwdGZO<4`<3c{ole&KSP#X zHibJLsxL!!#ADO7uke^gAKXxW5v~k5h{`pyt{Tga9?3kQbEvFb<_`1T?q!{--pG{n zVesU6m9Xl17_zKe!v>G@XiO>^`mGcz`!$yzt>((fE{^yq`7%~cX~pZ<#4vBY@z8Q` zA}H7Qs?$mCUCQLVE&=jWi=%R5<7ue7qnkW)B%VJ$a~)dF)aRWx&xFShI`PMv-TASv zQcZ2gl4N69{j`yk=C(4XMWFmNtispZcCcLjvKQaDXo$FSp3A0bzj1@JFK?{Y=6$oD zV?gz7Sblsj8#A_{>~qV5$F=$)N*=p&N_fM93GqGuL&AIf+Y%n`8sQr56Yc689UkT3 z?BNmN>KyLt6Yd-n9_{Mt?(5?o;~mpw-gG)bEt&a_jz*tGZE@VTNI54wL%Kg1p!Ple zo!1T83i}Vv#Wf$#i|FuK@ai&cvoS`6Lxzp!wGO_Axt^_fU{!IK6q z{N5;kob>Fta2_xhLN4Bw?t7YwEfYsU!bbxsDlUO??EpG@d$&mz8rR(?pqKNdveVjd9d?K7ZqTR!tBi!7)o!ukcVtl=Q-J(6*y&CrGBBl;EmBpVeq()uF z!e1?rt!5-cld;42k7Wb7!A>tZ_0Uh@)w!*7iHYEWwdZ5BVVb(wDVe7Y^}-mf&Cu1g z54Pyp5fg?kz*MF$^&eF;^V@H+@-eL|F0aSww|wJUeW{A}lU_G}(cUU)QhS^sch7W? zGWxqJ((j}U+qxZ#RM9f7qK&LRNNd{G?~yIitfYCDU37TmK(#}e6W`q_Q3g2BdYpH8 zY?noCX|dT=_P%D$e=SYN9Su65XOD(_{G$7?I?;{s~p1`pFe8dyBl#4=6y6x0;~V$E(DITIyX7?rj0Q}@2(2_2 zQ7?;kKNSUy0v!0NwQEt|-I-;*@{t|=%;ahHOy4t2PqGFs*)ZVKH|D1?flpyMICMa+ z?6K`D4mw|3&RWZh zjZ$er+)GT^XChl(S}5J-4VDQ>xiUY{9Cv86!d_Zrz8eX%S2_Xt$DZ+rkd<-T#^Jq>2BwguD2}L`6q<_&R&Lc|=i}yGA&NyHTyX zx_Wv>`9`}%c)NL3HCc~ehrOZM+i~)0M<-cBkKTqKe~RfeoXw4!ao#7=OghDmgk zV6y90_&njcc)4P>ur^!3)AzPu&a`_=MuDg5!&Vt(>MkG@cRZM;Z5 zq++3my!iI&?xLHSiCkD1C}uhu$RZmRZ+2;}>_w-GJXoG1E!Spab%Dh2VGqQ1^DQ{} z^E+AD-yZjrKZbU!Q0#r?#EbP^WXkCh$koe(yo3glt}B1(Q4ey(Yvwxs7`iVvRK3X? z$uBrfmSwk7_>cN^`SIyz(ZIc%tXA1b*EPv1{hpiUwgycwxby+uKQ|3lhwXrp59_&Z zr^AqV#b13gaSw)Oe#YE|b!5LDEAVV|Id=Fw29>zXy?PBQp#xmKohtXQpNx&F7DE^P zO|WD_gve<#1NQ39M~Bnf@X^(~Fl6vd?5I(xB;2MTFuvPA6P_^V-NN*o! zZ!ZtxbswK7XJ1!eS7#SrxA2H4FAsMYFSkNDN8ZUj#I)?rH%! z4QG>ioSdhA6L<*1&lZEe{}Ar6c8n~WVZtwL{3vQyUsr3grBGCwj2ZjZfz?1Sc{U+h zj_zmABd<=8MH}Yw`?F@_(V}Q>ccu#VhqsqzW;U`|d$m-DYH;151?ZS!&ZFk8ku81o zMTZs-aM+a@!pAhd^d;Vq_h04UyL->XrS_;O zOm`}S1xqZk&bbiY>}@Qc6j}sF247&Ew5!0JUPJb7bs6GUpT(a+wdJLiZt_!cfjsDY znA=pY1W}SJ>spUMwOuvKx#`0X4(Y~AFAaswSG!3cQ)9XQS1^9JKZbX@Z&Nh9L7_{0 z*MBBFsr$bz;n5N9ZsAdsW>;@-H)kSq59e@~7|MD?j62D9jEjex>xdd@_~AqrMoqa# z^JQfaagj@!Q&K5oJv7(D!@>vAzG=09=55r)NfY_E40HK)!9@tskEAn;c0#SaH}J^z z87QvhsA$YsCMGYG=U1C?nuAiUrFS#r&Ow6aia`IvD*QobER{K~VRL+RB#p`N_lrE_ z^89*Gw$?cE(UdMg34I(k*+VL%cW5?zORqB4(h}CykJJ-z1o0OTI;8_b>Kx+m8Y8lhxu0FTzDdxwj13+go+9 zXFf!QEth4s-{2g*yLQ1|0tY+vfn=48#|E&5hKRntOL2{n#6RVEf4 zjzRSZ9l3SK@%@9_o`kOvwRth$4h9(?#OtdL(hEKLIeH(u>Fmq!xzlN=vCS1shffs! zE7r5)N1geIcjdls8hK08;U93>-pxvJ@ua(UBERe#SPuJwjpkIa;;Lnw^?rbxe_j#x zllAfS)dE>-a7%t_sx7DQi`B!{frIf*@IR!-OTUifjo*#I?*TozVX~{-S$PG!-o6IZ zZob4;ldouR$){Kh!pSF2s5;uOr9I9zf^Dsq9ETo8)sdJbmKw1Wlft>utk-(lX7 zfnZZ?&OcRdRSj+%$Pd=`VX*o$3$}4VH-n?N?@b|UU1D%LpWYXrJxwm$Z^wvq*o!V8 zzsKS7La*Bd8EkOw=HB&ECMXM_9vzlO4dM=wPYY3v*6nj3t)`h^%IvWy$sntfAj5 zgex^<`jlRBMQc-tnrknI*&9i-Uv=a~UXRoFMBDF~pwqNAT`P~({9GZfG_QxoFOB8o z0zcRk-3nqYuZhFcEqF-La!l^!$A!gicoaHK^}zx0W*&m&RdarI@-`$qsSk%3^7f@i zU}T*jtg^_5fF*69P0K0_SaLx9Fed=cKRX02U6-hTr4(RwzT9K%oITkt}G~x=WQoM0j!%@6vjuCdZZBeFaX&_(!YzYTmIkRPZ zoAc#1^VpvG$I){FosKl#vXbAVZ z-v%jHn3wwk?@ZhW>vnO~-A9!qUOJ+|6k4}Ed#=a|>Lqo%uR`b8I_yw#XekLAHqULq ztp@JpQ(HUob-N@SI9`a2gS2GRbyc_{wLQH*Y6E*m&SfqI!{PYCd@O9c8i(00M8YY& z7#|>aMEYRgJ%f}sNZol`k?LA>_b)-E4k@3^+S3&-9mZ0^BAb(-2?~BrA9165aa_?p z3zi%jCG&De!O-~n*l@nFS`nqW&aKsyPYlX9sh;w>7k%f2Xj`c#ReBZhRt!;3a#@3m zGxKD-F*^jcQBa*oYP;BQR!810(MA$tmc4kLIyJbQJ$*35&+J+{{I)yI1_bIM{T7Hv zp!2pA+#2Q1Z9Vn^i9Lp;UsJdSH1|&w^*8pwU70#;@7`s&xYi8ZXStpE{7ix94Nk1v zqx#V7)Kere=8H#VNUg6Oap*=z2@ZAmwjVcH$I&GiHtZbGv$2Ci&Op=IA^Z~!*Ilu) zP>cZ%?QFys?q7}e5n6JCT7xTbBk{*COYbN=>XqC5Dh{9HsGeeR8){xSDqb!>54TH_ zP_u?M-M&kftDsE*L<{sHX#bp`%d@=(kf{9Rl>nZ#pR zgrpv!>>2a}lJ3%b(AiDozFW4?zq(lUbN_36)oL2dz?xEj%YZreC(dli-5#h}pj{IsmUzQ5 zm*vOCz)0Rtyo;jq#n%@Te|Ki%F2?`O%pF`S@(xtv#y0C9PUrTEC|H^n zK(NgYHY)WcybIQr^L2`G?_LY3w2f+jTMuB|Y|$+ATUG+LVQtxsX8CB;;i2f$z6~}G zpO4OETQD`QyU?@kQ~GP$R_rz62wQW#J@I!MP+h81O7n2Va64?YzCUP;9zuq71dC<& z;ZX7w5m%%scUx^{3PwH5^cCGyYE}e)c9aW7*JO%GUP60w7i-($g#mYQd|yX0W6L*jgc}wA$rds42~vr>@3(+3S!J7B6QX>jjHPnR2BwVv(PSyY?+c#b4=D$@0L+wa& zx1;6rI(*kULvhVGRFW@*v}Z3s;eN#{JqrCQNC(B|PF+#wwHADBo&>{oOu%W!&$1ff zt8j~7b6NWJIVc?9^vH!%E`8N@lLh4+YFG5&O6S8sV-f7?RE?zJu&dz<`6N7E;NhQn%*bO?l$jc-GA7C(v*ecJBEeXRYb1dS>ukDn8(QzOc zr+mVuorj@cq8V75G!+-M(||rl(m-DGa}P+FTT?2XJcVmD0xEG}f))D5#j*Odz>6?K zoR=>S4>OU)ycJw{mjp+X25{nD^*iTZX!Eq8ObOHEwzak@ojM>MR9C%Tiqx^hJ`GA> zW1Gg@!Ce5=8BoVmwPE~t+-=odl3(R{6T^Aup0SKPxm5gWlgBL-UnbRy7o*O;shs?q zf-CY7qj3HiJD%wMNliIY>I@x>U1fLMEsFP+6|0}v85 zFvItyAnnABx|Znw&5A2NSn)(kA0wcuH_m$=11U>QIdx7Y;R`PETz3CeT`;lST z>E#agC|z49o-ESCh@Rsll228<86!Wc-sbR_^rjw0jadN-#}Zdd;x@MA$z<|B#YnzF z(Mu$c{Kxxv9FG&_FXG!5%p*XU738rceIG8wKlk-%v;?W&1mq7CEfYz)MT|T% zS2TZX8dp)rUg?)Wm1aFb?LZvbiG`nSEiXD*$hse^6n`N%{|v>&9p_R1BwbDZfi*~- zPyS&jBd?F-pFtVaaPcvQ6W(Xk{gy9>eU^XvDy5{$oG<`$_0~gJdOt{v*X3dDjwpi= z?3(cvXiDSiO069||Ay_#Oa|(!LETmJ|MZdQeyF3Wi!=x!y!21~@golXk1|CU_}CU; zc67ez)4)@PF1iH9jyAkHvKDXnqzNakm5P4RXFxs$75}PWlkfzMC#C;$|G$5oy8ml( ze8fbW93LMZJLzAi$>~LaXquP*`!xKR@M-oD(e{6vY5z|%=)F632np;FG$bT2Qgb+-h(HZ~89>8s!xc(>wBnyKPv$(*!y;OW@{#9N|u9YJKjY4Nm^^d0dI59J+`}WrWxAWta>f7Rlpm_6nVbze=xK zj$%It4&6W5qJs8&OQ9)(5ICck&wj6_fw$m8>OR{;_yo6uu<7$;2-sr9eH7mFU{gR%R^op6HQhlI$*GSX3xDI==I`a4vEV&8+m%`Sel zg9ev*G5kVYrhIzk4DNkagl#N`hs2Yl|aW z?B!k3zV25q?Byl*TYvsO z=L`SnY+;9cPbwl*?b zgs$r^GE1_dVr&t-yIqqzPq+beFWCLuk6+iEOzn7#ZzED!ZI=wWe0&fl-)RACj3Fqa z$LCCS6da(Z=Tr=(^_;`T?PZfKddO?6wH(#yl=|SzY8W$S5e`zBacT>kTE3h$3(~?b zYnw}b`{xj6;{{vkop9ey$JndLRqXlUE70}DDVU%6o%U1OAzDvA1UUn*!R0C&em<%g zqUsy*H<#%ww_iJut}n)nsRa&n7LoPBbfnxf$IBLYaOPySUyYyYXSxg7F<%|r`Z7lP zcs%rd^!zX!nDac?Kx4db97ik{79Wry<_) zO+nn(fnRbT2-I%5IxZc(elGVFhy2Qp%(#c|4z^-Wv9H-k-2@nKH(0#c*GUqtU~rC? z)C+6OPX$hgcD4ah8L8j-YY&9=OAvid??lakXOQYh-8tKyQ=MVslrNZ}%EB@Bv3$>6 z+EZcOZRmbA1V;>L%P$9%K^r&3OICBBU*2Fio0WirOKJXl+LtSF?SIgL6<)SgZ}K-slORp0Ic~df?LC4uKIA4% zPipb^d)>vCGF=(guZEnYIfnKoKS4N(S62jg=Pe4h;l`kJ{Fc6(6;$Q2QBh6NC%9ed zF7%SY&oNnQQe4M#lvyn;tJ-kGU2<_bMSS42c(?xy``h5-t3?m zTZ?HuRzvUi26C=m4od7s-f*&aHCtynOm46Z;!_S}2(1>= zcy!=9HQmbNs}He)^npk6`sd+jr4fsC(3MA2fe%ezl`MM_>vSH;WoWH#v_T9%M z&7jGSC1(8eLRw9;B9>DOz+>Dl{O(v=QvBgZq7T=hNtf7;1zcr67ADzt0e$f52;upV zXp}jT-Vd2Alo;dax#-oI_P@_j;pnif{6*z{I6i1RzCP5R_s@91o)u3L1A4lqTd4FbGe1wlck}w6Z?0xhm@!0f4Cud z>>6AZKVP1W?trBG!urT-r6z^O@_DiyYlJk@sNfK7%EKU=#zYPm__C9U9{B88D>=uk zHa0k03EkCktZlPHU|40$f10gA_cjydDsjlhWW9z>*2+FOH}k=qpOSD)U*UFnq)yi^Fi|EQ){sLje_b>Rb9YQ z@o&Mp8pH<^#f;WT-2R6K=@iYs@#C!j!2(9O2f8n=97|^gyf=Zj+s=rP%B^U!cP-_2 zkI){lAM&Ex@J5**Fg_sleEdFN$u01siYd`qFYQk=jGR9Pn;k4w? zlGfT6o&?2Xg|54fsrwdXcDy9M`HcD+`{pY(x9dkP# zmDrLi?Nw&*<20@dWi`O$lQkvjxA6W@UlNxoag|p0@4$h6hOq9*T&b)=_~M%i`JICB zz(FUqrkR1*cyckU4N#RH3|fq|YQUR34XpAQ%_A z>_gB}RN71)2ed!bkqVy^pDNx*Qrz&Fu8}OuctILBA3pl$2<4ebzj(1Dy-!B(!Uxp$ z7LEIxBY6>aWpo0TZ974{#;|S8holJ^u+Hs>c)9;3w!4%75ANMm_s@t_>KYV}LVX9J z=%=~H1-RDFi1++p13T83z~GXlpm6Lb7YA70djeBdQ&3#_@z#dCMz0Gn?b9HkqySENbYL+>FE z{(+-*?DU?1YiJHF!%G zb5>-dM#Y!T`0X$E6^|$H9wHr9jOFk8)lw6;3(_boA3g_e*Dfcoe2jhcuS=R-Q#@E+ zmp{o$l2n(XNyZ%@j|#-~VzIxe>g}n`R3~2``G-Cy?DFXi3Q)NZX(HdU#g-G_V#D<# zAh7zVn(CL%7279nzM8FgNhM}%rei9<+L6u~h%^3Q%zbw}*6;gvRwPnnH6)@mw5Z(I zd1*;I4cfa9DkZc_il#Oy4GkLFh1}P9wM&CGEt;ggrQLI0e&6r!yPxOx&+~eoKR&OI zxbOEk$8j9j`+c3~Nxb_3cN^b1zuP-t_##FaapmVQpXuwwS*QqaU5XUI%BPisdeU+7TW$V+vRQ zdH?@^Z+q|8eS}Zn5mZ=DJNtY7ZkB z;p6<(*Qcnx__T>X%s$M&{GU_o1Lz-9X)pgc`qg;<$WhddpnQ1Xe|04Y^AD#}Qnf&N zLBQW%MfqWaCQgb7pJGoH2LE9~pndqbQQ`Jsqb3IW+XsY&POzU6r0NLl!$avT>ZfUc zdy?^&#sq(VlK<%_fOpFlh#Oxw!v0=+u(&i z7boC>(bqt)LMEPk(3w|j+>;Gy;E3iw7#Mf%hldXz5+8^k8pe6D$4Tarw$VYO8>MhD zH6K0}KZcw97SiWfWF$hYZ$4f=MDyNjQ5|02OsIW(5^HoLf;Z^05WC0h!-XG@VAEE= z;9C<*Fzecek4oV9_DD4MdmPKNE`Xfh*ckjzB+KxD^X0eo-T14k{qbD2!`^=8t z-D@BnEmvWwehVJFqL5WCZiZKP2?$+v8s=VzhMrCA@Yx?**t%{gtF}B8XuF@7d&3eI z2dxpmbJ}s=N1^l%ZjabCJ6{yGUJBQjUV~{3PIBye0PftJ&#g}R%Q}ZD;S14Bv%$V8 zG!JVdH@fBF_tp($acMJmokS+fLx}T*@NM+@r@Q_E-upUbmN1sF#}h|M#ENOJ+bkhMBuVV5~wP@n~XSCqB~c8KviHi%LFjlpKe z3_-q=w8c=)s`CSe>ZE{snBc52qM|z{0y2^3#Rlt}S@azfiud((SY@8~bcC z9RJY*Xgeoy^jmr!-bkA^N*69asmAN`VW81u!@YhF$u}MN>Oa$QoLRJ}Z_-0jjBy={ z72=*lFHwD#tBgBi$disQ!)XoLiAAkL%C}OgYt}or8XC7fP1jmOZ5xG=E|cL?-P-c# z`2iZWRkC}D53H(hCf~kI74B_D%j<6!Q_M!Op5r?3?lDc+%DHwj_+tX=X7gB(y^lLd z9oZ_y6_5WoEFSuu1)aHGK(Th>o!j)wU#sTwYqt7E>^bf<>)vfK(lzpC zP3B=>l~-z8DUAI3P}rY403F^Qz%|A@&|yL{mX&z(==WDdGlSP)b*dPDG&%sf&Ud>+X;r3~dte>0!p(C5a=YU%%3P$q;+Tj2B!WS&dNQX~-UAgYrAIxd+ z1@>&?Bk`qc5am=AdJokT@1JbM1J*e}lfBE?xeh+E=lXtR)4|yJ!dw-@GI6YpYa1tzBElKCZ7Za%WGZSd{V&}tY{QQ9=+|cJFgV&d^+4inLSj%oEoAQsvqu@~F z7r0xcflNx6D%VX+!xQa-k+vG+>^_cKiZ8Y87%7)j?o0Fawz6rf+4v%A89Hy7E4=*8 zK*cHfin#@S(!{?x27f$EA;xSA)^M62uDiHO+QJN1CRpQ5?kjrN@P?Jz({RQ3fk+z_ z4N(ORz-&fWeq!jS%3h}UF!LF6c{fth@#O*o6MkTHZ>cbe@Qjai`GBt{ zxM}s8Uw{hcU*To*>FT(g@|Bm_+z~4xD&x~0b1|oWSExJ2RL+|b%P5a=+pR=YKFlnx zFTLk?k%YJKqV`RQX?IXzIV$|A_vQ!m_z@xfPuL^zga~Z6hP@h7SHkOVBKMrLmT*Vm z8xKAe1M~GGU}ArI-m_sL+%!3Z#FcDhLn90x-a{UqYAWg8;l|fmeA_K+w(npL@m(5} zWw=X)cVfm#P{;6lwVvWOlCYwo?BQFB({^x-_qmS>Cn@jcESl@A3Aw|4y59zc&#kj= zY3|buEVVtG_yPB7^u_*O4Y{wmjr{p=9Xh#WGUY$If3YKTFL9k0-v0n1_>=*T{5k@C z=k!F1L#DQfm*dl0b2NB*8AhAdhRt1m&^*!SsE$S01dH=7Xm-RVfy#&F9=+wVmj?U_ z3l)79uEu4bZTQdbSAejL-I{KO#ECRZ`~)g&Az#uw!$FLE2;*k9#<`(G<;2td;Kcf> zvRUius5qB6RaBg}8-BY!#WfXH(U$!?ieoXquHve(+`DgU9&qu9Xfxn2)O6Oz>E~-} zTr=vzZM`|HOX5T%yaNB_E4a$(8Sy64<=rD}GoXbe+~t-vmcgH3J2}4nsB%p(DgT@H zNqz>J6-LYSd%sxrnf5@(#&uf|oT=|&uhz}E(i+B{ZwlJ#Ph0I*fJM70Shd6w+AQiw z9Cu%NN$J~d)r{25wlTo17RUs8Sn(tcmSc)MNA-}YXGnZ!qDLD_BfCYq0KRf`*aHR8*S+NyK&2@gFb9fKddx)CW3kjVJt#@b}22%;0Hv z;7b}P3}AX+wj=pm3@`FvDj!KJX&cyoL`|g(He*X2t{?daDAzqYnMSdiXS#v?xu!gz z?N2!=f4WG^&19rqV9MNi_|e)};Vd6*x(TDw5<%hotj<+oM6@*zdrWhxx|&OqxVq9U zXbRtEup3ri8Hbl5ItjZc8+iAUtAex>BV6Kl+IsL5KV#_DHH>1qpgh)>IqgBRJ-f4Y zh^C@d2HarV0kQrXiw$Bb~O zAKzW`D02Wa;{Kmn(mT9mJ>UwHTV#eZrOPw-%*Q`TO%+#bTfVTCqugq8#f8szE&&phwe%@0mDS1LACwWZy>yDadF5%WzTE!#K`TbhL*N$x9rcFTnEvVcDvxY8I{EtxuyWrWzk^G^b z7bjhc#6ub?g`so5gE7-@V4cOEQE4Wn>D4{d8r1;wzBux_YwaYJx8U14ZRCXgO<4Z% z^WgTWA)fi9FRA2(*;dQOJCiN}mEfRhz;+DTU`YDJ{et8fHs+rcY}TDpdj%FQhXygbfO}=>5-n5BFeWNoy3?Y#q#> zh4|ojB3Rigj+3?nm8VOO6#}g>NGCl3!atgeYC=6go?yoA*VL&FLG zQ;sk{|Th|q2`Mt8G+;sd;_5UIM)2D`pjkO;i8X6KYNi_oa z%WM1p_Y2b_S_b~74uJo3 zg8%g7;s5#mfTH>vv=1Mc;Fo1O(rcK9^xpqPymEDxYbscXMM?Q$v~7}nt`{ISzq~B0 zw$8%`bK}^zLQkH5$48q=IBobT6U~dRYj$_3&r|DNfCh~N#4(=-cxh1v{BZpVKjUUX zC9eobH;6{6uf!@e1GD+LQEldBYw_x@zVPYCBM9AC4;n2=;GtKm%l;SVA$5hre%BAd zx>;5Ef|x9{9k>N*=Y??h7bm&?)jQb5^b6ZtF;#vZJW^6^C!6$RyHItSU#C70bU%<< zuL}%#+f@G8W+!bb=!oVy9VA^Nl`R%9?hX5eTo-q4 zN3piy-a2?1$joYSv$3K0ZEARev6;#uSQKJUKhmE7; zuTS?yU}*qmrF#lx6Uz=%k6E!T|5$0eIFxRIMQ<*^mfnqJx3-D6E}|*EURx1PFRCn; z4)PNn$8Heo4n#q;vlgnJUm(&<4arx}@bF^?*>mwHT*Z#y_{l|D@+Z`rZ_H;F4~3z@ z`vlny@~=;nR$iIRbK6WoZLbwv|H4#AY2?CRxf{xyo>p?B(|B0(?GUardW%CU?}zrOHR0id zW$@-?JoFkGk5qpvmY#4|u?F2Pe}*omk=!eB3FO@USlItdiZ2$1RA* z%WthPtX~JYSSM4{Xh14n7-IyxyX*wdXpjxo@5Eqpe?EabafA9(VMmUOCb!KemgP`E zwu-KXPcPJv+b8T{!!I_L>iWGMY~{d56R>@YZ>&e6JAc-xM3a?%94ozAh<}bTMm4*~ zrO9%1thbaM>|b4uZT%c}J@IB83~J)#lJqR)KT&ZOAN}wmGjr}IDIP?#n~q$V4pVi# zGGwl^+;pxs4)k3~y$*}8;a6wrHh&}={~(3a{b{BpMZuo^hDbHZ{NCHwEd9nRP5;x$ zlvkx%Iv-y9@A-rp zT;eWwoa=%|bN*nV?LOQ;;Hjo_&11r4^?6k%%qd>6zNUesI2Uvt%<4k>EVq=2j%}90 znwIl1dsrlnXwaBZoN5RUpktfLa@?t%;M>|<+I-uhIcIPO!)+X>FR`B_9MSyLv4fYR z{Uyb)q+CIxzOA8o&gm@rzMMCBI?sGRTzuGm8b4NYgrdR5Xf<&a<;s3+8eWg9d$V&3 z@g!e>*ZVTDdc$Ekc8800_e^U%vo8zDjyx=D8_@YF)|P1V9yX(#bAU3N5rXoW`g0HD zv-f~x17>MeUSCOZ!#L|(pgzOVl;7U5Qc_IfurWQbh5s6)x^ajc{Tpk}&eeK+oh9GI zo`vbzE1+NH`BbNIn9=W4E;6diMzSTA&1uVSX>~EWNli()#B(0`BE=5W+0dO`TGWb9 zxb_tEuMWgMJ@xVPm1ur>#%Dq21h-j#2=}bm3ac2ns_!Ou(cIk9lP86~dlsGJC$1=H z34x<`;rfYJwBPcF;kRxTc)QNEWYY;}u;r3df^wMbn2Dc4=Yy*CK5MZdi~Pyf4s6Z{ z8*qJ<3h<}C})f{T7Q<*DjeH z3RHhiITns?Wzm@9?JgQoyn=WM?Zs+PRo{3W8Difh}jUNmo+>gH8^a;k#|)4X_o z67y}o3ii8-+IVjp$(J@C)ORPAQjdex%o)d$Rpu|q(%^|+YLYdIeROX#U%5E za67A{+Abixg6<7Jvz^jL-kxmF)aSkoqVn;#2}m)Gov@8&-K>?cYO4h=?$O1A?g6(M zc9UHnS@V8l-(zU}88$Sy33r?ShPym!F|uX!}__;SfA7n9@FbTz^BVEV&$qCg07LhpHp4ohiE#Xqn7Yg zod+r2&MD2M~#sD4wVjN9194lgb`Ega_f;k zvgl10NioTZYf<$+ApYb-JvXynen%m^yE!B7!pOpTe4dU8KlM(F5qqj}$|vHAPxL(4 zls^ti(zd!k2UC}j*3Vju!LbXKp3uzZGgTi3?67VS)_S@RZ!I*JPnUNs$BW}3rjl?S zUb!!n4O(WS=JIC9dw5VjH|~st1JGpGQ&8M?r`bf}wS$UJknR`W&V8yOoYq#2xq-tSsE7p21(^@U)hFL=L@K4?AYEhD{!?YC$_m=dfM@tk*~2`I|j;T^s|QU zg}E&Cr@VeeKHQ3CYu0MNzN#P}UwnZ#k4}P^qGO=qCi>(cm~Q_I!mFKPE|X(iY_GZD#dTyew&jDTt%Eo8>35jZ%dCwE!x&5xa_Kw6>$PdOe4lRlr; zT5qr~*MYyjBUY~D2c+rXXsRx0(=5?tMy8-B z^96dxzrKo6Tn%SRjJ1^S&^PQbMAG}+lt#O;>Un*%J@y8-TAC>C0KyU2pjm;HyBW&P z)o;W22Tu6A?|tpCO`9RO)nY!zXEDc7r7S@AdI+3NC;Y3FdqxeG|xibvXQL-H+b zTACy3RA?->?z#jU*DvQuE%%egOu)b)+2ECEjOR=|B-shw99Ng?kgy()wb{eIAo+sp z1%1W5>AivC5Xnw*)z&piGjZzU0dI@XAaRz5b?!7w^ z)wlKL<1QG1!i*&wRF99jf;0u3Xn6lvSeykOO^pWf1ri4m2N;0jI?@D!G#NkB?kfJ_>d7uMS_A1k!meZN&qoucaHD>10QRe_mqm7ybZ?rPnRasT_*gs?y`7QX zrd()<3O^dX94km$QL~*o@FQW{Jw`a8U1)wf*}ia%7Zm6Z|t z(j+ng2lYH4Ha~p{mS*PswS5r|I%1|Ujt#79&vlHy0r4}~ZQV;8Z6R(?P6ppg*RaP* zU+t??WBHv;P5FnyHE{i+1y{O3agalwASBEYrCATPK5rMmhz5Jn+piK^tkasXsIw$3 z3Z%Z8aJUzcuaK}BJFNOj`Rgi44|3u?6~_uEL0xlc6J0rUaurY6NM z8ybpLyrqqX6SSu|*w$P0yWU(7cJNBC4B=XEbue}`S8=wgYT8xw*jMgohqb)}AjOL^V{tUw{ zz4v+~c1?!oQx~cDk?i;K@))k)ezCIA-}e9i)DJGmeq89JzrCBMX8`}W#{V~; zDPQOR<@NbrHwBcx&<_ezV*&glgU0$#977HLrcb0bK6Rk8A2lW{bjlR_u|WX=R8c^$ z_W#xnkg5*;cO3}-&FTNsQ-J@|(~JL$PYJeOc#Abmjkxdc)8afj%HundQNP1N)E#gU zlZvjOsjjztUEvyAvUvbY^>*e#br<3Fg8JOe`y*TG*Fw(Cx5nW*`ZBFuCM>;_l|{|0 zSiz7EXd4m=L3^XPZOA)j(AWwN-EYoPMH6VZW+BVBS%$aw^q29O^o;1b9S^8D+^xrJC+o;ETV0vf&|6YNE&14? z4&ODS5)>S%$a~eGK%G#X*Bo!hN1Ql_f>)y6v$=SE_A2@D`$$eryO{0)Q=WSIkBF*6 zBPw3Iz^{^K-2J&RgtuSDJ!@abt%ql`{F9ye_k<-}HR8&*F#)4KgQZX12ynIC$5LvX z6^#yCa@EXhMT;nYd(DuG5C|I}y3pQCoQp_+MO}Yu;V{bkXOj zDIj#K><|_gw~?)yaG$!RB4wzx^0Rci{u0O^TCyvWU1fp!CKxoo2Ur^zO1gG=E3~e> zYg{W!RI4xJt&-tTm1meVs6TklD$&GksVL6R=*|1}H{=`o>hqYUZ87Ql3HnR`|LELN z`4h8K57RpK9mF@T#{E*~;7l_CF9P)C%*J!zy3rCmwr7RLZ1hqnXgX59p$>a1YON@b zEf3SH<^Ee$HU}IV7vgoZp)77otfW}wX?^vrSnwsbBGavCeL5mi_8g6uUk73ZFA@=xaC+N?3s^ zCZn>y3TkGDzMaQG(dETRwqexJ4t=Y;seIuNYi#DemzQJw@ga~({e?$WGLU0q!q#t&=1JSp%ox_e zo30U<_InJNy6(~peY%RN9DkG9P%|SpQ1nVk!c%*mS#NUd^gY z)mW}U_HD7rt2&MyoCegq&y(_s8M-BER=#g69UBj0g|?xf8sT|e0bZ284ihRgm7y~Z zVCvgZ!n1ZC@p|A|VPuq!<6SDjb*Ee`*||$(bnC`F_8)_iF6P|ZRhJn#P2*%Ebx#l9RpJB}a6C16Cd1BEw2|F-venA|(;JMN-qwZ84F*{`mKyWUlWmP5zLO@j^OpemgdHVfh; zm^4)xM8(41{;Mb;I_FH23593WwXZ)Taawc z2IqVL$~Qi!$~m~5e@v@z_j5HJe&gFqJeAN4a+dVf7Br{=Gro02Y6vNRHS14J5-aei zlc{j#(i)*`u=>Cvpr(qF>?_XSSc?>|f_MeO)@{Wc%geAeUQ7M%Eo5@gKx{KpUz+>Y zL^?iCy)#MW17@7)Bfgi~L&iu!{I(d0tF$GnTH`^(wV=M^JEa@Ei;PA4S;=T~rX^3E zelLs80n`vud@Op0x|)hy_epyooQ5kEDk*~L2Vx$$5dOiB#n5iQCG*z3+!pxBeX>9vKz zd7H%RIO1cGpgiHH8_eX!vjr!HC3?XuN>}WO|^iehW`aTfg5bE*WVS=xT2cN~0*d9C506 z{8Z}=u;geL@JX1ZrJX!T`V9&?^-wk?__{##T3MmDbRxf754V%eKkrss}j2C?6YCN(0BO zVSfHAgL@HW*&3~oQ2 zbdIqko|oho)m&Dq?0n-}u)0sk?|zaQt!V;p8XpGI`_kj`OxQJc9bri_S2$+ew-Sr^ z(?%-Y*wUpb_c-f<9}fwrda5o)ENLzVAJ~shO_m8-AIQgTR%(8_ERfVxw!9In>FZlC zyQ7^XJA#eFr8X}$4(Pj>!3MBkq>an9nU~H7MtCe7&1mlBO+wkRn~?HH%bwJvd8!8i zf4D{8Vr+Id*$*B>a<@HJX#I65E0oVz+8jIN2TOXHaq0?SUs0KGSgG zcV=_u2v8p2*Pw46O4F03Bkj-#&ECw%5#3z)sk*y`ih(Yz=7Ts~Rc_^9NaHL*o3XW} z%4wT@9fViWKJDX2-QiE_GKH5w_Qr^t{UvDw;-9YQ+4Tt8b>W<@jk%_kF~T(rA5I!_ z^E4>4jb?h5ky2qMdfg{|Zh~p!*GtnZdv0|8v3TM#nY9eNB?#Nt?NQA|!b>Th4cGG^ zoghvHU!gTjECeoJu6Rmma-hG{TH*qDt{wR+RG@<-NT8)es|U&C9U6 z)&OZyp|m_{UF^#JaOgy1TKkl;mC;kdUpJ7}PjPr;gDIv}&r@8*8k~%QHjXD@rN5g{ z`AGJbPv)f~@i-=|o{kg)V3XJf=XT!$ZRp*K!$CdhRbx93^1KX();~}>Mt1DzB|UGY zVa#N6Nq7so?e8FAG`<<}>~HV?|8Z^q-z)Vne_EGMQM=-UCenud3FSTb?Wc?x6&_CO z^|AlDepk%`%A4{3t*JhB2JjzCpH&hqf7x8n(Wh6(PQCwiFyLP= zioWolwgvq4BY%Ao@Yh5AUtHn;eYO9;{ye@>6t=c|0C}1nEVglb38@w6easg0r~QZq zKbt_nbq_o@!`x%)mg#u@Y&Sl%jw$}yzLLf}{$Osp(Kw8+hJ-6Uh5MKWd|2XE+!VbX z+~@7X+K9R|+N!yM`rZKScdr5h(o=u$6lc>TUB|IJ*pz{d0zK zXDYLd-H``4Yk~X{;|o14Ht@Y?7K@&xYtes_h3LP3AU9}U7ZZ#JiqxQvlD;o*SuTRa z=-1e3$8wqwjMlAoB3m!Jm=b+m)5rC&XsRL|B%*P&acUf zuIQq>YdXZGZ3pVm&I`BE`!`lgni{X+-X=NBu<11Jw|rDGcXJ;&4M-Q+9lu~~ z>@_xYz@2AAWMJfhYr^mN0g<=%2<`}*51j^5i~XBTSX|s@$bJ#PWiv-+7(EG7 zKDg3#9Ky1QU!u?_8B_0_RQHMz%~J5z4r9p&Z-F;CRbfJlM6No&Qzv(HzIsu(>FUaz zED$n3kHRk_kKva<9~qgOhZ%1!p@Bs$HfxnG&o&&7U%p&NXNS|6Yq%Xc`@F&0lj1Rb zySY@|m$Gd)EW`1Oq3&ME6%~ zv=PUu@?|s|xAo;>;kIgl@IT_l%l5p-0a3HChlw69u2v6fFW-Q(bfZLxQ4t!BeFbF? zpTfT7Rx*BfbG~nR0+PL1aZgu>U%D6dvzCdN7hAH@pB+*DhE3kEdw8xhykO^vJASINz<7tA-{AG-}kr* zuitEvOdoJaMCxAD#%}UFUQw?Ty3a@ex-X$R_y4@3hpBG8Y(6(o)=L8m?Y z!2MPV7JDbMeasHdyI){Vzvx~1IC^Gdb(vXurD0~X@tTyE);Qq9bo8Fx6|)DAl}^3w zq}zc?JhC++*@9U$;qc{7j!?de>39H3j~s;jq)U)jYl|j*kBg*91ANx1Xwk|&hxOc6 z3*#r$hc8{b;WEo5EYtQk#eu$TT)DC=iy78Dp4&x3hnNb7fzQ>$4X3O{xa*7B<{^(r`|H6XbIl z7ivpwuRCJvjx)5I8mwi$!)T3^<%37R7|Umik9nN8?#Nr6?S)omZN#%7LkU;baLXaK zGIGW+Y!!S$OkMW`D373^%VI5EJLQYDEY4dG3OmSGc<$C#7;Civ6|T{w2VD5Oi256a zbIL>6+2Sdle{vO%1};LHhJX~env6993XaQ^^5@ev1Uzh^ri)(7To+ZOCWP(1IblCKJxr#ac$tv7)5b$W-SaHAPa&(lyoMxPMXP&fwTYP{WP0xnKse4) zzn;Tb%bPT{B2IXf#d10iq^9IT&j54E{VIIuQ(Z9hex_~mndbW?Ekwcv5%J>?PG~{+ zPxzSk+g5f;bCUJvk7NCF3ZZ`fBcLf4jQB!&H|zs6Jp&_mWszN`LrHoFme$*^;uQlQ z2J$cTj*zB@@Buf&(XW9O_phCV-XqRp>GJAmx;`E(6Sorw=&?LaJz2coj28`yq3c?W zv5ik*{m;c>ubUwZ7(JEZARYz`c_heZ8sZZqu3(hUy!F13NHJK>zbX$3ZZ8$B2S4Y; z#XK)^Ken>YW`y5ZbR`-Izr@s!li^$?OCT)9{KLmIl;d#LbCGPNhp^FJ-AN|Cv ztgb@EnRjv6^o_DfzBP~cage_r*5ENm8*_z={)3!|U*3XO>|!)ndJsCDw%}9i7h|W; zntYk1F%R@8)5ff*Di(&0#?-H!u;S}{xV`PM_SsI!DBm!#X*kCXl^`YRkcUZK9Z7Kv zbZ@MQOI1m+CC8@3mScG7^0g4z8f52f{#ejZp9g3!gZr3Wcs{igCWIenPRklV_T|Tv zuZ@B7iu~=0*7bfN`8F%vV=olkuB_R)w+PNvZ7khg-NE~jEThu#O=4|XVm1@=1863wT|CP+Ty^J(TMoq5a*-jsnuHfg!?4Y&EJZOD%s)q8F(L@>X#wdvs zj>;IPhMcZh^xU>lVS(aiD5EuS;DDdZ&EAmTilv^+pNrAYcojyTKMt+#qb5Mx9pWeK zgn*6SimUPVwo#0JhG8#lrNM(;pm504dlUBGc?zwtEph%1p>T+%<%s?vnJPA*_TD9*J!o$tw+GyV;dnBEt8IT@|vtO;EsX98G{08p1RS2tA zGvX)cT;sdKT-ckUfBg1?5Yi%N80iq9@`P*wF?JT^x~u+Yf1tQ3$8EYEPS{1*=_(T% z43jD@``erlq_G5PT_jzKQ$K#d{A&^hcztAq-=t|LLiV&E;-T4!BU$G7FG^#`e3J{1 zSJFuOKd#CtN5SAh1AhLA4?h}cM1B}9W9Mdp;vUjJf~M|3{U1N^*-nl-bSf$?)5bTi z%?Zo1NJmT3qMBK`CTcnmuI*A;61H&CJ zk=|(`Eu-8qA-fg6aZU#Rse4%er0>y(Y4mkqnhMFp^hB2d#V#(&&9rWq z)#Id9IN_SC%^Y~@pP~5ddpa0a`=qtpzlwB77ELr7t}slkF`)F)X40q~(4f>xlie|r z)vjHex2iBm4$G;IMKhOVk>=$puZQh7lh1t5vD-c`pwq>MT=|f4mQhSWN{%^K*XDo8 zL8|!5D@hYYuMK(Rc~4Hdm->%7gLTEPpzP79PXZ8UA>lf24Noz{!ILHEwdchJ2Qg)T zoYI#vB0paEKi`Ra-4;@Ckg&QV z<=JwkbUSeut#6z}y++ZbRZ?+btze*a36@QKM!mBgpg$j?rRh*e7)g3%9r#73P^_fk z(6AV$@>Je)~_-h?~ zuJS3o@?ucfqHhwT)+n;pLh6a!*H7`jq$ygM(@$TL_6E{~Qh#f=3EB z(Vy8v6aNi@cvhAkX~v1)*-+mKywi><{6EzH|8?E`-*3+UQUd>PChYyozJP!8ng81V zA08GlCOjgHX7f=!zuNHs&(8@|dH<*&^-MsO{Fgs!m@+P?y!_xlE%^V<$^O4t`>Uq` zxe?2$*Fr2Bt+|9whw8~{`wG$L`eB@3;>ITR8ID(uotJs_uZt;7+G1+nHK^Kl0;mym z#x2&Mvn;~3ceaTIJ~24?NEN;~^9y)&ZA$&Omtx4V>YPTz!NoJ<*?}6hV0y?0OfTXz zG-Ez4PhQDs_dGa0x8C77EiooCLametypzFH@i=gzBhVckwE}XEv^8+jXO)SFT%9X=%QoA z_Ubsw>&p$f?UI4Kkmi@}KYW>;t*6JwI~&Mty#g`E)Kg^n8{)^OGvt%R2y|GN#$Jv) z2xl@@!@h`?BIlZu^sH7}?)df&t@lrrmU{27eX|VhR#*thR}x@n$5X7NtF`cS{G|z* zw^43(TrLIeqr2euQ{1nWhS^;aE0olibS$1!t5mq<^x?koN8u>VupM*oF|2d*h1fIk z@Zw?#BfH2kZ>A%SL@XbDIOfean3$TU>FuE>$==LhMju{1p7v~3biq2k2IJNaJK^NB z50LyQ61~ri;B{NggbEox+@l{;J@Syo5{eOt&+)_BXj$?3DcDT4)AHj=ppl56Mi{QA zI>ym~l~_|F>Z6{01k|-{?NA?zno*yCrn|+H!G%cU4&|v1(PXa}cFfgGYH~xQQ<^^Z zpY4ZqJWYj?oj`t(x6iM~W4~JQ3sfJw`$;9fu8e6Z<~)o;)9~sGI~H2qTUt$iDB69h zE%mtvd_S6wWLwRwFk_g|#-G>7o+L`^n#e!XGI8!wJ>1!`{qe2Uu6m?fTCw_#@-#vD zYv5(0b+BishV7}dO>9ZDlV$N6dHp(;Fl#}uqz4j9C(CXc|MBRpYt`e{*Z-!LAY)KqI(<|-PDd&AnUdc$6PKf$`J zsh~zw!jD=NmCduelc;CWO_lfJ!-j3pw{AVmwkd)IeokoFfO?(n z45dB&D_NGt2UpZMg&%KgxWnqocq?lpsJK?g8L+>Jyc-gYg9f!y_aiT4HkQ)|RYR5A zudY=9lNUpzPhl9}pSo1@KtBg--`dT-1Q)TakovOp=M=2;V*~VbZpi6cJr8Xd4>ZOS zPmDh$k2iIJckgVq7oY3P4G)L%?5^P9cCs1`wwa%G=&~2@S}>4e!;aNCXe?<|rivFC z*ElMx<9$zl++{J2^=Zf#)XQb{I=b=7sg5#c^K1+ptp|R;7NGX%ADBDxGEPkO1Ijz8 zuE8b05LTVLh)o)Y!uTIK`1wf9@_Tdg31^hwtX6;rl6~dGh+h!)-WmJW-J$){d4!mq z-hmJKZ3nNPJQ8#akrFtP+jXb`G$xdhZvp2-v8t2KwK*N5kq7JnT`y;{<+m3JiZjtR zW*?&%5i^ao8e`9X7(GFsZwc_0@n$u#T}Di+sVAQc%4^N%6Zb*pe%1cjy#o7Bjt7bX z7F=gMX7s26{2pnppHtviS%UCgv6k$*6X!U#6cn3+@(;(Q2$+1L7k@v@Snj>lP!4=` zPGeWC1Ectnah{LFxy>!5|FY8xpLk7|tvK*iCppSs5Mdt8ukq5Cd0)P=le-7;r=Mcf z7*p1w?nS~0s;!9BqwjUV%#)iT;PYy2t&!`YZ+$N`f8efc%H9WE(rzy?QgUT+Neepp0ZND{|?_a=<0B0kM>3xhHY&?q*C$Z=~8=+I?7N&4o-T$_we{kHEnm}V} z;dOp8>Q&f^#Cc*=t3zy8S~ZxFTbH~4av@#5QMP#hp6%&R{m2?UQQRPOK9%6jw$0#< zn=$COUN4?6^WlVJDh@TFPv2nMm?kRrS@D#7aQ^<2oyjm~yTWaG(4ik#7GFym2UX_V zmd+*Yf5?)z59i_WW{|kJyT{Ts1BA<^O{hl89(_=out|fBBAmG<_Z19m@Bnjde=CfE zfVt8 z_hlN=XEDLsf~Kv-VmHr9T*Zz&)ke@rT-GTz8yn3FpnBYUq>;QaWnCMwu1r7~tz$@^ z;JM95giWpI*eaxkykiz7iSN|8k#Yqd&iP50+MDJNWDg_$iQ7)m?5$+)Qiuk8r>q;d`+uUq50Q+t#ZDi#J!1 z^c^7E(RnwB9Yc}@j6Vv~M;rp%p6z&k-%7ZzO%haz)|X0qy>EP2@i*T#_XNIkHfPty z_{ir`W-vJ6in=fOaJ`1q`yPdwl{X3dy3!b6A34ooy;kMp4c&E=_jf_r`?qnnrk;5L zZg^NgcInK?E~H}?!o|;L8F4t-ZZWuAs?7=06zAdBO8Y3k#`3bAKPgsbX+KAw0fUsq ztZqXFeTyn{(j`hG;FX!KN{8a4Sqb=j$W+MfmXBFeOHjM(g!s+s@Mi}nim!U6q#x{H z@1;HJ^W5E4_xR~mGjK`&6VPEoFTtM`X=*yoBO71L(p}w*<$5MyP`(A_{tGq_8gmsx z>-2sijCYf59G(K@fwbP32x^>jgkBU^{Af~GQ)vW7`UJY!PKHK@kC(?A<%(1~h;j~G zbP|O5%Lr*-LeJ@Y_u)AO#VqW7Dk|P34iKH4s!A2lN>3f}NT=&<2&7-6-qj1xmHNDg zy{yOyE5zEZ4dsG*J+Y}#Z%`wst7{W*%wrEhc_;5Tc!hfnJ4&5;Cq>}s`SeI67-GN2 z$tw#dLgdt{g2p-{VX7Q4_?niqF?8JXOfy9P1p1j31Ld$L;NoEMD*QbQY*bl3I&h1r zbCO=;UxwG?o4@8E@gp9qREAzQw_#(?o|1S0eun(k)^ya7gag=m*I|v~IKpW(T1d0P z7S+?fZxaTiH|xmHCx+k+T^p`2E-lU+-p<>ty&c~k2A`^^)&la~kGqWcp3?|wU`;my zVHaz?s|7~({R%4z8_2t}pNNho*5y7-y;zlRc5#(-Zpuq%y0ONGrQHI6cKvnqmkOC67sHo(fs zdW6ZJNxz4S+K+<3DJlnO4I>OvDv`FmiiAHba_UN%>uJSTzt^EPh#}C=T8e2}$3#Iw zkCt4;Dq$ije&oAzu=~uqBDY(ALHWxGCy~}kP)UbTFVSm+>CO3bxf6P~-LAMLi?kr8 zwGTh@X%C+EeWEZAmF~uV7vOQP+MN6eL8c}=wt_1s&F-;VPS!lnG?b*R_^-Qf8R@{ElBV1nO5Kb&-?%X{x$u7T7>_bm->HQg#T+Rz`qn4{0|!m z{F_7DQ`vy(5HM!cq*0@T#s`H@w;vxgAt;=77>u4yjReBSg^pF9p!R-aMopX;s{S{L zo;&#e<3j}+Sr9(e-+$uYDh@`E4;>RS<$v1Q?_b~b|GVE@%=p5}Vs!C?Ln50sg-IW; zZro|c3Gq1KJm$~J6>Zjj$D5^X#qZ!5tbg2k@Qta024#zId58~~8q||zTkN=Bv*Xyc zo*kd!76!4yj^f9L+i0RF0_TOP>_G8VnolB0LZ~6ig_pF00mS%jy00WuXIRtf=B%*&rB0s8ETSoR< zfquH^;Y@^XKJb>@YXkxVyVM$?3)=xVyW%`&WHt0+Wz?zvX}Se$Vr>ckk}j^m(hhs=BJW>&U zqfpa{l<7E`)Qh--k~);32KQyC`OM=>@OwZd3D(DpPTe9zIaXPx_7gGMDFNJ>bfJIuo z?1!tLEss2A$mywKMl#!SL*KD_(9WPeo4B9t9~0VV9`bkHhXzf(!xsy6COcGD&{dir zPjGpG4wbru6u}GWk9aG)AD_ajzg|UqzON?vmK{g;%}vPo4mByC zUyF+0pT;jc*o?U5Uy6eEz}fjXz3!M2*yOJ*PTc%?n*<1 zJmhu8Qi@qx_;N6Uo<(_sF~P?$lp5fM<5P z{qr=`q`?8yePVUKpQ!?dvCx?E*NDNrBELCpsRrgHT8UHzurOn%s*PB-nukS^1 z{>N#8KTLBAXV3HJ?pEhIY;S@d9^Qxwcqz&HasHG;3z%;tz@MDEyN>Azr!}ffr_36P z^1dy=&94!NfF~Jv%8$FzR!Z1B8}_Lw+I4Io??yt=&$T*wGISd94<3ra#`$+4he^e- z>LjFiQ5+dO2q$(bPHUL8wA9sn6zrXQIW!3$`K-d%SBq$3!ZtQH@w2Z{WNnu>d`a_6 z)V=t2^m=nuzHFr@H>LIvpPL9D45v=7xG*665H#_fV7m z19@4iN?iJy(#AhGX`Mpd9TPsMvD`Hap7xWdr+qqPxu*aGD&Lm z0d$~6GMXCbhrx$&H>)}$1M156s@M*9pSX_P&i^5!#MxAGi=UQ$=wu4B8`O5W3bnc( zrtkS=GKqh&0tp6|!#)^;-yuDo7wNK}F7s$db`xD2vT8m-Cd zJ|gBP#&k;8-M)^gqIxRCrA{nops4F1!se$swlxC3PaB*LhGz;;@KR9zCUVG=3{gh(>d^! zoOow*Qv3cneO*6i+-`t7>eJenyD|C^`(6K_v>1Ge4&wY1G^fl|3Vx1%jW+AOR|K=Z zLF})GeyI173jJ$w#fzO3@`b`Bju5ah`to83si$3q9?u8+?#QrGSf8y8{tb`ouG@_^&ai_*$a2o>BuPEByMSmGWh$L0(4QWI+Vo* z{$mN0xbg*RJbNl)K4-sAUE2RjNzy9x7AI@99DzL%unBHcqX!85JDisxrhNTZT;V0H zxRRS9$=Y*|^#^wJrXTM2V6mD^E0)T9u--L)1-R$%81qB;&dBH7d;gM?_@aO>ySMD1W8`{iJV;Y zgabR~543QiFh4k$%WUow?9rFIe5eR16;U3oAGd%geIhyVg`~@?VSLfRTd4Gc&Unk? zAw09k0jVK)X3%z?*_P6XnT=Z!(0jO1INX*r!db^bhmuC;5HK(y}<)bUNf0OUc#|_z&}Y(N8j5++*bu* z$SLWR051&r2?=Ol6oW39AA`Ku6MsA1i6lSTF66$6{#FEYhs5=j34NK~qXTX8Efwcm z)|7TCDaYge29rMgPjY_T4Z`9Q#3Ty-LzoMrKC~hyh6M4x!84)^uCg_FkZFOYIQt6=Ceab8oC7MMcd&qLHr zG@E0w?7&wkdT_Nas=cu!sW~Ky`8iT=YAVT`0`*Q&B06%j7=hdt`%K#oc`M{>>&sHe zlQ7sIY4dy#2~jF3#CtYQQsQ}8+V*NBJ+V)WHryM`&EK(^!1{?o{O3Aee#5u&uZ&mc znM{(Fzvat}gT0`z4%z6l7~Rnq!&TwC$9X=(xG$y4lCkgFp@F4);TkhufzS3qEZ=`V z+XHv47R;$yRAXx-$Scbd#nS^k$d0hF!#V--pC+hE;(oNhPJf)dG?DM|ZYJ6>x+-1s zpg)Ej0Pfd>d&ks!5%W_luYi0Aw;t%s>r}y06-YTK*7WmTSQ{khv%!kh}B7s>iu8bxPskK{E*R`T1g}G8vOq#md7y;P4I8 z1B78Mz{A=KEq)RMc}8t5tOLl{WzLk19efto(=diyzq#W-t^cF@Sl~Tl-Jk0w5P;lzDIudlsxZU zhKp+hG5en-9?6}(MGE(1-)_6TOQa5#OXX^bR003@lZa|*QjB( zSPgJQ!>@m;q%w_KtyW2lQnN*(RB1F4twyDk$YmC}!f4ehOjZj!QL&p;Ymu20@QcD^ zu}YL`vlJRCwGuUGLS<4}4Qi9NN$aCz_89Qjb$5^!NlmCnd?d~HMNKU8=i#2!Gw_|! zrD?71(Wp?hBB;{i-6(YFQBt^mZ7l857#Dc-fs4K1ja?%@AftZ>2|o9U-;k0--*s>& z%bq{hbD7D=0_TWr3G0b3xa}m#U-k6!qs6GK-())R{aC%ZQyPsbxB^w~ZJ~i{mZCSt zj9LTB~Yef0HYU_!2{Jiz8^@tL>;< zQgt$D-fLnS-h-SS0e&9n!{+$m!)qH*(x*M~8`X-IDPy5czbEofGp5pFA=}Z?AcAh~ zyv$vB8i+GKPR2cYwLy(OjOPKBJsBFkueca@eBsMlJBlFB6TDb8D z!arHXeIGf1|FoxxQaQZ0RVAgEz zQ~%RsqA`^W8E^=FDe_z|Klp)a20LZUz2!^>tR9siU8=y9RxKiak{kTQxgW@mekIWl zseu$YRE%C9HIK|}vOS|!3@j$a3ViBwZDN{q7o~3>NuYoH8q0M4(%Es;y~PH4?m;EG z`teRu;@l`QXMz^rgA2BY<(q;Nts{Bw0nTtB)^oDwSVL0a?K0y3%|O2d^+&U2i}Bu9 zsT5>@8<+Axmow|pX;)V8h0H2Ey=^kiv!XG2;T*8y`jqlCpIdb$ffK5|pWTy1H(te6uX z(p-;SHHb`{+Xp{>Px+7nyU6ZOp?pZj5>yndNVd$B-0`;+jZys1tVpLZnblgALZZ~^ zloF*?VU-wlCb>jvm6!Y|dNIHC^k;H>emP3bRme*H6~e<&kz~^ges02YdSX{7 zUN|WqQA-1;`y&ZuV;|OI7B1%(iBR+X=-$x#`dw;2dNjU0-u3+n8Ck*y9avY0y4E|# zf4tI=4A+gIme+;O8tUth+ji)v<{?u zDsP433TVdcs)3}(-Gk}NgL(9J?i!p>Z6Vq1?u?n-5<*(z;T?2X)MgO=R>Z_VIDQ+2 zp(VK0n{u>px7nmZMg!^++k;LC4?_jVuA@Hn2cWzkxAGuk4xUHPRSii-k65zxbU)Ix z^D3IOWd|A=SdkX*I+}Ex^$bnc!Lfvj3uu1ca5QpQ3UO(r5-_i>Z^?sg;A@o)sC*p_ z{!w==Vz!Y9TWPp173i+E!TRe9U!m#`G`MNVMC7u15?bY(x@6R5PH-8zw}0~`j>j6 zg$QBL$aNBhRR(E=Su2$owJNE^s#IE4a=BTjR>_3kwEJ(pk^f7*k;)Wuqe`og7^E^C zcp{TgqB9zl5}8z|Rm$WFjoM-odeip5^hT!nmwKZ!DV1uq!YGkj4Khf%bXti{B~?i@ zW~EG~P#D!psb#>xMfsE4{C3kregCi=nd;v$9J5-cQy7&NiAjBF+ z@8BL})cH;P;f+o3?CbN;qk46ae*6;hypou1pSXg$&z?qy)Gv!WUn_~5##SO1?p8)u zTX(?o$Y{Ey=xp-k?GS!)atkUBbHi@m=M(wykLXFTAI+>`Agdcr;gDoDce%tKQmy0} z`t*nhi@aR%qCW6tg2oH`M|7h;aH7om**o|=H4D=%7c0>1EjFX}4O7tix@r8F%OgmQ z(4P2M;t=}q4bz0%^9u6HMNSzst zk5%oUw~ovp4{ARnGnTs1o=(A#t>vN59(dD2SFS&H( zD8F<64qS6|Nwm#(C%3i31XNcO$Wc~{hdL;{;QvhFDvit{ zRch1{oz`HKC}k>>#9%e5VFh588Vypj*(5Wz*;bn_FxA#KjEti5?(6w8=5e%f@**<& za|%u@orulyI<)zQPAG+UMlUYU(Vx3hkd|;hgqBYFjHda0=B1-&qQ!;Yk#5zlkvhZX z)7!Vk(T~k{prBx1GWBj_((XVWQmF74{N(yXTKL>p`0o)&(sUwir)+>?wg=EoOTMA) zra%gR^UEJrrJ8|zQS6e3u)XClUEixP9&!I9>eg3*o(+47`p}Vd+Vdr-RziDH)vF{e z5K^6%9 z_{7CM{QKcoQP+B@Xd-M2_SJq#PvKLz0rF~G1<&$yrA10-Jzh_~!S<}~>TM*r(Fp3* z!4+RW6p3o@u0iAUel+I$ScE*`$n7a}$*BeN(CZ&xQJ&iONZgPicuMqq&V3Be(s{{Z zQF80w3QvjrQ{nP|XNIc`Mwr%0xdfaqr1MHCtnmycVQpwMYE)LU*{ouIW2R zTQu%LDGKkQDZB&Wj~*Y1SuF$VfOzfj!W5t1i4rUe5WJg1@a_TsEHA@Q%S2CG?1K7t zf1bUsxTJPr^(9;|Y&@DX&Iz9gjD!28s$i%~QQ7yl)H4Ev2K5GbzlNYL#gUQg5xj4p zPzNONZk4k46g5}or%<<{%RTbq7JMD{j)=cBFP^}=3^?PqHHNwoJuze-Ik9B`h4(=e z>Nfnu0r!#9XJ>LReKvx389da*G1MsW;yEQr&~iV_-r;q-_>p5Z+{0nzpx*YAf4;Q> zf%lP6Pb`evjx8qCYM=(oy(o}OpjJlL6{*7N%J4qWn=anAgR&YB)E4oZhj-Y!Zm!pW zO7NaJ5G9vATBvbMe_WdOrfTYr}pbfh8Is@3J>sc_7W9wIwJC&>RUDMuDqc> zk9`Jt_3-@WS<$0~`+fKRZYNwnxsG)$=d#@;#DjOfEnXm2IURBMtDESZXq4BP-+yH< z8vNt`3QKO}CTi17tN=G)FsgKrG^nkRG?>*8rUmnmE9DBMOaWG+63PT}uo11nY>-$q z1}*pugBoI~Stc=StrodjrLt(XQqikFELf=xOAh`^Rx+(dr-WQaVo+FM?O+8*Wl*Wj zuol%=jB1%2j*gItUgpZG;a{=>PbfDSrE*{(g-EP|1Vv|t3Wz}kDS}l8iGfxtdXX!u z27k%Q0tFhi5hk75WPypOH7X&%!s1$IQEQE6lTm3>N=46eWmW$#S*hhFv(>18L`NnA zRz^rIbS9}*qBU6*T9Z)-?nvrCKZGf=ps8Syoy! z3J@UVVoH@lr%+p^7PV9+dXy`xnt#bkrPau#Cdlqoa#$NE%__M>Ym}=bDw7$8rGurq z(JZ?A2P=g#EE)eLE2~B;wOC*n1}HXy87g2@CZkGXRV!37lTj|y$>pLuxw1lk$x0)& zTBT|ejLK>O3)Gpd;Fz>ViA-xU8$ppOsZ=GpohvKuFIibMCbiY1R!gjAuydtM4K-B- zn1x9rg(Qk~!l)J9%9WM=FIgF_N`pmZl1b!p9rJ-&t3;~>$7C_fwNjnYq?9XlqMNy} z%A*tgrLk*t3aQBe#vqqLeOalN!>D8ixkRP1Doo&tr8fi<^Qt$;P1LaCM+G%B^pD0=?~E0qGm^qdrm*rab@fkH zg`)F+u#&05k`;f+>YuDfMCWp4CI4Gi{~!|_) zlB@sasH{>myt`uACiCY?3)HfVa_~+Hqui>~=;RiqLM=M^2P+xqO7fSi)BvuPLAGhK zs95ZUj8Mx;AXd3rq12iU@M=sYI*|)2$m-YponunSR7S{{bu0>lx3Fr}kOx9Ws8YdO zH?_i`fQTac_y;Q{z`(y8l}v7ySxg$OM5BhZNeOOBqLb-l5~&W7Ub9-MkgDaPV}Gz> z0<8L%tSm-_++YRLn;C&IO$tqRKWul|Gu=;x+Xi)2nS}9cUAdLW4 z7A?#$3tPcx6egY8tkp@a7SWMhScN55{>xFx<&ez6bd{JbCJ2oti26nuq-jh{3R<`L@5*oHOwXx)EuDltA>9w zv6YD0Xn-mx6dqNggSoOQ|Cg-fYKsi)LMPE^S&c)-1gJ5=&|uN1P)bc|rBy9DkSnWz zzhtG>!k8d42QE^`1FagJ1YU4iBpQv%q>w_nT@E?>{#;nG_y6vq82kHwcjOl2(n@R) z#W?>IKX%f=kMrB@9|C`zTtvI%B2nHcE>h3-|4xDFpDb?oe`!op^3^Ak z;$)~n_wu}W+cMf|d0(2?#tm=kJRZ+o(S@r$>KJ;ndnocReob5384k)y8$%vdQDD!y z95T4vK^+fHB#T`$dF8%V)VKIRcvCc&KlW}p@~q4Ag{LKRc|X7=yIaHQ5mQIn`LQ3* zFP%m7)$X8$7fR7nz5Q_4=1b{FV>}k`Z9)(ADuf#*M(MtpZ_{<BBEkj zP~D2PsJCAM+!j814V4G+&z%yetT<2ND>XnJXSd=m!xsN_uxYKyrq*QXq738&ha_uL z8q;w2V6Nip%``LQ3wc;Nk&cS2fq;e!zdlEfn698Pb=>e__Yv57Y7igY+y!~xl+Yem z)5&`MJ5v5cbsD&FHPI;NP}b*xy5|VSK%dl}OlCCpz~bN==;@7@16Sb%=e7Q(M~_vZFp&4gQ(&yi-Uw^HkFFDy%& zM^^ciVhRreh4=b@qVRuG=o#1ou0oOxqLnYzMAG5cNdA6HX~AR--FI*f{;*{^&S>gI ziX}Poz9rA{*1YZc^5av<-D;(X7Ip*r41daf7%&N^t=Wsp$rbc`ez-^KOdPG|GLFo< z_=VqkYf47bTYHFq)rD9b7f$o{t3cJ&9`QZn5FIh2Fsfu6LsurA(Z6sTO!br+I zAIiHm{=^lV8Og0#P!v8R+D5jH3B?jZDx?K<(6@aHcY38>#S${Xw%-0z@_u=W#?q@`=vpY z?R%~j+6MOa&gR#A9g06*I>%L?1^b4EpCfGVFYJ*ga7F|1ICY0~EwzI@A215TSsf^| zO%i52URIn$1Kj42YIptEc{Rd01LGFtV`m`H;Q6(AIJbljKiP)fa0wyPLN?Q@Pg~Jp zZI*KTt1d>KK3|bE#-FltbhP=L5u8s!Dh0NoLnDWw@&!7R_)87>nnftO`?&%(mp%h~ z*xw>J+k~)lP+BJO>2PiVg?+T_%oGZHezC6UYyxK#phw$BaMJpZuyJ0p4)&@eU-5Z< z(3_5AM&&7F{q+eSaPx?)|_j^AG=+R<~>jX_gQd)h`TOC?_YJqQJcn~Z>KD1 zVG%#>lyf+)b>I!*Kj)>=7jN{Nx17p&o!JT<2ysOXTr9YT`W3n2oR2OUwiN|UxyfBn z2H>AlM6|-#ddNFZQ~JJUc{1wxe7<0VU1-t42ZWpZgw{X=osEk^%ch=1WNAOFkyz-G zz~b1Y*l5zDTu+K!htUmBYmg)HWBJeByYpdZM09LeU%YH;YvdDNoP=L_M&xVikR*vG zJ=77?b&9q8&j#B`zRP9cP`k~fgyxZML%k+A5e}lL|9KLMczprQZQ@Ik+Z3R;bf?H? z>lz-$Lb~iPOFHl2=*{G&xZ9-)II#E-GIELwjS{~n)4DxFU&0H}S?4L4bslp`m1@$1 zp|8>MkN*6LIaAq8uf5nUIqbK>Q~LeS6#h?2(2>2gwEwe>MD;qJe$=lg1AC96+YUD* zDW)W{EPf8I^6DJXz;61oJ7@Dlrv&4g=US6eJHvR-`R9;-rWw8eX(iFGeEChaVu@>m zCbUHKRT4I*C2Clw4GG%*6SZ&qoGUlBId*!!hm3kOoSt%Pfh(MuOn*i^Le3vC={;DA z#!Y=hT;y)t!I{m->amm1w3*p?XyM(}`ROA4y{; zC!oj&lj(>XqcO+|?JPHp?CuRW{fz9uxz`zjuf+}Hffu62=`fxRY~1{A*Y7-Typbuq z)}q$QJscGN=llPEYli=m%2eAggQ;ZlR$j|f@b-$cWTAYG`MfhTs(+7T}aws>+QjB`xVz_LF2>O;wA&RkU&`)s- z`l$XS-0t=Pv@Nb3PVF5?w+tCipDb92GIyUQ?z>BI#{T80=gwJtzPB10U3ojVb7RGf z_tOe+g)BeNv)ob=qQ+)XgZHtn| zy^G<>AHwL)-G{klt(|bGE;G@~#raX?QBARG>L&fZ@%ibZ=A-E@X*s%Rn2z@@I*yok z7T^IBhguAD!Sed_Q|dO<`9(gutVChFq~=2M=)N3DCOFaKxAUTIO^1+~i>4syM4qp; zNwo7d+)H)g(;eNji*B^gBVSbWUM%(NIR-xnY(ndcM$n~2+tW@HI&q%P>-dwn4hrt9 zqXUb_@+F5XC0lfJ(S@&NwC_9hVdJAK>&_sn9+t^~->4|b3D4`;4@tMXknvTUp@Ko~ z7{-h~96iB{&wn7U6^77p840A_CJD9H&P$(5lQN>)83Cgx=4UoQvz{&H4AXt->qG5u zZ1N)9WTh+i&bWk{kJwBKwFzWn$EC#!;m&XPjzHv8)zj&wsIb#`QJxohdb<5|`s!BQ z^}K6;*8r#SzNN)#_wc+6eb)Ol@&4-h(9`1a-D8sbS*OZQH(lSlE_Q9>^4(>)i@S4i z@nNVFjpE<{g$P3|J4>N&czl?@#b4*~GZ#ME{{f%RRv3>e`*?H$AGkQ8ufKgH zMhn{q5)&J3vc$!)izlMY{_LhngK!H)4>&e5EY1>o_zIk3s&$i{5U+Kti& zHle`f6lO!b!DxuH_*-M6BmMh^g`2|I5fbKb_yMqh6&xV}`&KM{EM||%pqi3}9r55u z3iv%H))HsYy99J|{K;$^PahDm!5G0{gl18~<`%Z`CF|NtS50z$*MOm3*&Ys$GsS{} zqF`f8AB%sCaQ8+OU}Rm*0atC<_Q@oK!+Dt?Cac9D9C!g^iicY@%{J|WiLlc!?3}Yi z11D`-`WS>;IZe^fcj20jUxEi2dIb5-5O?%&?2%n3ImKoZDD);vj&UGW)}L(cxjR)P!3NAm2#%^26WI#{mA1%}hfaOt9E^w)-qgyRinr@$>}C6CG~P#`OoZDZ*k9 z&aD+R8E=T|WtSX#)(``#HJISSTmLWvOkg8Bbp}X%;2&TomPC^!!ew|e_@|WY{^_@y zu$_1l5#0kUG{QgY(A$1?uMW5Bfb)wo^a=05>=!VzF4*l40|Jz|7??2@K{%lxyYQ%( z1h{FJ$t2pyhUH(`0G1RHVVhfQ>@kKOmbfZ*d`oN}=sQS;NhID7+rtts=)vxdndz|@ zVt-m$U0z*QJx`&YASvu9DHEI}BzQ2GO_6L0gRmH4bZie0UVmZRpN*r?lFcIc70&dD zGWmlKQ~FDR4O~0K{9tqx$RQ#e>^IIL`kpKXUXlNm*Z&^JQ5c5wyspB-nqPrFQ}wG9Vga z0i=h3@1MZpHuT&80X&k;HOAiNS((+wT43DvGoo#_nj1Eovk=z)z>10nU&HLfCO`-q zz&$%=o`-*!t#KI8aA~p-;k`azW%o@ON)ZfX2 zz~H|l+qGoV!EgEGrug4Fv^x=DqWv-_w~K$~+F3?v3QLIUWz#kjPC`^TSRWkT7Au5? zh<^U22nc4v-Ex2(3#y2Y6~pe{faDsvnwVfL>?V1;e5}m7F$;)`PcXx3Mo6Y2A|in$ zIL}qCww-GaJ@IEt40D#RWlzS0$5_}(EG|pqzq$4USwzAtfWzznF*e$q z0P7zZia*3>Hg9050--_(NZ|RRW8xt_grINps*sX8T-pb-C>ES2cqfSAalPVP)JY&! zL$(3K`XUzQXx3!OZtE-&6K17wB!B>9jfUWuW%5j)jtn8<2uY97drKm`dj?h8C%5ag ze!#p_cIL5Q{aG;tq!;9YlYWPFXVZ{bBkwB&w3u2?n~WGc|Pa4 z>ekb(wp&rx^{%~LJGv@e{ajwVoOPMzGWb9JseyP+pdBg!_ga>V^@5Yu5zkG0|)KK`H zeTymDYX6;`LA|LroP)Y@g8wN3CEUMNZ>`_*Tv$%PQtJM zv4hag-o0G#hjmG9=`Ic!RZ75cSSYc+GCw7_ohVo(L}YVY_5>UzB1;vr!V)Bn`+8Qq;Opt8~iw{T(*byM`G%U@+5{ztB`zvnSN}iPD66`Cks0+aEP-x<^RCpS6X6Q>tykOkVIP?%uAoz9Hv%F zft;)5LWO~OQb^&!-N)GtxJ|Pr&6>AsRwA_-U<#9Bi^KG>|5`4!Dg0VRfOeRC*#S$W zhGao({u3e~wF&$x9FLOqE1Pv$8nSn)P-NIY5!w4%DHUfKS=LCHB6E4p>xAgD zI6w$j>mAH7>&oR4sa%#wvVLZf)y@VUCQK$4CX@9JGRb-zmOWYJY{wk(U%hD>I-wB< z))%^vtF*E@lU+ppQnjq>ZP;_`9J>D7TEH#AIaREr#TLyuybO%2cS5+W4&Eo+3>8pV z1ow-AY?&=v>=Z ztGOF?rBqdxIb`w6KCgcbwNt8+Nu?N*%324h^s@AW<%k*9xY4~5Vr&wzM*wCILa70& zH?dg(1_CxLWS|VeY7D>D`$4G+7?DW;&visO*yKK%fK+*w^wv6sCGQe`s$0+yoP@1L4{`o?{oYnWWTiIS%d0Gj!)pjgfg<4TL~0EfWCfw~4x(^m z1-}J}1G@-Ka+SGbxR@X zmRb=MRz!Fto6_MoAbt}E2u@;^gQ{&H@Z(L;qLAUNbP(Gwfq)uWQQ=>xAC^cB$TGQ= z4t;FVs(HOOL7~u*w)ViVGS@+8^~gSK`(q_j%L1qn5wk#|n z?^)ZknrBf@7msHimpt}+Y;b?&e$748eT(}X_mS@L?%myk-IebC?%sLc<++vTSe_ku z7UW6GlbFYxCnS$HPx(Cg+&;P8b35fm+?Kdaa7%Ivb8F#-+$y^ja{cD|$n~7-Zr2sA zQ(T9*M!1H$)^@GtTGUzT?C7LUmC*riiX@XM{GrjD83c82`#G=~{M&+DR#6=tkv>Xa{9%^fQ z%fT$12W6)*tvU~}(;P7e+AweB#2jpEd(#oKe|DOHnPjIqV)nCP-pq+Pz}EJLBWB<1 zGyyZgPIJUev|--JiP^{2_NpUh&+Ie-vzMLbh#6tSyqpu$U~7BH5wm-Cnt<8OPIJWU zYQwyg6SIr0?J_$idtN-lPIGu(Jk|F6vK-Hgr`g&rb?B3LN_LunIoVEg#GGiuT$&Se zlCA9$N6c~AX#(a1JIxVutPOKXPR#MPwu>Dx$7H7om}z#JBjzX@=Hi@~qit;$Ibsga zP7^Rk+G&oMsW!|-IWb4r+Aeg&9G0CXV5Zn2~Or*dM}w6#6%h$+ub6EGEanj@ynhIu?Erqb5-m?LJ5>@)#W zVy8J`R<~gu%ZVwqwLR>JSw1^Wz$|O0IbxQxVIIzj8DMLh>4;e-J59hWWv4k}`r9xw zb7GdZwLRpBSu#6Kz$|X3Ibs&GVIInfS;E%#pd)6H>@)$hsGa7BS=feoFej#;t?dCv z%>3DD0%jpQ%@MPJ4f8-w%!0PI`yDa!W~T|5K6aWTWS(nfEEF?oR}U!4;72{I%4JlTJ7I70n-&|)qv)R=?=7_K+B2gW*gHU zM@*OOGy&7uPIJU`vWrH+_yveN|2w|1H%=4%@!&58NW)|NP8zQ|4!Fkjhej+ifP zm?S6Wb6Z>95%Y0&nt=JlPIJV3X2axjVm`IC&2Yqgn4KnI-nY{nF(275Gjd`+u(jRc zh>*A95GMXFt_ByJZWp2RcdGJZ1J(| zGy(Ido#u#n#DtPY5m108(w)tvndxADK?*iUPAn$XW4cA8^9!)&w_4$q3` zWv2=KoNK2!JS$#cljn*Y{SnW%wO#IrIWs#=z?@^JIbzPXVJ^>!Im^~IYkeZfb2`XF zG+-3mOFF(RZ6DsA%6?oR>z+;{K2jtg3GzN%e-j6mEFkM)7|KxQZ=xmNdUUGq%=*gC#Rp^oJNxGCGmklmGSz36s~%` zm;4uWJAHRpUMeabLUl8%5VL6(>F)G`yHT+?WqUeqttd?SnFmqJ({<_T5vS1p%L~vs zZ;yT5TWhe z{i)t#C>mP&F|yuij|wJgusXIPzA;&a=4+m#Q>(6#r~O*e5fw^dxl1wle>Hl!QEV zuZ25amZB0@OOXY~^U}U=wh-9cLb{dzf}kJtrB4j*dVP7urA>`_Rd;7>DmDh)yUh`h zFY#`Q`Rf7Kcht`;jw5|qQ;T~!yyn6-?)7tjd}n$!T3@B6#nsbr>eaCsV0Q@mhPJ;Q zhO{HxaQ;1Mh}p}y7Sjoub(ig*!TXfO(3mQ4aZ4XP9`Io`{&2KeMuFKubjX)Q8TH!N z#i{Dy`XO}^&|)}6_s3^fvf@lF)KuRCT@2$ev$asmZKA(50KHgnj^kRK)Bl|3LqqrZ zq2nnX=(@4D$;d9FsCmX=l2UdVS-D<8UvwBscg@AL$;wo|r*|>j{M`uz&k^@RMbP;7 zrFpRTo!?7N;@j4r#Eo0+i(G=!P~{Jg^p#7>$?)+5$PDkdgpD2c`Jj9|o6`!$BV>nb zWz=y=GFPlaIa2LQH+nG|BC~Knqhqp#x>-vTrl5iL+&9d9PFDSPGvpl;L%6Gwl1Md zmnNgr#kZ2o!AA0K`AD*BpPPQ5mp6JnB$W&;9ZtFyp2B4oI79|*D2VpwJ(b@68{uo0 zDT$x#tw`rJDTtdTOd$Dop5)vj&hVDmZZu;T+|SuR3SHk;2OTavjJ#M7N*d|blG7tv z;7n~k)DP|FQR|7MOriax?&TEzsLN~;^mG}|JDgz!8gz^v!;=ja|)szH@hNB0@Z#S9#ivX%t~_iWKpm!FPcuya2=O8p^N7)@W)@h zL&sK@L-E?YsD1b)!LQ7Rebz8n5!zji#vhe&a;GUw zo*einVz_Y|RXN+4)@#3)EHgeNaW5#TSgR(L2S0$jH~ZtqZN_jvYhMy%@7wGnYVxWb zVScsrl3wXyb84eDb#MQYZ7`7rG*j5PdZC3%8S-t{=o=KvM-%Uio7b{c7bI@n-gn8lIy=z9 zddc-RA=tx5eQ05H;ggYq{=si9<*Qih5SY{S-kLO0B1)V-@%AUQW2*j-X~>Vd?D{%TmgCN$d;%OI{Kyy>_3#_v2lyhOP^Qd`-foku26Z7`Sj$C z$Mx5)d2$!)z9H{Bec%RKT`0&Gv)`Je5CZ<5&TKe`^v-_-d0xKC|Wxt@CX>5tTlMUbXwlgU{e$FC#9k zA4>|jccY75pF=Uq3tE`x1on19j9bRJe(RS$Ctpu;uUR|V=T?5^ztD-m(iH3v=WDqI z)%T4=)7z(lZ#>Q2zLiYY2RP%c6+R;PjR!x0h({T`^+tJmt8sVIvB5DO?1O016H(tc zO4Rg}J1N#-5jQq2fTmvcA>#9WNS%3C$c>7#5R8RHKTkpB-}L4n)?x4w2z(>~+475C zhthAuUm^Bf%%KdACN3Bkv zlnw<5IHK3@^Qp`U8yd`=)o5v%;MFfJc68%x|G|8M#DXw z^+kCI$P2qonoSx$yT$!DOGqfY z+O^Tx?dLWQax?y0u{JCRBwZq#gMT|oSq!Uwu{F9geGLb3kBq5Oh-jM^$83%~OUj$^ zea}q#kz0;f9wLI1d(PIFiZ10F!eod>RG3S|VV%g?8ii5$yIvUf;F7{)i|{O0WVuef zwkhsWYA8v7@@kdTbrhPJ70I|K(s$FW&Scjy&IYi=5ag#$6&$a^N2@%ozgy zi#UDVg*X~brp%j5z<(mPml$FPpB7^!Zz_yMp3^4r=g!TcFh2UZTVy)qgF9I6G_T`l zJ?u|L;A{DW6%~l<_#3Fhg}0>VgXUc3(m-@k;mvf*y?Sz&RBJz#9B6-&hukrvp8PX$ z8dn}q-m{X2oSMLVq9=}r;TF5*Q;08U=3^`0r*Iv<*25ZT2QGxhWxOYA8;lp?Q=g&N z$iTH1IBuN>V)H_@QA+RjHtCslbM<|n^KzYtdOBCf;2ZT2qjXmzHZfVz{`cJ3`UPu3y0AUk{PNu;d9F_> z95l#_|5S7~S9#QNbiQ;o6xsiU_Snir1ZvJ&`QiI?bdxd2?|1zh9wECBC) zGD^rZ!}fYWKH7|~-CUKxI)Z=o#Dszdjp3Sfd5cDhC!zxffcNyrXlLtnWWub9xbnlH zJmi=eXKQ}tAtsPzBR7zBV-2X%dOynD-GP!X`Z1r5wu^g_z@V+DA8bUYIz#L-x&~(@u?!8&|Q~I1nUUQ@`!hZmY_2qS8yJp-slIMb^`th?kfC9Vh-u~ z(dis!zRRiXDAd1JGQN7bDYFCpTg?V^uNmAK3~{eVwJ-{~KbvzHc=0fI_y!@(>x3%g z1Ijt9hRf;8HEmw6ehB*hZ^A zfv`vY_a|TmhrOn-`8NjkVZ+x|!povT6%a8Ec z#Q%kfedm?%^@wdJ!LQ9q@a>E3i|gN?Qo*-4anWqoXSsoFsh{hgjr@x>vxy-hkq%zt zfs%_%AaF;c{=3t9J|&?79g|i+!-@{@{t@~4`t@dU^l)s=%N2)nOMX^CXP#~%)y}oS z&Werv><)1C(}gQ&?YADN(x~2i+`PkFe848uOT34l82k#o$oHBop6JXOT%GCdbrE!6 z)jIfRtFyW$QN7TnuH(q)vbAvGS5@h}8rR9m37Cw3JqAr#Y(X8mt>gn^L`XimHmxtY z#Ake0H0uo10TnUGT7Kcjvf-yz`7y}L!pu;(R7>+zlGy>Uml zNt-{QtHVm52l0qwPJW-QGL_Ez3BH3S$G&|fK0gZ0H;L83R-&UL_ zQ74k9GN!AZ|Kdm2c=zLDI{M*}YkE+$RZQihccWRKil>_{{vcB-H_PymMiW`#a60y5 z6BKo+DJhk<8C`qyinN>`iCa})j@FG?h&rp(xYLmus7yaGuKeyJ`aZk}F1IfMxetPy zk^4p>kR56=)CWhJ`fwmSe!%6D^h^HT2>L@eA5+o^$1jnY;RfNK%J&WEc;gxLE%rT1 z@Gn62&8$U_O&iE>Y}W-_-cZbhUN z1Vm8mK*2`9R>Vfdz-F(x6g{@s-QC@dcdiW>=bZ1mzcKFp=iYOMW9W_*b3XH#bG`eW z&-;0CFrT`(3v^mg73n?DZ?X@b?#aQbT}sRH$&EEP?$qF2!!>YWuNT%TSzPX|mIc>4 z4&#}F%ixYIL*C|cr0n``Ig}-)wO(~lvtxb)BOkGZ3S+U`m26h#W0qzs{|f2#LV0YD zq2k2kP@vB-vKya$v7+)F4j<4A+uUu8PcB!JRoaDV&K~*!UrWpu*E@d1(D=1leUC_> zv9L(AJsUqV00=|)=Os5gm>vEorqei%1o z5}R8%R74&IxiD&rrd#Mju*z|g?OT}3)4e{UL(fc5K5F7uQerUYwNq@R-G_mKY>&n2 z=ZgFGTUqM10~mRrBm`WYg+GozfvJ@f(TQ2}7E5Q*-)*=Jom|UxsLqQ%x4?{5hP>I9 zhO+nEL6TxozCYNL-z!BG*O@y|dWbLIWatFBuS@aDQOWF2deyf`sfT_~y$}(W$h99PmgFgLYf-gYUNCw^7Zd zL(iIOZa%uH3*1TVsq^!B=!$U{dfdUJ+dx>uKc*I!l><*IJ(kaJRR6d zbM0FacxULrtHlFW3Sj#L(c|1W%y4K$ z_&=subG{y|cz=m?tQ^lXX8XyOh5;h;frHu$cWmv9V^&=fR+@(R?iT0Pn~L$qXZqt6 zgN|at1P3)fdo}W-sNh%`RZOH6{R$QXwz7Mxrt{CM=_%M-=Ob|%5Jq6{)@3ZHoIetV z&}HjAT=BjeXeX2recaseFQbFdan>~!*Ru(B?^_X;Eh{1`e@YN@9XWrxrwy;vcMLS{ z+FBB~;uh~VjBo&LzQh6J(|GzB2ZeVXx0%i?&o;j`<>lQdmcWjcv6xruNpb+*)8SuXuPf=m7@P6N?YVmePHW&u#~~F(&ebO(eK!ixSs%6cn?V z;k=0Kbrd>Be?b{gN+yOFa)ZN__^zbQ5M0lgA9|gF#TuOyLn^+3ZOCO-hccteVfE_twBd=FV)KUz9wByTq~GgXB4_S* zvFOnh?ElFYJ+q0E=k0&1Q2C;)3 zknB%bb?5ea07WmfK*}d-owUd0Dkh|U4N24@U@sfD{i1pE%7?4CrSGsR{?@#2 zxkbj7cWv8p z26lTM6^E{zAzXFCeu?Wv`kA@V<;iJL>0Y2Ld;B2TcruN!pfS!U0~I@f8PmywB{C zit>RaSBQ1{CK0DtBk{ku8rB^unk|H8O^eF|R2lYKJxbw{$IRS?-WlWg+``W=YxoH$ zzb=k{Vq0EY6^yBqB%^=idg%3Di96=M61kz< z+13k_z}x-FO%gHzFdv0OKb`1u~&p>sI2)~oco@W(eEv{d+~D4@Gf*;d#*WkTt)( zZzd3z0M#2B>C+QhCbZ>4=mbP@gUTK%r<0908tMK1`YoaPy^@#nH zmhmI;9@Pt&_d>z##MBZS9TG}y?bJD&-`}fiMgHSPU|n~%PSdEMCeG^!Y@~#BB7&>t zb^7HE{Ih*cwa=-WZ~qwSXOSHoLbvw!4;VU3X_@5pbXWV?Gxyt?3nnCW5}owNuXXDR zYFc(dBb;hq&JzOpvx|6W@R0E6pue>?s$TBAb3xwP^SkW+Z3X$=dUP+ox)WX}cR>51 zernyV*3_SncaO2IlUXM$qH76MJI`}Qf2#X+&DQyS+rRbdu=Cs1u;z?(I6xemVgjUH_+QrvEvK>hvC<)G9&?-2Lwe`mL`} z*MULDpS*^0WhDi#0c52=aqusQ(kXjT3#LwrL3e+*>XxU)DA@%XfILPnkIHi!+5Eqr z;r@V^?&wIZi2n*O>imo#S&0FEuJ4!4^0Ybf%uf#eyE@bVP>P}8Oj*!OQQ+P@!*(LD z^+ zG3Ti0JZT{%#qd)ZsOG==P^TvlO4<)PnFR7Bo$0BgfkO1p<2PaErzw8*Nfi)Otj=Nu zV4>>^c^lC6fB#OV|K&2qPs05lUd>Ry^Z&=IC8I5jhU*pAJEvzEV7<4nx22WE+Cn8Q z8e7*ce8&8gd0&$VQu>Q5^wr41aE)OrgNFu#3{3PF>YXz-Hd6d(^<}Fjs9@rkUm(*3zG`eQz>H4UM@Nf!x;X`%J#-z3cKDk@gia{# z_k^Y36hS@l1i*rDr4&jWV0v{BX-|0lM>FOtkmMOsjYw@d(UfCVpA3nG#1_PBXn^YG zQ}Ga{WK7h2L-UdD7aBy$cSD223~UF`Ts8mWT>n?PKn?bcq)Gk|91IR1Su@psR?t*A zBz%}IK1k*(I&83W-ut?ivOKQN(@)YRM%AuVz!DUc`E`X#gL#ryq!{%}md>nxf111M z9~&edQIV8qz+dfs^mUaE@)%wULO@23#u6Fq;^6-nlbtN5j`;&*F zsV$IbHzGPp|DokwJ=cj{|1n)&Rw134LC(%W!L%Ze-#-#eDako6#0oT-{_us)3_3ng z@uZ~V@-M;an$_}jdJ39Zm0|K0W8n7RLoE+=3UIpbkg-(UDD9^_VIXSFqh38ywWL?_ z3#NRjq5P}Cs>aDzEi=*krxsRTjrcQ-pg0xCQH zOolq1%J1O&i8G_5e<!4rb&Qfn)ob~7%mZG2)KlZ??*g3pHNme% z=PgHlhC(+_r7LgCf1gwd3>K8%`SbnEwtud$U>PBUW5PpY6xq^M`#*+LlhP~$NKKLo zRGpeq{=$f<^JRW?DWenZs(<*>nNn@*i6&)!vOZMxk34}0rEUKaxSp`!z3f&D2R zs;v~*CjVgfkM&l`-!{d-?*|D|ZTxAqpQXUiVc}KtP*UI*>Xwbj!$=@WMk+z!PO4mO z@*B#k&>6}w%L=8BCAj*3Jqzmxf|^G_awQo8$ZRG@$FAIix20y+6X96^=2vRuB(nKD%YiTo~? zqdU;5VAByDaqXXyr+V4{P*?j+(oY0@9q}?dN6LpMI+N{*YP6YxDtrPIcw_AZS znVOA?JPOmGFr!^c54PAJ#tR^ihd9^D*RKB6mP`_A#7Uvl%O0)BDU7xf`dblNU^HFR zv)=XpUP3JQm4Dz%Zh|F|nZIaH^$(#`t6cDZA+yc!)Gk5FFdLDlicY##kL@5O} zUA|P?CzJhArz$Py{sI4xhy2atd0)*_x~2f7a#YE6<|iASlM9YT11Pov{B^QsWFZnR z92^oAreL1$ZHxGSsQ(5J4a-xs8%!y-U{f@FK@wA7A#uUK8T@zES7I@x5~oWhN^bMF zLGr#EWmI}XD`S_q(SNvG7o0lg$}d6a1gfh=bld&4dYv28J1QXarH|Dt1zqdEk>77J z-DDOL`%}Wn`D_y~K*wc4`LpOIDUihuq56(iP1S}j*!$D@i1t5J{gWmp=j+x$`&2~o z=Q3!X5OpPK2r(61OwtMe{aVq#OsT9Hs;g*zZIMn5;c7C1a+veaBTU}8S}CCtB9#Mm z7cDG`k2j~#8Tp4Te`fIlqx`!@GF>_gplc6#dWZ!{A#aTZBNV(!lNNkdcVUh!PTGC` zgGgdR9p(oR7e<*c??)@C_{T~Lvhc5ih7O>A*O#Zd=}(dIU#9}yC8xX)G#~J9^;2G& z|22W162Aa^+}}tK>GvG=eC7eM*ELmpY@vswzr&=GQG8MFo-%C2BB4#I zEyrij{a=UUbv>?qY5c2^z8AA8>wb#i86;ki~&=ErH==8p zJ?`$&F(Z&iq75(f^|i=&R8AH>>CAVPt0t|qLq&zgd+^rPWtxL-4&2jw9`6x(0>ZM5 z`ITNP<>MqRu6#8ero61kj8c|>chiOVbeTTxSUU%6`AlIZ<8O ze`qwe7RL}9e(>gc`0?!nRHFMHdqn#1TZu<8=IIf(+h(97dqec?aOgQQT|6#r%^TL~ zDb8MB4TICK!E$<_iiw>I?kcwt$2FME7Cx@doy{}gL$e#=+qF0#f3R7bT!C!BdW|b8 zuS~rUw~S)IY?{ET*bXf^%?E|4Q)#7nqqn`~;I~_~E?=*)i)9u=Se=@@!RzNDy_Nx= z`+OxN6@P)P-nYd~H?zSmyE{L3$DZHlU6OC_?kht4Mu7d;Uc$nBFSd&}VpCcy zsuRy&=YECRJqKwn^mF1R_ZwMy~EE%hUb63J>*m?-8%OK4Z;UlTp3j@W5h7^KU3i)_X6q*BisPYesxe@uqz3 z>o~4mm4;$~3tyC8i;ayfEMHGOg^Nn|q1bJL6pLb2X&)Z&x(QzxZNx9RP65KQICkHL z-~Q_p(i*U2y=chjdK;^2I`j77H=xGnu5dcxJ-j(z0k;OFVb=qu@~+ zB)W4r5o{=L_BY2W-`gPBjm7UQtWAxa#X7_`;GOjy@yyvaa`y1?9Fy)L#WlOreGQJe zdsA@`78@BPU+#^P5s_J}eWN8%C2~0Kt7yr|zj$f>HXJh2o=;2-V@dUmr27m9!p&25 z#X-YHEdH)ZUtN`#8sA1v+hrm<#O}hyL3R08y-=3LL}TaRx!{aR3rLcnN8S+&Mjfc>tp zxf0z&4>e?sQ--pluZd>oMgzY7?sj^&=tR4EQZ6_OtiFLME0DiS#Yy68vE2n z?bE4Rnol-GE%Ay5m2X-%T!oSM2O!xHX>PG7eT(8Y@MA03mJJp>r#qm_^i<5Ml7REh zkCZiT z{}tY)8u8B)9*Fn7<8kJzviPYmQ}|$nKWP7T3nMPoB-M{&C5F8b(Ys1;!Wp|a{XF#k zyaD@-a+Y5DRnc{}CHNbS(?J8*tVE~7jH z6@4eO#-4Q6leVeVH^&${0>v<7Qus+CQARP-AH**P;QW$Q~zQV zV?en|qtUifyer$*>H@bCTWQE|=oQ_K5s&hIqtY;BOrlh_zjv{Ubl)*hGvKcYJY)GT z)?Cw2morb4bCNU$w`tsoe?QU!uOABI6+S+Mp1pLf z>1nGmqI`c{J~|MXEPP&flN5K7Y7gK?=y^|_U*oC}H@Ma#+^% zwCiBiyrt0g-2t)Jzp%86gLq&gGpTAI>xrjPnR=0v)n+(+2&4k6D^ zXwDrNjVo$eNUMueHD9J@Gp9*=#lVm0NPNbutyha6JxlWGU3}hTunt3`x0jZx_M%#Y z(;jeX4LdmXAVHUhPFlQT$(LUtjR_`J_2dn^1JES$E~JDn6)y}Tp{nT`rfM0QPwO4_ zLSvvAD=42!#V>=$n(+fEon*>(a~$~59U4G0-oE)%%&0a4XdFQ?#6C3Z!|d8@ggJMQ zVy0cVcz389SGi8*1>#__@>L;DIgVb7RW+v$cgi2cSss}$;#uV_@9~K*S2z_DD(%Cw zNhjIucE_RgX&XuP63;mvB*N-s0&yEwpHu}j;cu~VljX20%y{>`Qu82ZWwK`eph}=> zp+33A!L*nSx68haRAU0gnIt^PuIZ8d^07Ojm?>iHw(>G*bz`b8yYk8>E#>wnNt7Qd zkbmo;)1*calQskj#UF%f2iLOwQ@>!H_jhzL<7KiC&p*`DP+S1v94Bun%P-8l!pk=Z z;FWC5d8n8Via+W!)JXT}FwxscY53r_313m<9bRnPTT=ZAD%UvLI&iW%&d)5uiE||RS;j}YQht~SMNg)A z5Pty08QgE(4JeOOetWBG7|LgLbn{%gk;>|iZp?$ikDzzc;#3DX%ivfSscPek0VeW+ zMNe*cswyN#6_NJ7C8S-FBR_hzo^0d(jiq)Elz$!js5pfyzA~V`lhjDMJLc9*Oe#JY zc2y{WRKts?aeA<9?qIxlxh8C@Yy(xk=VTFPVR%S8hSwRUKP!f=+M9x2r+HGKx~;yd zW#LrkLs}!lUhvlJ0_^m!3<=%8Y64#W1tASq!+t+{wrl4|#TBNJ z&Nx7L(ozn>sEvC?Iq1Q5SJlI`cjFaLLTII~Y(TBO;D7`0<+u-Q!OiomuVDfP-F*is z^WTD8yc>=?dZ`@APOq}$KBKG3BSDs8`+YY)r|SnusIdmNCJtp(TjN`^E_7bA=EM3% z^MTIa8SR7D8g@PFxW5CmH8&8}6MgxcD=9!ZUD+2@Z5p`wAQ*Q{BcDyucGz#tdvENL z<=Ax`qg)PTM>NgZg>xNZRXxv^uH<51hA&X9?=k4x9BAC6oKW?Z{(L(u6E!+(Z`&a} zF8vS?o>jd7S+_T%f0QS$eWiSwMA|q}YH@fBAEY zV<6n~C%%%-J?5&GlGkoJNMoO^jN(9iG`j6Uv5G(MJj%N=+c*Cg?E*pPzyFAyca36r zfp+IVZsPwhzpel6s|CNX7tHjZZ=qMm=>KQ`>y}nsrU$1(?^5*m*KM~%Do#b;GM}(b z%`MovO9^~3Wg0!2wleSI+Zn!x7Un&(ZRCXI%b{!O16b(bDD_>oq03k1@7~qsGynPogI6TW zmHl$rX&-B87-xrzhc%S*b8EpS{bHIq^>Z=6q&>9UwGxhAnZiGOGQ-%@i-ezLH)%WD zL{@UE&K0*TiCl#ylCP=I<;|Q2g7yW52ja2x+8?m7yq=87q?*XPnY?h254iMxzn=xZaD?I8 ztzmXeeIDA}4z?YQ;vd%ChC9iNuzi(vgp*U?<9;6O4z%Py5*EUTPYIy^U=i$`oz9q1 zZ#+j2Wo<~gxYxDCOktVE<4|>x=EB`{h{@FOW}Cm@(^1{w`L;-T=*3e=uTWd6eGF{O zW!oVYu*>z6*!bWSzVy;u*po3H!^c#TrK16~M;h)X-(mITvsstLJ+OMGfv_@cGhFT1 zU3TrORTz?9g-o$Q&VIPpvZXv+-B0eaPljvD^q_P}8%%b0#oF!eXx01uE*6moV{4<{ zs@2M$JcS<0{`g>J9_W35a9@Js*cW2W3|l1si|Y;^Xy%lGSC&-9wb%RcU2!qIY;`X# z^)G|*x!VG>@4~EP3nX7^TCRV?HeTw6<-XsWSso4&QIHFq>&^nv+Q_B>2JLOlV?s~-%AH+(t7A? zrdu6D%MlZ3%oF&%vJ-zkZlh>%-HI=(>xkF8R>L%>LX6gdTjy@ZDJfiDSiTkL^WyHg zM0so0K`d7H3;IV}N_+2Z@VtV7RG5UpiP|%dYGA$i5#r0L?w&h$*owdQY=(j9C1A+M z`s|dOFSOp|4c0Sia-5#VM&63Xh7XsB$5kw3sXE>`-KsS+>5>B_BOij|h$-i5$v3b1 z@YMr4(!S1s<=JZDv&&1CUSX?P*>8*-{LM=)dlxINo<*~$=1=w*wV^OO_89CZ5TTYvA$7@|# z3yEe;K*iSg(hq^SL+fFs1+O2SHUh#M+fw8p`k$x|lS*u6NrmRi z!x0x4@t=G<{R!?uwsofSdV#UfZ|P~x2ilI(z;{J0z-MH z*-+w(3+TJ-j`-Go0xTYujg=qGWU+%Jc4{*X*0foSTRRJ}+U16ze1OM0&SRNNt)R_3 z8#wT>1#ka!8>%=tKIjA)p6`S6xgUS(N;<2kx46Vy`qc<%TXV z6kfHS$7b`>Rtw>3nYsMLd3|2rSb)Yh>YRI&OGfbu4>2>M~Fq!=rUe zS=R&ewYG8Rn7_eSOdGNb*59s+gC^Djm;2A4R^jJZVub-O-rq{5Zn`9HT3yqW+|mpC zj!1^6&{zD@mDZecB;J_60zKh9tGqA>y$Zzx*$Fzh9B0o~6+`C@ouqlG@!-7S98xY~ zeUe&1`y|q9=r$AD4q1c7=lrDNtu4X{^)H8DV1gE>I=IV+`!3*!j4eQ8@(8^-WcP{k z@aP0&9pXgLk?P##O)Bn)E-62~tPE5ah&|0+B;^Z6oD4>N*Y0Y)=@281lBt95dbAi; zoi7i$irXz8!>%)>xcA=ixICn%tZ#l_{1s>-eM;XqjAgi+|Vr~*dM~!lClb{^%RHYFQL<_+=3?_Bz;^cmc(mBwoj_!C9zZ!4@53!ujs~yU=v( zRJhvDl2vVH12wyONw>r~R1>`rnMpn2>xp^TQ-3mUUpPrpKH)0ws2p0WaF~X-tib0q z-OM^Y$Us#G+%_5ujXsc0P_^k7mvgjO{3an2H1}rhNoW7fH&WXFDlhXi%;`#UW-YPQ{NKb^{~?tPjk=RH$`CenJ5ce z0`UZ7but6lP7eqloW3Kcnty=BrBg&RnSn#WKvMk&z5AFl@-LEqP@B*iZsr8aYR(ln z*%ENNGskRy@~MYb)im@vP!5-N2adqb_LN`FZWMJ>GBESj1numpRaNZDMuzL4?^!Q- z>a~@m*y1Wy=S*@#3*V+#d_+?oU&fe!ok2BVxhb0ZT?_Hgk#mv!&XliCJa53AnvX|! za~DZ93p%7v6~u*+$v}hEzA}a;VBb&-bnn)-y7h)2(t`VdPY; ziLy|UmD&nRUn0c_uTktMwyJs^sLnvjH8MBNS3Y3_Kw)^wC=<%16JYoL1}ZNQp5J1E z-C05P5fV3vwp&ZW=p1{laz9}R>GP8KT+SQSLe&U(+qNcm@81p_V_u>m{XVchEgQ%t z(m{VG%xPMKc&Zz=^R?$xU$b?6TMNIVbUn_;7dsb^z|A(1*lhC%yps5tl^EkBubh4X z{pOYd!alpaF9lUit~i?N2E`p}4n{bH$-Pzq`5&Sq4zToKcj(;nK9uh>0*3T<&|W+L z7dumNHLI{RTqq7uu}$?Ho7(CrGPvO2D+&nsk<#a=U` zxnb!#@@udMj=#ANLO%_Z`zO$~Bzc0)I@YZkp@LuPk}<67eI$Q7qc$7mWH}tEO_}oU$FlC z@u+yT#%}seaB=$IE~J&1>X44KK0!Qz*@tHcI@c)L>L4v#idc9f@mW@#yQnSDYyYX4g{H3yU-H!Ds?_0{0 zb%k-_oCv&o&W6+3fNGSQy!p84oO~>()=^xfJr?wtw2aQ8+Hdw@E1HJ?1E9eBL1BZ|B;VW(r)iRoikh%Q+(aY)8ibgJ_jMv1xNX~rx*cjn}*es^=& z^__5<_daEHhr}Q zo7-F$=AF$^yT}z|8+}K;m}3x9bx>ApOa-*1hGnv^yzJu1w_mV8@AJ#>^|BMVu~$j_ zG^jD!wOcM|E=D$xvY|QdTUAxskM+i7>7C@*%D#N$Tx#YUZH_+01Mzm%Ll_?&4zxcw zeA9$?yW9ldnxvw6=PCSVgX=7yssk1(+EQ9ovX>L<8uOJ)JfZWw%Sd+MlidniL5>+E?O=e@7&YK~~@hdAEZ;@W3PRqLC5r zJ#m8ku*eR!ytd&Lg72cw(m6ubSRhw~Iq}-2^pp6R+bn$N5%ietB_CcihGBladCHV3 zIzM_gf2=v8`AG3lZ};igO1zg(H*s%5c_=BVE68W!7bfI z5}pLD4Gvz(K*y9oI7hc*5bp48*;tr$&VUDoRYsG_@1fCGDabE4s$LNEZPFMkmTDlo z#rm-NqoQ$Q+I{fd)I;3w-<+=+eFG{SzJ!~;t%kBLWuW5ds=VFH;v#cE`n%ZM>uh>F6g%&$8xt@0?QnVrBaK_<4r5e#@PmVvy_4COHH_2 zUMI32B>AZLrM25AO?Rj6@=n+_EzRvou`8~w2-fj~Tlxyz=6e-i`FY4WA#HdK?`6XE z>mb}?+Yvpv;wH;zPcX?Yf*a9R-r7(SpFLYC?zJ5SMVEeqS*~VaRVf)$KgF@JgB}Q< z9~Lmn%U?E4+=4Hkea6cZx3VQ?TPfR#m*buIn5Tkb<_NpLk4fS%R(gyUhcA0mKPUVH zJ8GQ)$7XebSw$Qr;fZzipyR`iTadi%BM|1`Tf;VNOU?4!*x7;)CvlEJ6ON*Jb_iI^ zDGj-+N^q~MW}vW_T;w?t_hCr?IY9Hn(9kIHV@_r6R3{Q>e?S~9GWGT4`k*Zohki)w zgC^}u0dXcqH*yDBhakR?UrxJYOmus!ZvTB=LiN@7kb2AC<&`egun#p}zVZm(?Y>=Y-um=^)^C!@K+ zIrpA$e0LRT9!#BYElnb3@$Hi*fx*+MT)nS3-HG*Yu^2RwHzCV%Dqp>PJ_c=QD3?Ta zR=$CF3v1ci#R~fxZoo^0-@(yM^|)KN)U5SEwb<}_Nm#$EG4FX|1H3471rs}MfVlJ4 z!u}>8`CZ3xv|oPL>LElgD}}S`9B0?Nac=jcBuras2yX+Ewb$Go;eo+vuwKVy^0r}| zUSmTtYRhx6KalVMio1Kye2$eT#KV=p4rAgrlF|!vQu#vk_&l6jG;@+e+ISKtB>}}g zMvR)tne7ukWvU1N@YPf#o$Cto9@Eb~ty~G$dlU}%!4dVPyV+n|-8)w-POi(E*5H`2 z#v5N`4B(3MV`J8c%w^MX@2O8h#cXb82OQ>i9lc7F7B=Aqa$})lEU0bkT|rhmpxLQI z*geZ%ijn&@6@vY7TzgC2asNt2^UM9~;$b_LnUgweS;&@!+6n#IGoRuQgmZ0cY^_~{ zpVwccd>$!6jz`1hYt6ahZ^J>`k;ah*AKnXxbLG*e$4H8?t57q3N7k2V!|+i=CaoI3@*$_r}*s+@M^*gti0q799TGyeM{R5%_7cV*Uv7T zY$hJhJD_}txz5jspRco)#@^7n$7(FL?I4=i6c-h*mtz*q7Rc_YW^$BeN$!~P09cne zcrn{taDLOu4vOrdpZM>Z!zMrx zz)d9a7tp$(^7o5CpMjmLH6lyIDQx5ZfH3XmQKw;f)j0OS;jYRGnkiRn_xG4Ub)1`wJ5YvG z?IEFj9hn<28QWE_0j_2Xz}jLfKAbQT6o$Kmn9GPN=BVP6d@rsIUjl?bSo(G>hI!8t z8*;{jzC#zdc_|1Nzg-8!eXzi@3p!pNCkv055AQx~Kvj2P&wGsi4#b#hb)Cvi4#Z6FZ0$^AVHIN^#@et{MNfUbupVw;5mY>y5RU$e`?@a6`5npa`| zq01-j@`QIlF^LpMV4*h_cLci0MID``pP8v_wCFJ923L7~*A{paV<=bhmQ=&c;}lyQ ze8;k7W=An#evIN(XukO&D}7^=P`paHl{FEgsm7VDEuYYYVt6NvA6G-#JUK(PmN^nn zQC|86Ee>R2PI!#w!ptLr<{`;#Um4neAkw^oVqZ9AIm*iIze60c1ZRMYXRhJDxwhgvXy_j>90t|w64DQE2`zKom-FnKMbc$PQA;`w-I zhQ!~D>PyHCFyRmHL?H2m3|$jP{=R_3FXG*Ys+=&Qx$Lr=srs&hyAKwwo68ChbZ3-r zxa(mcjEPS*SzjnzEXPujXF}Js%;``D!s>>eL zT#(j-8*=m|aV{JlYb%qxn@Vxj0~30r;8OQ>3hPLiBM#I^s=4_@y{j0nokBHFTkz@e z6;z#hYUO)I{J};YGZCuRR%eYGb{`pGOx(LeM|%H`ylG-BI?J>N_a#>7?Y0IxoJ)at ztvNWHTP@mE-wdneTa~NuCjET4r@aqQ4Dq{3B!)D97I9m7p0Lh|WP*J~m;Il07*TOM zVh5b$0_iw=Le zjVe|bMvcR^SK4!`Q>h+b%_t`D*vn&d9=NRPOH|{nc~eSP59|nB1u?g4@%qq@tJmhOf33(9YT3m+0&&>TQ_+3Wr_ zI4UCV`K9XK{@=AQsN0o3o!8=|>nr%54jPbm@BYtrE^1i|kIwI=pgDeNY!oz|{nFz2 ztzUqyFZ_8qp<|Pl&3rnwY~Hd--%c%>wd>IRzub@TUzS>MmE+%r%bze`$MC-lk|zpC zCDE%YxCBP=)i19@U7u3?O%WqFVMZnGk2=h@|2;NYuNQhY@@FM3E`XOu;@O_>10mc> zPcHb;59u@D9G1l5w)f@fdyis~b`w}|m1$Vw&^SCdu9zG@&>tI3?+g2$Bw)#giP*38 zTpVTPz_U)&kYC*PiZXusIEz>|6^&st@E*trkJ(zKLM$ zS`LpdEytZluZM`a?sy}^3@xs-k@Rmd>DF49n^Fr054r(=Mb%`kej#Z1`6AdPeuNhr zFTl4fBN@h$asRW1P{d?61kV{S$E>~xb4sj$t7e;^*t&UG&LK>V#b`{d;~9sO*W@yD zKdJo|k*!&|@-~c~yb8B}nTB^RPsJZb`uxDgBD|TwYMA}PnZFBn;%80G@a+e4ywPzz z+qvQaG@UY6-0yUz-ny+JxXh!rX6>_-ooe0ML?f=&P3y#Yfn|7&U9SAWaX)r!=p|Oh zs3dlpb`Pt26~)iSNiuA~Yj7!REXsb+V%?qga@M!;!r{|3yw$7~FSFhg>OJfuFJB)Z z7gefEcM~<)eY@CBAYX}>{bob<(&-I6YF*WQ&IxSL+q1d!v~}bi7Bu5e{jY$#TeNKK zxe)6wSb%E%-OFAV*)dmC4yH|L;r`(!kz@D$se9gmOw%JIG9?PQU529mzR zLeAgE-t$(V<0vDT9^8l*J9-4)E~&x}pBe+z9_+-gsU4B*g>{R*fu5n4#l!MmJYaq+ zG5bb57+!XhiIXY;VH|q4S%Y!8D=??Ly_{#&So_rCJDT>LBxAd;V0~VV6YU3oW!?1G zPOTc{X~ic>7@rk8X1oiXCkUxs9u` ze!UozoDrYBPp9 z-@*QEPe4?UI^3mZDpqdX2mAG`E@I{slL@Ua3G0YvaAZQ3@c)q@-#Gxz?9q?Y+PKT% zH8`aD6D)fnK|_1sP1e}(Go6pKTLItj(NZ72FtY?VI8unmpJ^edtlZAWx5|Wb#me%w zy(+<-&7TC>3;jmkW^?u(P_c;Z^^7nkcLwa1lf}UbD`j-a1bDjGSdO0ThBc?o=9dO^ zmXlki3F9JDL;yW$B4V<&JW}zR_JiLpd_KlfPP;iDycTAQ6_q={I67h|j1iAOV)SgF zSV8)nX!m{)tUs}kxa$d{m{v9sZ3bHMKCkq+{|_^)S+fpbeR4hPTjRdsD0bMqk_=w8 zP-}4|2Peh1kxgr4iM=fzB7I-Q7|cj`i>3~H1;v7R>}$^Ba$Vrjqa>(c+=MrKGadFi zE(Y=syLYuQuj%^$iKFmS$FA7K#+08;wMDPDr5ND}yZ12TBiUNm)wwL6wUv&UqLExw zJc-@tSQ$I^TmTL1DzbAGwAjaHD{eT|LHKQ(j>KzXd!{#Eeuj<=-->0Czd2!6b3W|| zy3G2fQG8e<-4YLfwvig67KF8qJU;d*R$0Vk6m?H2Og+sgEfx3ON?ilJ<1M63xp8o` zsg)$G!McEzWXm%+d|o?AydWsMX?D6&pYrm#E-}H1M&&UnnS2y{}9#B|rKOMVkcCH8FRXtg}XmhFJ#b8_uc=PnN zSXwv)CQeFWYnC}?)q8jYZn`;2k7>Kuli6XMcvoQ;Le2+pt1+wbZvWb{@MDEFi1SL7!A>H-$UO!W#q1sA6P<(8Jz462K^l5K%e)5 z@Q_8XiKMQ@@R}cWaHT9p!&(#hks)c=@_|1(;UkUD0cRw9aLRGeWk)rvHlv4}eZy3` zE-WHf?Xe>cbCEvVO<~TRkFc`&L@3$NhL1WoP~}{%;=f^NRaq|lD1J|T!}Lu(nC-gE}#l>{f*k# z;PPl@@?j>7vYM+&_E>_KmW-1xkC@V)YV!w6958XxI*9y{3hk=R6DOaPmIrV2mHVG% zL%*JzAa%}VY;@iQzCS*Rfwn#1zH2-*uBK0yJ_B&Ta7UG&Fs?9{w~N&WlO>sg;uRJS ze+3Qg+pD}GDwoU9;?;5JYqNy%@nhJzB9K?0ZlH@vkFaU`K|p-M3Cqmx>RX_Bd8cUu zq^d7$%IV43xmm1npB&h5>I@8~OUm|je08z9d1w`R`Wlx(cMrnZ6TNWd^+K3@YBgAl ze+f%U9>rT9jbzQTC3NdOc;hC%csL%eUn#*epVLh&gZc=|j=kV};t;IZ-b+ih4q;-e zD3w))fBjek(r$I;#7Ba16<7PXYkooT6A~w2s{~`I@P6&60Z+=d($x=ob#s975n*F4 z(455E-$ctYbl06j7!a?@jIK>!&QLw#^qfeE&iiIN+JhT)qvc{zgK>Q@XH2WY{uJi-qB8WNAA5A_KrrK*8 zb~`*4y}7x(U&mP<5B#XUCyAq3&hsEnd;p`X9u}F;nU;7>5VokU83W(i7lxwcBOq|# zP7QGahTnV6X1_>-(&Zdzzm?_Jhx0TEZ$@Z+4y0**2;i$?PT;z&kCFTWKIgM`wMv*I z_b2;9bd|D__&W!r`1$OSqI9k5ynO8oDn|Ka4^yC; z0WK}kV=7ivOi^8_%|6+c6E9NE=_bQVk%sP}ZduQ8Csh3CCn+Wre_>|I4Gq-@+G4(1 zpxBj1`o}|Oz7#DxUSq9oHxdt<>gvxX7q3Eklrhp=iZil`jy(=)U3VLg$MoXv+7};- zGdKH{sOBX8K+4f7rvl{^5!!u*cGK6A?3%kDxLx_gUTo~bJVzA9GRGp|=Ce>3v2Ovs z9&$&02g6G(K!;0}pzH??4 z_|Op#&@gR;!XTe+eGg5;Qw5DFS{}^Aoz2Y1cPWBwj#Nu)njIM-OzXXc_m^f7f09=6 z(P%-OsqzFm)HLI3pA~@}6YId}wj+>YK&yDx+4Tft7q%hsFV0Qb0=wgSVrIQ@NcPcI zc{d*;=B8s*`e#fk9jfYmMtg?rO>XeizX#Pu75Ht_(z5lg_KK@{mkYNb+ssg|->r{q z^hHoPJ)-w_innm2Itg0q7v)vM+G3`y|j+bvcBSJLY2AS0@&=pP;}-jVWQpineK*oM0#80krFy`MQ!Rr1 z*1prkc6X6<7C^$0F7J*s7{fiw*5p)IXPuyqgM+&_z^CaGfa)^1SjU3SDtEDlt$|$E z*^*Z`8OWCe6qXN6tYq@MkqUp(xQIEbdaZD3HxYJbF{t{5z5{B0I!8#Vi<$nz$vA3T z1E%V}pU2bx^b2&pmO;UxtZlPSE!s6z+Vmt#-@>P*Z)YV;|L55@|0{Xz+IgafI_-;m z!NzZtI*p~IAF5)C|%Gzy%9^AtGf+xZG1N-*cA(pGr%5Pzk} zG$2n@P^l69b4(g)Kr{_S7RlEv=^vmj38>}JR7wPsG-;wp`D=Jc)KK+K-p5F>hQ9Lm zMLS3S%M|(J(#P{fIsd~9|Eh!?qbO+y>yYqn|EO2+G(*-neQUytUYhIdMTPz z8KP}kXaK#gkrfO$U%IvmW*rQbiyDUEW|tVTHFy}*ezFZlyl%=@Z=%-ip&u|KU>>z< zR^zeJ�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

    KvyIUauBu<~MtU@U9lQ@Ujejdh6M|vU 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

    I<3=iAoP;Y~FBAa~6BA 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

    s|`ScHY1>Pk6w+BwvCxA9cUqUkMD|~y3Up# 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

    u#mM!2|zQe20I$Pw;j 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%0D>=1%1Dr0c=(?rvtjSb~Bo@ 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

    Jt$wGvG*`EuYgeQxd7Wm_|-p@qErT_~d1U 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 (WslB+FI}={F zt0S&|nodY4apI5~D>*zvI=yxc_t{*7av7qM z?1jI%WC1&24cvR_4YP)R^GfY*#}ei%Vg1(mxc-BQNS=G2PaQ<5Nk?9UoWnPeVuEZ_ z_~z15iLjc>#685Z4N{Duz1@MRq#A2v(=c;>8COeO%YCEX@CLi5OLxvY$*~M6R!9f? z{-G#3mxJW#6o9WyR;Rn>eGX=>n1mQEzJ+8ynf1rA*C*~n> z5-6jy23ikKpiH(~G&%~TTb`JyD&}}kfs4^gL5^82g=IjPCKa8tROavbjQq=%1kn+*|X%%oQjvhZ;G*A#b^KzPrHLm~MX>$!Iz%Ggi*5M=Br zZ*+&>pmRVJ3#7xNS0ZPQqEylrgxvx>c1!i|XfWad+-d4VZhX_6?Rz>0ZKQH&d#*x+ zzrW7iFHPd|M9_L`JTJU@3ieE$3flYAp+ka>M0yZ3>8j)sgs)7F1KQPkh($+T7}+gS z48^1Gz9=*z+*sIxbR=8=ntUq!A&t$n%Oc&~N99j2?MQD6;3BKKAE8aKpM49`2aZ3g(3>EY{xZXAu=v^XWY8|jB z&H}&~Z{fpU4rcZI;QR)4mcM5r;r$eRF?o{g(?FQ2q{%2uHmf0amsexNxpz zjFEgr<~MApN`jdGeJRD#mW=$Bbw5Tmc)Qt47aN+fB_*ARcO;-z(@uh7nH<{`dOH?j z@7$LtPl|h8h(MZ8fMiZfR-+c;xJMHdUE394sYfwQ{OO)i0~=u$*&ZrhmP$*^&Pr=g zT|whOO^GWeeoY7B{z$$d`x?$Q)Mrbsq~hca3#6cHxj=l6U9S0-Gd%?2p#{x%-sU7v zptvJQ*2LFs8F6q~UdoN}4$#z7mF70CNU?(vzhYiQ31U!;*|*T`{(jjd6xSbUcw@pY8vWak4q!orXZD9^nJkL5|dL~|T0 zTYN)7eFBOD-X9|-%UnQ&B=||Ap7drk9}}Zq8n9|b3t7&%{>;biHaxlcj$-b3Ja0A$ zwitF0-{;bq{Pla0#=_4HQ%Vm_0>!khr=^R3ECk01>cZK~meaV{=uW}Z=OBpJ+=FS+ zP04S^!n2kWgx1NHY}CscJYl|qIqK_Fox|{NIq&}3@c#R){6Dw(|J+Oe?eo8`0mKfe zJi7naIsW9o9Rv8+Ps_Xga=CzDn~3mWInSR>Y(!;pykFV!=nqk`l#DPUHZJ<-DS#h& z{{HoC$$uqJ3?DrrYG~+CN&%1%ml#_4-ak_o{yq0#LS%44Ci&uM}8b@_>tc6Z-)+k-2Ybrm&{h8t>aa${OZ9{rtE=< zTXck1(FNXy4Mnp?FZuh+FL3*iSI}~D3$ZBmFy3YBx#z>(ATIcd>2y1JwSO?LtF{0JiPmny|1Jr(FFMYTpFzux!_M8&c>JPhVjvKn){liJ7nzf!U#BuLu~I$(ND;tV;VEL zfBC0(vCnH3qiL}=JJneiI*kU@4Rb}uBW=+C^R{zVvvG= zHW6F&llh1NCT!Z4Ap&-*3YW|Su%z6)AoR*NoZr}AY2Xx#&b5b%8D*Uy=4uzTnw}3g zpS;2DE23GCW*cBz79p9t2MajW9ITU7S>q37@O5e(W_vghv?tUSEk{KI$qqWD7_jKj zB#C6l$6m7(pKBZd>W|1j?IvcQxr&R223P*S+ebe!E2IRz#C?QBo0@odaZ7P};ds8Y z??4ve@{C}XoYz`$`<@f)8>@iJ2V0_x zrMWoRtN?EH9L09VSmT}oHP-psNYVGhYN+=>TNtf7rr47`LLwbW(;7|0e%B93)@22X zd{zOu9#JfLKmtEIH43PmL~>(ut~8N#hoi&VV(0s<@!7RzqG{J?#f9VFp~7Mgztyu0 zqtZ7jt9g$EdKVfe){-WV4F|FzeDZX^!X~5@9?94SB77NAzi?KRov>>*juKckVP;z{ zv5_SPEZ!^_)8eK`3k{?A$P*xz#OEpcMJ)k?(`KSudmV8;kg9D3>;zdyzQL9PBN=m@ zUqjR^9mYxaSjY1le^@JDTE6Qjjy!4!;WuXC_cPBR(}8YLOGd2yidppU)mioGU4$)F z%&YxU7q_faV{P+ViGd4;3!A7K;^VOZ_P|PAv@W>^b>q6T?P_N5?X4Aah_?}Aj(+Cv zCQf7f>X@-d36U_nhY#EEhn5(nHd|QK31lh*>*Ev3ARGN|J0%9pz;~Zl@Lse!81_U3 zhZGvHV;^?mmvMf=B*0nzHXGl@4(=@vsMPZ%=!$qmb2sWs} zI*i|~hvV%J;`xY#{G=zl%`c#(Qz%_{ zQj;y%WWttj`XGgl$iP9i0! ze{=-cox%rPoP=9UI+FbtDK=d4fHfblN&iD_1>6~pN;X$ zPXgHp9L!%O4Y3VHvLUp~e}HQ~_5)>#H6PTV0UlOA20drpl+prxv42n#ShdPnIFwK0 z3r!h&zP~fG51Ih2`*sqki48EXU1y2x06Kq81Bqp^+!7Pn-Yc<9Yi2`f$9pZ-uz@8! z?U;yB(Z{jx2U|#*=_Q)`83?Cct_rPMMzGq5V_?g4csKkJM((u4W64&P?bw{I@GVJG zysADD8YpYC?>%~Q@>$$svy|j@3VJ7gMiFi$W)D?ksweE(zPURf(nEtCe>)%R_?+W$ zO(+`csW8Z`QHhBirk%l6nLR}F24f_La%~{L7GLH~1CJXIK+Sb0SdX*C=FK}nlhmDj zM`5~i$DX)RvC23Hv{UB&_+E$Q$P_`-KNBxE7_b9fh;SFg_ z$539_qNDtb%|6o)l4DGe(WhL%A)&|03X~OmSePbafec-Ie z3Vt;9wCopP^SCjPkM7%*R|17CPVwW{OUSPJ;o#Yud2Y!BGQxrT2#G=(t52nqlBjp+W+M0*LeZDTHuJ`06FN@`1X z$&zO7!**LHv4w^&uwe9AXh?^!%B6ffm|u^*d-N4$n|M3R3=-y-D^g~qOGZmSDq6j0 zLw4c>!z}FtVH0ls@|dq$yNkx8E6Dfo@dR&{s8dYXsKHu4O2gtwTX4Wd6-M}@koz6e zGhDJxPGOT)nBt|qF?7hxi*5Zf1lNr5QPk--2Zxux=5p+oZJNeUXO5mo&o9r!L7NO< zg4c$)#T;!W!vv(_eH%!u{JF2U(93gEtg&v=t~_8 z_OP2@YEu6Xa-Y)Lc*JlK1ROVFcMr`3!V)09p%DH7&|z8^7RQW%{03!t$T6K{1SDJV z9JU+^X3a*~R))`~n_!=caaqsmOxCaanC)QXHVH0K)e7PboOB3;lX%%z8;X=W@b0!K z-c$Dj$^8hQzR*OxQMm)ePYMWM1z`i07B`i327Ri{XLG&&0Qc{8m^_XZg(mEZ2W>EK zvKADdSb|+1e4c&ZDL}R!lNk1l$;{_7xfHD92%7%=a>HTP;F&q@PAH2U72+{f{JSY z3zznxQ@6n*A{|45 zcyzqa{u}Iq_(NId%{wt;XKbhBGXT<-lfsqPEP`doEf9~HenFWuM=bAsn z|8FLE|HBmXe`UY_+f=erVZBI?5tX;wV-pibBqrF9AyJzBpYzc8$kyE5-ZE#((-`rG5SogU@dU>{!)+f6kNtKCP9%_)8f-)&YL$ zB>S1L!+V+Nn2!rf3KzRuW0g9sbS$U zv456S2(kHrEwUNPYZ*2+Lu@KL6KzAq9EMVQ!ar{+P%^?O!p$F6ln`z^Ue{=xN@BI^ zDn@@86&fuw3NTU_nHiQFUNKx?m|)n`(8aKZ!5f2f2HOl~7(^L#GO#z$(SM?UTz|d( z6#X!LUwvEsYI=9{_UkRz8?P6rC+V5%e$u_FyH|IicBpm}ZEdZ`TF11~v|4M`(^Ap= zL$gqGndUgn08NFanMS$RI*nx-0U8Rmhid6+5o$-&H8sX*6somVtFNY}dQbJB>O|E+ zs!Y|gT1B<%sw=fZ4fp7d(H*4Qni5Lu>b%k^(b=Q3L}!9pu1>g4XB}4^bDe71Pqfcz z@6leS-BIHYjd~i|>aW!=s|)qD>RIY>>aElpX{V|8H~K%k*YJOKf#TnO$VT1HLG>S& z(*9)~O;^3D1}arF(D_nTgR-g`ysN6gzA75%)~}+0&gQBbY^bWi@~Rpvt*SwGRShDl zYS6_(-LBq0X|t_wd;hMTySD4E)48f2PphhdTU8A*Ox5iy{_*p@{X6-0?dz{&|GNi` zfAc`M&u<>+nEviT&EGvR_}v4o-#t+K%>(Vy-#z&7y9ckTkeT-Nsv2CaqJhrrDjI0> zDjMj_`CaeVSMf{j6;(CJsj5L{RShOo)nHsz4MtVfAiAms!>Vdfm1k-Xs_G4aRW#6T zSVaTvYE?DZT}1<}s*qZ%sH!&{uByTI-X`VTH%zr{v?0h`!<}J z+X6?wYAp1JQIQ!dJ#l&X9Ppg1Cw%^Jl9~%s5qm2Klxvs4xs5GF|27Wd3RQF6uX{~o z%-R9Pn+L=9Hz{y3@*9kPbJAPisRp}qd;!qAK;7=RbgcLV?%t7zLNODT8L5E#+wpAD zzHfZa)kNuq=nPhR@gn7}zy`+R?XbcEtIT`cZ}tORcIp|veSQ{hIj`fZ;+J4x zPz>Dh(_p<8d4o?#2=+gIlTR9#iW!DBp#Qi);b(MFvfcLpV`i(NUyYBL7Q7Af7Pvsu z1)sQMlMc8d&`iY4UCVnKPxCI{x)KKK?gyQ-b;Qh853u9DRLtGCOyNWs-lC6L2!~k< zard@fc=6Iotmr@)&FT%nT1^?AD$fFq=LW3AHxBBbIRf4mg=jf-CA-tUAuG*p1@B(Q zic*Vr7&Uf{w^6&fV7kUcOl!S}rTE86dGl)E<1B5_qQe1*%w7z&HgDmB-ZQLy&9;1oL2-`kL>P$G zqXJ<;>M<$mu8*ehk^`;S>DkL9zbi}l+oz6- z>;4v~Yc?BBJUk7jk}cu#@ET(Jh{dS5pT-O)7D1lzYPh-V5*n#~g&T|K;o;p)7|BE| zP`?6S{|LkH@ospg_8UGp-9VH~OUH#%hOlQ1D1-H~RYL8eK0DTh%epS?@M2U1v#ma1xl;+a4bv3?{j*s9;t#O(ku__-t_{xa-G&WH@Rx4y>cdTKr}AA6 zc68c01XXAB@g8rk%iccS3h@WlgQ~tC2A62Cm|E_V{GHI%#j@?Og1+k5-nN!F)1FSw9$X-9pr;a|`oL!z9@KMrvQ*jqRuwir3HR z0)M?gLH!1uu2ev!j*ckkzfS7JF5^QwL3V6mP0@bM8fK;U9!+gE#qQ=0VfCn+&|GBm zzB_K9PVqhKHgDKk_*i=u2HXU(HGCG{ z52e%E9tshT@SSF;*Z)jzgRFKil{-TMgCbDfK0rz$Y@+(b6-`7Wu~0#iov z!|9D$SN8pi=Mo9u_l3>p>aw|!skmhO24G_s!o8pk(v>&&IoTzwF09F9dB)bhj5jQg zO7o(Q@_M^$1>p~_O61(Z_^Gn~xrdN*Bwg%CiAVPl(O~|{P!L9ldjmDaSe+hG?O5c1{(p13CZD{dfq-fD@16i|%Q))vJl! zqCY8Dm%oq*SFz;40Y%L0R4J#eDa)%lnHBVJAWE|j;O>vQg6vGxKH|?v54d1r8fLAn zF5?{94ABvUv7%arG0R#z8xMQkK#Egr!|*gr>gUBAjE4g0m}g#17j>7aK#f83B>Y&; z!aY`EPTOou-dCMXEvt*uN0jk}a6o*$VJqU|XW)C4?V!c` z;i}RiOwh9?j8zC~3wJw5@@%ucl&!W9$7&V9os%A7e|IBxEzOl(ymFAPZ}$nCxJihyod65DK<)0nITv$V?J8jCh*=%$3p9P6{z2N7jHCV6nd%)iq#LHZ&Ee( zeqvoJ_-eo?4)8~p}(+@WTB=~&l5@Km+LT<>NK-+EyB zxVQK<(3KteHVHzO8_GT>B1_^ivbdxmX}~q9=*WC|Jg~V(H@MiVIx`)xA4(1dBl)YC zxC?o+A&pThXu@ z^ER^*G!C>onIdMTn@goj?xM^c*3O=QjmPYP_Y4IdO_qtR%-*Sg1*`ACM z*mk-tp4>VQioSGVCnG0dmYs@73vPyiYg0+4`Ou}$Xt5;!DH^KW1eu4-?w-Qw@6uX> zGq^y#FMJKm2a509r?EE0#00{V-4cxzR6e#5gg4N@#1hDMp4xJiH^T&*Xz0ZHh?F8Gir<;A zj#QNINWpM$k2$T_on#@$0F-Tx@QRVmz|0nhan9w7pptY6Ms8du$?;R>G!5@j7Cy7R z65*U|w}^4aVcWC2*m(2;AROl;Q<ush(t*u??mQD|(SRu=Xx4LD-J|9^n1d+F|#vnw5A!*aB@0Tv_tS0SdBJ zwpMQo$k^2Nk%nk`oo=pWT9E(eBKa&;rdb3J%l6^G5&DAUEM$34c@QMa4+8H@z+FvL znLKXd8>IJH_;j_7qW+mSaH?ESL}r^YnI{sCiCfMMP|J&Q>qKpa1(O>H8Y?571hUS@ zTRI?dF|geiCWxCsbC?EuTB-4lcoYP$3#2=WrHn05-J{stYb2ys+<~&Yb=XGy1B;u! zm1V;ZEYF1wJjw>W1*>_~j7oUCSAlWd*zqUN-#!w6|plrR{eXw6^T?NH1Z{nsjw&j%^ zY5X!OrkHU;B7DHK(5_78`s5Gf9}Z&o$4va7{+5&8!RCn>r}q;FuMfog6or&=mH4_; z;?o^ZgrUr}rHPa|SO2j$`i?pz$?-YV?k-U5Ma{hnvDW6MAZ?$)$R5Es(O5w`z#EIn zKAgUjJQu;Y!5_UG8#TuB%!m#=sLRFPr>t9@WP?)ZKX$VY(WEzQ2@ zTFJp^o&zR&Q&6|(Gs&+{CLQEu|LLqq@C^5@?3k3&S!;h~YiF+<~{e;n_SUl#u>3m@&U z$BzgP9U3t-^hd4wm{>YAVN-c_=*Lbr9aKoR85REj*!v2osl=XV|c);X?+;M=G`>4U3ARJuK9s-#k* z9)e%5-xb?2{(QgxpS!nwgW7d&Ep76m{ax)kweQ+Z+TrzgTg1u_`=0{(bIaIo;F1h< z%+#_q{nfO!v|ef5&^oBKNo%3j6s;jzy|vnDxoO#G>1n>xyrWsHxlMDiW~OF>WZj@t(eJI_THi_E zMqf|wmEH}#V!ds83-zYxCFu3jYp3U?S6k0W_nqz?-4nXIbQkMp>Wo+rsFM(FvnnM$60p zqv@tuThmD6lg1s56B@fTmTP2cjM9kI=%V4JQAeYa`Zx6l>SxqZy-8omK z*h~LusJ~P0@){!5iqt)0uBFkKXyt^gds4~!R^@%Z?(woT$xd~TmeN!)k0~+Vmd8Ay z++cUmAtQ1G540G zDKM!{oiv`WR5AA`F<+I(+^yt&sfsBtOH*JLmC{r(QHlAoJf^7R-Cv5SxL>!Frh31& z^8Wqh@7GcC?o(}(dRdwRQ?rz&im9c<+*ck`L&>{W1yko|S(=2Y^SzX&im9f=+*=M) z=ZBJaw<_j`vNQ$e`%;<;rp`wt=I-*CpOn0)iutN6O@aBMl%|ULQi+M>F`p}WMODnF zWoZh`$E7q?%qL3PGnIRFH05JEKPyAqLikJ zxk`!oq&((ICGTTZ%w=V13d|*?G*!%{O3cUQF_#Ls+d_y%!lPMXDfLhsAA44OH*J@FQuts&QM}LD33W)$$M87 zGr25HfjOy^riz)O#JpP`GgZlZM-_8?S(*Yfsg$OQIZ=sur#$8aCGTxj%yDID3e2&k zG*!$oO3d5kF-I$TZ>nMrD@#*g4lkvtVkRgtZ_;^6Ay>*{_EkRr zvMOfpvNQ!|uTq*SW{9$#m&;@JRPtU@#q3s=roap?rKw`}P-0#xkJ(+xdr=iLuq;i1 z*|n6WiW#KDyjUJHK*@VS6|+-WngX+PDNPl#ixTrfdCZPV-t(%M?aR^>nEs_SRm=`b z%=6_j{gk}tR59C?r71AmmeN!)+bA*5mB;i|^1e{T+*OvQz}#6%Q^nk&#C%a6bGwrF zj4Eb}vNQ!|^HQ2BW-}$`nev!S$$L^2)1@p;f$3aIQ^j;sVxBCI>8j*Cp^DkGEKPyw zSV~jHbWmcRD39r+iDQmZre0RZ3IEtgXZ> zE{|DL$$LZ<)4D88foWArQ^mAYVjd}vX`|#ltcqz~mZre0R!URFtggg7TprUx$$Ll@ zvuatI0<&@{O%>BjiFv3zW)&sxK~+qXvNQ#zaVbp|vyu|?V0lbaCGW5KiFCYzuAYJ3 z4Yj_S0UCM(_1f#z)6=ARGS|)19jP0n>#S>{^Hk@84%b<#Gg)V#PJn@_j-XRV$C!54 zf6#lPHP-Ny_A%{E+Vg1Nez_gVZtP-gOkWfnFe)$_Z4_kWXk=jc(6EW2uE9M6 zZjfs*+@O;|L;c(Oa{ak9&-c@>r?0M+r8iT{Ny|{PM020!Ld}ty0kr2|@sCDJjfNVP z)jzA>RX?h}Sv^;Mf_k)iM|C%KYlgs+LQA8HA-tas@?v(3pf7m!kNFjaQyEs95&aow=B~t-+;i* zo%BiJe@E9I`+K^&`tRv#G@1Gxj@rS$p{M-~J-IsJsH>=N7ezahDmM14Vr(@l#-?8} zHnj?|>3#bbwmMq&uBrke%__f&XE47aO!F$jG^HX;6Dz_rwjxX;D#DadSIgeL%n-B; zYUkUrWl(#cmi~Q93!E4Pl7^V8a<%W+vaPRyNkyJuV54PkuX=As-4>m&*rye{b#==Yqk6>S^eGb$&JdluwBc5*4ltXNnfxX2@>-#EH@X#gqVDU8FfFSHQ*uR^##e-?P6e2B zepZC(m0?#k!_sm3JL5HIQW2zP6=2f7RuQHp6=2f(S`ntX6=9lI5vJ}HVA6a-d1lgI zN;f3xH{oCNAu;v%7bb&26?mM%07Cj#9iLMHB+cjwFlpSb2vb2tm@1M1X;h@)8Z#>L zxRDiM@~;S!b48dmE5M}wvLZ~gD#8>~5vH(;FmOT3Wi}(KN;;nzWc;%lip8uzd-TvXCw$DFY)cWxc7d6KG!$tM#(zMuqCrY(? z`gNRz^E^fuWtP>7c4>;r_VKQzI( z<4VyH=ZSk_Z^Gv5mH4KB+hQfF%`jRg39f%yCpdhr&Ns!ZV%GLQyxP=9GTS!3d`9?O7IrE|m_FqswEDKUi0Ux0$CE$P&n?6>gNHby<$j2oHxs`0 z$r7Wz5KIf(vb-M!u;%9lq#8@S*Vx+-{QfplZ78u}z(K%4rkv_2LFdQ)VE3oDRA1-> zcu^l8IA*Y!TN|^j-O~h}mh~Ccb7H%T>0mCZ71efq0cwi%S-Sr;f%*gi>4mcXRkVcj z&(-enBK77!(Bj5Qffl(Wz`b*rh_=eC;oQr zM*L&DJ}i}mp(KyuUXCp3)KVBU?J(*MOk-463B9IOlh1oO2ov|)^LtwBVCt*~qVQ@T zZ1vazy=RV)K~_98PuwR)+?(Lp$6}R8wVR;XbbYGt6pMikE(&7f$3jG$GtYW72U{#z zBuu&d5{XZ+xiO4tk7!}aMjyfF;V9lMa4TN0d5xxpN6_ce6xcbU9;BaaSYw%vVks^vWF|JsQk^811L zW2$1DQ(b&LBOB=+&{>_v2V8q3M$I#YSnalw9AM)n7arX?m1=IS7f;leq5NxIR#`Kq zSrxn~HXLrwdem-4HLT1f-Nc}~M`gi>7P5kEcg5Z_-(!6$-|;lF7BimXEVS%32TulA z@Txyj6m_Vc|ImZ5$)Rk}xwE2FAL~lULv$V1lX=gr&CR#9;SO62`DVilVpsPnZ0Cv? zqY$evh|hdSHY)EYnM(Z)o_G_h{gGw@-@9$fGT)jM1D7Nwv4Z7xYN z#MD+3sjgWLI6mvirnbL|c0Y??Ns%s}=Fo(ZJ<%a!9H}N7q?p^0J{iEK`LR6ZOm$wo zL@wzN4ryS*=BzanEN<7~{cYcY{m^9)*4>(soX~N^G&CP1qV{RV8rV%@F&9&S_!V`< zu5Y$wZR-qzW8Xr6YM-%X>pFnPryh*PSk|fSHk4{;QN1v^`5*!8AH5a_?^uov?({m;#){LIZU#{7UwN`(JbNf1rQav}aTbvwBM}Sj3xLxLf!s<46 z;9z(gM*4xvqxML3=ip@Wb-en*7BpfjgEWrh8zehmhHp|KeOxCb8R8C24zIF5!BL+- zgb@?J3%#^v(xSSv!Z3Ociy?q`GKAkHvWT z@mNOB6rzl8!L;RHVDlVp$#!vFuMa5cfu-pqY+$F(X}kr^goW6`;ssKDG92F`Q;>W{ zp-~lS{7EOe!lr<}^+^kuu)6PA3omeRh@&5A&@{!F23d{Hy*FFfdb5?|<<0ogo^-ZK=~1v62q0oVEQ9n^41 z5u6%s{IH4 z&$7rrF2hxU`KVQ*jgns6I^@Z7M%7~X+y=v*w=>X6)`p$yFo~sheFXvEKZq;$-od(6 zyYQ1oO9b*?qEvUU&65JyK06S|uVAI*nf&9d$+&v@Q^Dvu;3eA}T(j#awpm6cqkp7; zAxJS+z5Q-D|I9%k-$^wN_rk<`UQ!J_@A;YTINRhTlVqE& zJyEi6KGMw?$Mr6PCtJF+eAg+kWYR$Vxi*p2U8v4=rnvAUyEK?ox6rnaF(ch&p&7HF z;qV;cl}#flHV9Oo5TqQT#}pgk$gX7Brv?r2Rq7Ne#g8|nD zFsTk9jTJz6W1LriDh&Jb9pb-lgctktklHKhH+K(iB2v77-IG=T=_-%*0+zLDw3I&x z()GJp`vu?mdYqmCot&O=-%6JS(lNMXYc5#ZkH>M#4hrKZ=ScP}#_kqmZJyNRm1a+n z@+4^6TMx-+qEz?N><Br+ugZ(`(|w8oe@&)OW1elhkSesBi6a72Gt}q zM$tT0&+s&E%uBL3%b9EqW@p^+H{Bfnm!pqlwqExr= z3+w@^K`A`>9FAk1uL}V?o(huvL$CyHcyVp6rHoZ_s|AjSyE4@v$EuLe(Klv7B#4Wrx#tM#ml9-ppwYxTJRQjBY8 zSR`J*`v4BX4ES1oGE%)vSYFeOC*=6bmgKs@lVme~t+^Lcu7g`1E`WA7!=UJO9@;r3 z0qG0*<=ftchti?W{Y-)6E=$>X02BHr!}bpC__v&X^kKji`1*b;VN zC5?O*V5`Vl7~#a|-WC<0`ulYK~pU<>R{ht1$og zYNU7!5mYXr3ie@^#l6LjAM(K`ehv9N2k_k7k^Rx6hxeiP8e(qPWwPta{KNMSa_OG8 zkGILBTAUqcG%unY1ubTn@Gb$97U{oH&=|0 zG69kqP`y;P=z}hk@-?cFD(Kx0WD`D5Wajxl;K|WiEKz?W)ZFXKs*DH_rk=|{s-4O^ zy#5GOe-kP1MAB8DoI`GzJD=iq5_C&Rr23}wg^T8yR2S5U^8RxI`AZm8!jhArOF3tx6!Srf31_04 zGN%dEfpiy&m&jnsswPOfEblxlOMarhoSTkHRm9n*acbN>{Us!wvSW7rbD>MfF+r*o zdL!?ujN%@QeR3K*wRK}s{$u=YrjY%n)?Y``tGpbwli4Y@u$MWakamnK&c%xvHe5RK zjm}#9bs&7gNZO9BAkcYj5mCcS_lpk+8zvnj_~+4*1H(qsxqH(2gHgmCJ}_o@xzi&5 z+A{vzr-vy|Z;PkbWxt;M=dN(Nq;i_#uVzF>4Wq*>BbEE&OCK+_N^u4r9isQ^z`JNV znv+=L`~P`NV8Y-be_oZ2ilbxyB4fg6^EjQ&sW_@pvCo~TG4U}8F?7h}kO6e+q|_|M zL5zQ0l@0+dbEIc&Wjjib;S3^(=>HtiR&>~Ad&L2wzw1|%($nhx_Xe2G%uk5wKX{m8 z4?gYom)>wUDeV=FmFkg|zs>=aTKVVq2E(IIIBoBe&P(MB{c;2QkQ- zYN0jS3U6#S3cZHd3zHM&cz~72IyO;blS-;U$X8Qusj~XEac5z;z8(x4^nKUOBnRwj z-vT$C*$Op6wun9JPGV`TpJLli+2V`wM!ZA85H_IW2DqDM$R^jw7q0aWV$Jh%n0?}5 zjJNtOce9S-N!eAnh29oe>liP}bE0tCQMtIk=M6fo_XTWh*p+Mje23e{bw$GFk+a@F zm6ULhs4yA^=D&j{B5M?f@`+5IQL6^Q2XL7zmS(EQ1x`EdbU2b$3+}}rU>1vA40n% zs%i3dDr>0o0FhDH+-ps)jG|WFIf>Gd@s=i3;8o> z-KaU6yCegMj$+;v%nyjb!(WzoM`l;UIn`@ot3?6)<@#MX;Qkw&TBy&d;ybuknhq9W zlngdsgIXFE{88)MnD+FfSnG;CvwM0Kjq~yan@W`g!VszbC<_?O2X-^!8rE^bl^cJ^ zNA|xXWVM)ync+*p{&WP?(5S|O8hiz#74H=?%N{H+8b9{ttP$Resix2i?RPf3>8hj7Hzhj2GRlXOPU@(*5eD-nm$Qzx~jppXA~@SAli!S40D zv9NzHrhe;y(9yU*Uv_zm`1U|$e0^IN9H(*oP=^xtC9~j$;{fnAIf}gRXB?B{jgk$p z0mUMX8|dOD;nCt+tkbrmP*;5`O8wdL`T?4moEC$7b-);BFZT18F}t%woh6UE3>wx? z;eJRSeo1&D)IQdLwG3Yi(`R>*-EHW{wBIcRJnAMa%bX<)^carn*|xmTD0OCV^Dbr= z_rMLlM}+q-Q!w!9c}#ldh}~+~^F!4wKz-H^G~D+TNO!P%;Y`ePc7eQ%(?aqUb5<|s zBi^d|2AAwm=Z$aIqUSXh+smWj+yD%bH%ix^IVbyLl3h;Ci9`Aw>yKZK=ik~fx(8{zMBQqgc(pe@gaz?ES&xT1@LK;1 z*n9Q`Y;txvdSfHLrqg6t)yTDo>h(VVxTcM>{H2$$6k9795nDyWkke-1wRy(?B za?*SD;^+pl;d7{+5hf#F3Vy!l@$L3`{A7F}x7;{KXi-;7kbOQ2k`IymEa?QCa9#(N z1&J)6Uw@w3Z7L2MQX9$kU|Qb^__FVCpl9K%p7)^Ar}wb9Mjmua+>2yCP;zV*^zA*3 z&FZa9{mt?A9!mD8F%jDMy%P4`HfAj@@0RszQH@z{G~>a&j$!_1Upl@0l6R2zeDU<+ zrTAieCYNlcQ>6^%GV2q`r#*jT>;}tT=53Oo$#22Htj50b~~VpJ`4D z1L{0gw>6lwRO6)Y7}(YfKI)l+ZA2wu=+xmb^K35sjPJtIZdYbQvd=WQpX1`1rIOsAO*1>|u!xP@KYfw>HB=`wfDP@pJGjS%4JhaI(<^ z=+P`lp#E_3OA@9y>dlFw!|QrOmy2J}EOsU~`dSTlHLk)XJsjfi4-P%!k#qp!t&%V^ zsJ_@=Ba>o?F(ZG8r@Kw$m%pkB6#v8xzHLS0yc$SxjxSkpUvBJw1vf02jH4aj!5qD1 zV7p<95b|UwQe5X*4?4+Ce{K#lZA8icL2cbG?9gC$Jod9U&(sNr+>m8b`vvlIEGOZE z;Gg^j^xNiRvlTBXKBx=dn=c`K{wZwNZ3Yu!Y#BYvoBS&KsGR_f(=~8Op^lt>7F+3? zh$fd0$}N{z(g_Mp#6BZJk$eKhE;~M(&KRiIte22}`ZCUnohXq1#Le3n`S0aI+fG$^ z2fcN8zEDldHH2Cd(pmk?MT}x4#m>|CpyMLR|Db>J7+AkC8Q=B{h5+3T*ywp4E{sqY zriQ;eNH|czIC^G4y~vke^f7ysPJRr2GL!_V1_gW5+bqctF2DL@5tg;@?J~ z{7sbfsE-ZR`)qhqXy-VF4A7;Ry4frc}dDi*%8n7G$t1?aqoBh zsQnIS+^!0euIE-#XNirxW#4`VCj6 zB)>_yZoD*}kbE%#A6|S!V{siR-zNWQCQ$69KAxbw<`sM>J^{OGq&O`38JxXp6~tj3Cbf0- z_FCl2bx6mODc>_^l0T60NxvmkS+c#1t$A}8M;=%VyMt^QwS`~E%s|ck9Z8lVd|TXhS{IJ>EZMf}Nb%x`s@CHK~^1yC0frr~j&lIPbtAUieZ|`><9Ab^+Lo=&` zBuBClDd(Wv$dvMr&FG+Z7Nz`Wa-xi77hjR`C2sXh1S3;tw&2)&JkUa)QS683nYvu^ zS(F2F%56y(8?Xt+cVY1Wkn#x07J=*wMz_d<9jzZi-&GD$o-N%c^$Gg1H~2X_1t_l& zshyPn=c24z6=r`<2S#<8PV+KHW_~pdAA3(GnFnK&0}WZ1EBUxKX{$(ig*W*b@l&8T z`RNtbJ51y?t2aaS<#qTg)iedO?brhBD#5ChAccA${O{{-Sr2q4la+7ERDYsgrJhb4? zQVQkDJSe8@iZcXC7m?_&fDu#;MOs-I78XBTDlDK_lc_x{Y~-H{Mx|x@zgDIp@G{-(esoh#BMMx8elRLBioqpUenrQ`(+2<`0=}Fxcrqc zE~PVDo_z&33fJNFwGG0-j5_$mV6(`m(v`=!FKE5h3!d7?u!6wL@WE=6&@ua<;1@Ij znsv~IUWX0&kZC8-;;APr30?>q2e#n4O9kHgT0{7cFPjDF?^aJ+vTlBDSZ~c@5JFlg zo}=Gn2z$JC09PCCQuHNzAdk3b%=03GVOG3_*x|Sj8*sh@_mpe02BB);XWg2&%^WWh zmh6CRIX`Vcr*e6uVZd5nyc)h*^t9dsS`k}?hN&aj@|yY3HgY_h_r#Lt9Jq+}9wf2{ z+5OoISyNVMQj@LrC=lDfnG7!uJjMnd6UBFdPhq;xd5F7Y$|g6f&L`%X@s{<{ncj_; zSM!5W>0S|s+!1Bi|z`k#c zVB6T<^4L66ubTmDz-{bqM!$;g8 zZkiS%CdOt#vTQDR`p}6}Z)(eq28QvN4m0Hkp7v$y>(yd1!xp%8>0;=*TOT^!(}T8S zbeX?=3Urql@^6NNkhy(>J?BF)xyoF2=6<-0#t&q@QX%a{HP*e}G#Gf`IBYCfBwmp< zWC3driHd$NXamES&W3>tj)U>LR~Qp&$|o&2BkZ=b2c7F%aqyN|f_t#0c-Hm4pm{JJ zBE_S4dBFoT$#zGVr5fz`vb!)uV>T4sTLNj<<^stB2bh@hnKg64Co!F+9j+$nmLM1V z;P7L!K^o(AKWYN$3R_s+nn$lO!4s|OvFP0<^x~l!n>4%&_++GuZyM2=mQQy=hgMVg zsC!x1ZFn1W4oC*uw?*hXZ9lGby(&MfQI~bwV8A9_GQ;Y1-eQYOX?WMF@$T4kQ|^-a zS(NNaciT&_wU*=UV~rrCYFB>l9KC$Mrp`zw(bihV9R-fTKMWKy-Z%U<=0#jW8Z-80 zYb-SWp~mklD-mbhGw1o5-QmRByHGzwU>R@bi6MZD8_t$mF0q7pd0pS+>RZ4 zQx{3kxyRexd}pjJ^hlg0n|c4du>8Y980piAd&TV$!hPD~jjd6vkv+o5tStFr9UIB! z31638$}1Ed=mfIcOV{AkvFD(-W;@}2)>@M55H54w3pKXA6DK#Dhn?@Y=H6m++-ZFi zYiJhX>uIs#+c6ul#BczQ$UZ7A%~}X#7kJ_PeIcrs3HNS2mbV}4gPUH|q8A2rKr{?( z_C=L=#O`5~EcoI8fcwP#b0RTq7?w&G8|K7z}`BZZl5EZ6`KQ%tTm z7n-m8CbZ4`fs=-x5oPhItou`{v?&HcZYL{#;d}&36}n>N{iA5Ha5$f9e-TKQ;<2%J zu~}#u%n7yR^+QBCGf4xw7w27?j|DRppj(qK@?m3Ui!`Pr_tC8B!cqL%mWKS)y_Le_ zFYCZPRufj+)f5IFuEZ3-2dA+6S&g~DaW~d%m^S9r%M(17j{$bR1$!v=$5Z#}@sz}B zVo~-@Y#q@GY6p$LAp66D^L55arh@O*{h&R~l~qk0hGPsn1NjB+laK_JsRnbMfr&yB z|53Ozc8N$f%D%d67TO(~jD!ngdR4_;a$9C)mVgJtm&3GHIXJXgWyy~Uw*yNg|034Z z8X=7@>AD7Q(n%dX#*GofIKvkn{--6Mu9c1pyn(@tBLx88;5^R^hhYn4rz@}@9 zvP&yEAGhKDJvgF4%erLj#Mwi?aLR%H(|fe9uYT zo3~7|C6sKWN{R>iRBgqic(o?ICY$tR4or^=ssU~#`XuTwv#&d3jrLE( zBoi|jJ1-kL8~U=we!!N+_2BSeERbJt)cD%hIvuK$lrm^u4omge92VZ==JIk;#XAVyR zrTF^(jUzK0H-um4(12`XB~p9DPu9;MFw{VZwfCc#F%uiC6`AB)9TF#r=mDT;&wDA7@8B!v)!=u=mSD=$GZ^u~n1x(F0`0XXfd5K8HrBN>qqxGn+h}2%M!LM? zhbi3s_-$0Q-swWYVvA+o=ozMF55nfJ%zTy zs8dxK^&7VZ_6GGj@z5+(TheXt$V%Z)Iyj(BW&%qpsmjPNqF<~Yl3lU8$4l_u+Y&tE zQlGo*NM?S)dQ9>$ZD;7R=IPq}Wq4CQU2e`OKLN4_NX@85^~3E&DIU?-lg?zoVk;Z$ zcf1{*v^+*?}|mSxQA-j{KYOay4>L@!m!3C#gwOA#Mal+ zAwSw0=B8T$?t?tB$8bSciyZKuSZ1T`7f)G+QZBbcv4*732&~)%IFzf zdKTpn82I&&D8*lCd|GwV*)92yY?JwTU*1^CwXm=xU!0X}LE~!4@5MG2XBh@@!pEDM zC9)%1??Auf#pq{!5U*5e2wCSWm`?$nB6s4ws0}ZnX;m(yO*;#de$2s1Kg^1xu_s?6 zQcM+`;IkrLTW{SZhG-aJtlx3`a6ArLF4!mKuJB{+bCGf%usrxy+}vm}p^qGPzUQ02y9+T`%dciZ61&Ccs^dV?i2IX2t zQcjPaC&ox|0wsGQe=nnqbQV`=s1ZsN}i>TFG=6T^Ap(eS}@s=yS7mZ=lWf{jhuOEv#?! zk>*ip5bb&lrPva(wJnq8E0i0uW%q2rK28o4A7qCj?jYq7Y*w#a8s|?U`E-~sT#|AM zc-J_Ny%J*SWME&pQzH$O4g3nzf^(px*E->Ba(#tuT-&l5D1SuKAy{M8!_*1veAjRf?tzc9+K5hykh3?4Bo;;+X_yEdrqWxO=^S3pxW!P-*8 zN_UWyE&Ul2|Ep%BvO1yaT7k6wAZ^n4wH-srt5|ZNdZAIn`VW>cf2}nr>xWVaMJk2) zSN+G|ELx~8LBzd>ZtL&R>!fsXblzqNJ3m}_KBt|yT zbvHO>`NMoWz$Q*@@X4C_!X)!2V%W^S%>98ntE*#;8@KPk3ub*8K2PS+F$`i)Y4Qfg zf6Cl-jMzBaWVX4)TS#fR3?A`D-1a~yR)3o-PE66GJ(kySOXzI0t~^a%>A)cGMe#%7 zM9xas)R`&|JM9#PSQQESKkuM0f3Apuw%~PYlWcbAMrsRU()I}0p*|32m0Xq`Ydv3( z+J4e#H(nWCm$%gI20oT1T-eo@4r(?QUvzQ9ux;wCm=kdJ@akH&cT&D8g3amQrjQ->a-o#4T=d#8&vRt&`B*Ja#y{a{&- zywf=J(sJRM%~0Ofb0R-?urgZuM6+(M6TokNI-l1o2ZvaBqfw!-d-8f$tkvlVK8;R; zuWK@(z3B(>RB=OIQg13=ueDdy9M~O9jg#?8Vib={eTkvZwBXFpRA#A>B_|niYB!u; zbOg`FAH=tMQ&26r5Ho^J7|Dc5d?oFwV&w@vnP%e@xRt6S=@7MfhhYEiE-V_lS?D&S zI*YTd%#QG4dFJHGjN}T=k1PdAZ(bBn!+rH9$Rzn<;1Wn__Z+rNwB~M`nt??f8#Mkg z1sj~&Bd#w#qR^kbylm2~X98Q%iBGXRP9K1%bK--|_eXQj;H$#Tz!X?`ygE;Rr_1`+ zU5yL6Ou#t}=kUkw$?!t|4u1P?&Mx#A&Rb+LVddxmeDY#FT4c!a^yhV$vwk@YH6M*O zh3jzh(iMNOZ#>)F$a)s`9mtiAu1Cl-Bbvrfoh_AuD+4*4qF02__aY}sD zJrgEbt>J@HazL$Lfw*mRf#997kV$$k*`c-TTny}!4R=1=#A{Ou#2ZDnyv5A#@=Lzq zd`+Gf9DU)(&Xp_>vS+$rwf%F&u~G9tlHskDm3U?0kZ9mqhZSr;MB}m$Ls~o$hzH5u z1xa?-qUXS&cFtV7SErf_=-sJKex#pR+kjqwlim*6wFQ%Q+4G-=07)M>$${^5cVxaX z*D=JW5xXNBCQiMzL#Xo63D(qlE-U!l6OaxtUw3@6U@+2)Y;vvev{s|DBm5PhjYi-iv8_kSkm_UIQ{bgd=nRqyIxy~!5uVYt{Z>w<1`#O^XGxZK%6n2Zx@I1fM=jVP8ojaM#HMx}PV$4#q`8oh4l&x#e)} zo^8Oafg8Wq$W|a-hh^tIdG|e*e1v-(^qSm^^udompHnOjy;KM9T+SA^WnMsGWO9>K||_buK(v zW62(vSAxYQ#o##Ci1mDB!|T7*7q4`;=ASwYFqqC)XCM<@`43OYlQW{oN0NY@H?T>GD1a4$x3TQ`|eWDjfD5%6AkP^ZeBP=ny#- z^HW;^=`U+IIgaIB{{wY4R%KE=IHsn}N!~?GtwzAwoYq3tr&;2bMGrwczZZ7(yM{{^ zy~FCkBV}997vhK586b_9QDlAEmv1TAuB=-AaoOnLe7qO;UZ}dMHzQxgs6T9!T`#cI zsKVD7-N4iXsW3EameA_JUOcsO5iV}j$NP$Ww8HjDz5>N4@@X1UECsS*PVz#Zk10St zQ0RAQE4&M-#(42AQS$5aZ`Ef@mTp6@Q%)@B^)7I|IE7+IH)xx83wur8Es)=XLAzW) zyxv|m;8qZ9s5uvAtw<4LkNe1TUVIY!E`23-4vhmbXFJ8ReK0;CjeOM#cHM5G@JZc? z8;AWNl6`Zsch*R3iez_u2k)+k8|3E%%b#7jb!9`mzi1a!Zl(=~?^PimuEQpV?uLhF zM4%YVH5+U4q|YPyWnKh{=Q8o9{#lvE*0m(lV`9xqgN5SPhJ0ahFz8fyBPX9D-oJkW zLZ78#LyZ*K?2y6qx`(lrk1_pzcRf44RYv`4$ zDNms`fm*XUFzHh*`2+J=-fi=1qV0qZIAZh!uo~HrZ#8FFw5AQD?rkmkD?Vd;5J>*} zV&)FqfB%X6Tfap3(eWXW&ht$UCKSW9dGo84S59$;pwWYUV^v?ixc1Bd$X1- zCU79;w$))BAD_oT2{l=RjK-{f@Bl@;kj7{Ep!vA&xGp1IAsg;1+__v;$~nNcpBm2P zBgl5w$v>PNDEUNqWj&w2tselsF(KqnBk)qaT=DCwWB54n5^a4rEGB2EbJ7>2elaJ5 zI%Gd4G*vglb zK=L2cOzFG4TA{G@d;_8Qv^wkKWC?_crw+wXENjGl2U@er{bq{V`PV4lsKejg`7ZIY zx%@p)+~$<~c&D@*B+xhr?AcQCeZG`yYVe?UZb*8^nZrkr+ZBiokB8Fu|0F%+&@*r> zZr5rel00xzqfU%`Jk+iG5XL9WMDl@T2VN|2+)b#}RacPmpyh)sF{VncK(PaJUW|g! z6;9aS?lDYmTaDeTABKtR_hXFPQaE7VRFW6GiC;-^W3!Y$8j>9#WW7Y{N&tt?Z(ET9!1@gi2{&gGj$uWz-S@!`* zIcCBVecsit7blGeA`Ox;(8_{LlSD|sYN?5;25J)-fjU00r{;&qy9d5-M?|LCL z9%&_`SS&UR{Q_MLbojfFxiGWQK*1tI#$G(B#;JY6NX=P{;yjo9=zH@?0{K+#k-r`r z9G@V?5WZwl0{HLhA~sIACS2(8)|>h( zxXWd*KrvmeJ${yu^v#n!e6KA~o+rF%RE5)h&~2a*pD}c=l>gzoJ4w|4=4|Tq4-jx* zv-riuRgBOYsmO_pYn&J8XZ9|s7ToOO!^v*3Ws_QL@CsW-v4cI0I0PnHPhdlfMbOmh zJ;jweP-W{v%D>FmsnlvH*$L(25aP3j^!vI%_6AL!IWv>FYs6R9mOyg>fpSauZgWp) zeyJ;$bdz!x@M|#|SG``1LGQLH{7dS?8N!E?&wz49DKCO>zvFOlW}4(znf+E{<~Fbq zldG8t=je5aORgE!@A+|<#CkMl8NVdvipG{51LbE4UUT2c=l{&RZ#YxX)kA!>-Ul|Eqrwer_T3L^(dr};~h z++VZy`on7{#ta`p8}Un9N!*IgNvG?F(f19Co%fN-*>WjMX^(#u8Auo~IP%W}_m!VZ z&@`Ej?^pfqK=D;XpwuR3sZ~MJbsyF5En?ym2MOP^TvY8K`urnmc$3;e#7qB=Nl^SIHM#vD#q?kC$wb(nJuU5E>AZh%_z3z0<#!#5 zqoN0;gD15}`9Z>;)Bax#EW2<}kyQX=+JK;^{#4D_%CMonm);sZ8{HY&9f|NifBt_P zftA6j!A5GXdXr51?lrQWX6fSO;^E-rO8?e&a+Ntb$y{89M3L7ZHH%M>IXXs0MTgOX z+Mj>BJ2`uLczC!wggZq>Ik>rddOCP{y1O~JI7hj-hDUq3Mnp#?klOc+j`Z}1itzGu zaPe}Bc5riXk8lW!a*c8bcXoF7_IC1$_VA3pwrT+1^`aN7?;|Q-72S_ z7EVr0FApy-XAjSalg-BSsU^8`ho4`?i_ufDP4(Lt+5EOJ(SmmTKWoQs ze!YUZox8A}bG6{?)b6a8<~j_{OJZFIjYe^4G%Q}%2KUcdh9*}Z3;ly)x#y<2eAlo9 zSeatOx6$sT1GQ@l&59nui0g^sg2)iwd(BLYc$vwqCwa53(@u#43XR!{^bBq@{}b6S+I2;w~-wT2HLFYxqM_K@(c zNM1e2omcivXA3C}>=0QG7A1a?>1=ltD!)h&c1^!7`n_68OK_UJ((8NZczXfA;hDmY zg*(ESdS|e9kC`&Pje#)HVmg!B^mxiX*lS2%4CH(8*#?0!zgKpgz0ZQj?&{*y5t{Jk z$UUU7;KF`-J2}_}x}Wjmnvr90bi-ymuYY@R>)Vfct*?)r5)UBkIS9IE=0TXzPtl}G zJ(ly$l=~hwVt))NMpB?{lMGUW4AflJ$wjNFRsN0oX#STxw3nN+dsIZEgHx2di-Vho zo412km|K*Cle3evdzibotBb40*d%IA;6Js-`M=bfNSEly2#N^~PF|4_4y3`Z4qlON zt`5#oUJ+r`l!$PzC`D@m{-HI_?*FCMID5H9xjKcrIYhXIOJn0rR_01p<{shc85I>B z;pP<`IW}o&)zq$knR;^7|B#iF*MCP;VNUL@-tJNE4$fZDG&mj}Q4V2FUhWiIJ;Pk1 zJR`j#T--mJC|!kW2HV}{KSfTVq$Ch$j)vho1Ziecc1Mk&a>PnBOW-r ztp-25UQd)=9m_stuM)6xE#`5+PPAAZE$+F`c%;#0TpDMJ9aEmjLbp|7gSSqA)JZ#- zQ(Q9Uymh8 zF~;F{yji!gl8PA77J$5j2rvj|) zzgM)-rwtnSop|<-SZos@;*$X#_=VShp!N6JeB#XDO}y~-TlO-OrF1M6NW7|7W=PnkK>NL#S_b4;Hwvt zAzXbU>-Zp5&|Eu=v=o0_Sk033TNo?TF36eavxKk zdTWYs#8ii0*rh4<%cG-}`d#FOBZF~Z&j&)&KD&svTb9v%3@@+@V5epr#l+ggh!-y9EWo!!uCOBH^!??Eq@^f=yk zQ#7mBubV*6sgcNM-@f z%F2T+*Bi>`?z2JN0W+}k{$}FjDrbboRhsik@^?rcLJ0PVEEyWnj&yt%C0#OJvQ8NAdNJru_4k zVc4(fRDK{}iroEeBYx&<8m#k6XHji>a&gl~w9%`L7Z+yo2Xl*|f1_{+?Pi99m*0dZ z9n}Th@I9c@dk7o$@)Dk?AIt(~)xvLPHTit?WR{!Kmq~rQ*3*D(&wqy6>ILZ4Y&i~@ zQbJ?(2UM|*Vo&#^!TqLJQ1Vd!i@o=bsw&yOg~?Gs6wD%uh>D7c0Zy$#F{2p4*d|m| z6v^fYDwx2CIgm`Km;&v z;iKPd*`?29STZ9M?!OBb(Op|{uhlK^m3K=y@m^>QCOgoNCCzg{bACj$5oeZxtk{Sr zrba=t_n+W=ZaCiwCq<~QC5&%(CCe_cD%q@nt*KWF=`*=E=o{FC8_UG?O`+|m!)#Zz zG@w31>kR{OaLwDeH989-5_bVxrYASo$VN}keAah&0~vj(4k`pM)61B*7^r2Y_tuI! zy=filgB0kfnU54hVtJ<~WY<*C^S#FuY7d=l#iu7VLcLRdoMMCbG&&`A?OX-1{qBoB zM!ostR@*VO88F}CU0_SeB|6)wN;t{BNPSm^xg2I~N~QA>tG+^Z|3I{;d7ha}HRfb5 zi0=3SUauZ3i)@<1*|)p#cJ4H|9?QvI#&UQ-CAt4|I9EPuYgt@+pJ|0oCd%4J-@gDH7_hpK| z7ijX%Tppe6z#m+W6t!M_z&^FVW9`uLvdWTXymZG0c>moa$mv}{F5ESdx2|;xY_4jt zab78Tc)dL>nz7}_UR$fb^SQIz@~c}GL${_gU`N&+?2AUqM>y;9EzQ)U1^Dp(T&?^1 zZ7?dO3Cpi(CdI|s5S`l>O0JH_rj_R69*bHsv>9T<_7lLge`DEsW=BbRj9Wt=i~bW^ z@g3)quyn`4kn+JEU-Xn{^y456PDwbB~(6q{W^?=ReneD>nrDl z=P|MohF6*FRq=igZ>v|g!KHa0Nb+u={0AXd+cIJRl5&8@*NBCTz)W%fizifBa!@;e zq!ZdddZ+R7C@v3ezO1{B4_^y=gC=rfEvkJW=7D!>Ea2Kxq3GRzJ{p#8Nmy8cPg;_v z;t+#cUSf0N#>0nB=b?Sq8K83CtHO1*sKRqv2iFc(ZV%*SONEpC{v=0vtj7r4V{{GI zm1-cIjScZJtb*@FB}n=3EOy&pncp0A1PMdo(B_^neYuGoW429Gsnutgy>FqeGaf)X#!P$lfPbO7f0wz^thpL z3Et^1KuhOhQehq08Q%>*CQ5g0$Y~68lKo_~DHsNy8uWyi@z=1)-qqNzbfI>8_oi52 z)|4f>W@x*o)#RGeWuZMj2eO^YMI?p>Ft{5M8-x<8Ccum_O|ZqS3t3gi`)P@ZGW+L; z;aJQ})I0JOt{XecTc>xUL$D98etMzoa%Blnj>}%p(qQ?Si+FE&X*vE}Q~vnGQmA5o z6+h&8vU_E=vi6O;@!|p2P-MSA_`1aNCB+s&jg4oJYM7Y5JPyux?GEM2jFD8obog`0 zp9#W27&_t#HZ1hu(U&s8r{t@w8~xtHw2ld~X0dQa7=o7yQn7Q%_^f7MePJb|1x8B_ z!UKcpK)6D2@6KnuyNJZJftVzJA5|JU&pZd^9FC#8^9kmbKMNuwy`|UEkvzuOj*(sQ zMD{(b=QvGW$C}6K$?0V(LCp8&@bPjyUeUU;@G5#(E@cb#+X0ftzDAYXC2JcZ`4xys z^Qh5QT-#+0w*6F#l^$G{@c0Fzyk@=$MNs-uMcHv}E4g{oI+b@g!^%=VykA_@%hcnP zU--KEDp*P)S(C~G4*O=ysm5tnHt>}>H>WVdM`2L=nfPkR#HE5NT=9VyJ-JMMu${GR zeUK3rFv5E2G2dKX|K3HL+hi+K?A*I;KL|RW4X>+oV0ZRd%S-+OFP-yOwT>qnX5hiI z$>RRpDGDi^Ha45L5U(4r!BGyE zfEYY)dH4!FfijZ4PxY3RKiY}hKvL|%c}Puj!WU6;yd@ug|pO&DD#2^)~OjC{0j931`N zkIENA$7N{Wnq0)q(gHPW>}X~)3Dk@$aea;;J7Ip!>HMroIq6gO06G@v5q7qQ+bt}l z!_(@r;($ngbVLYJo??OZJnd_*7$kdYN2O$AhZbuQy)w~i#0jBhW`sRdr?-f}ifbu9 zx&zr)d+A&*68C|@b=_s2!((k=a)M^)tJjJ@@KfobIJvT=w0|^Gm!E{0%=5r3g{NHQ z*Y}|tVXK*utn)IK(ae#noNd^1xoE=T(R^QduDIdllZkS{`L~|!?i#7tQdZu&WUyHG zh=s3Sg0p=(%dd-#vFgYPP}w~f;D}n2_!Goc|A5cp7c-Y%=EAWaZ)xwxX+fBV^e-n|#!2+jdCi8mgd-n8#Tb1@ zPHf~Mj*fVWi&l4)s#cB*OQE_oQr--)hwa^SfMU**X2`f$Z!~*&(?`zkJ{9&kneeXd zDst;_OI1$cmbqIox>qSAj;s6qvKOn6Y8WkK*$os|{OsF?e87!|*rVEfP<)E)2zH6- zQen>LMW5M()}+PY)KBhgx=i%-T8R$_Y(RmFK<&qnSP#7Vj0gIN(3 za6*ACBiunXag&~G{e(5V+Y&6--*K;d|+lQsF^b)OVJW>qJ<~nj(j+vhWHwn3dVDmvdEAy)(teoMe5-Ek2CS) zk@}Lxi8K!oqZ(LBi@J_FE_gQbEY>f&qWB0VoG{~LGtC!geMxPi={JO)Rh{7Q({dlsd6?GHrrgzbe`}+82DwkQii-UmX1YF^2SRJw& zS8SnGH^XLzr45c5RMP*ZFZCDe9iXrO>3;?``uh3?=K2PfKmPmc59Rd@%IX`K=^K>L zHz=-8XZ0DB(l;orZ%|p^pqRdaweJ7+x{v7hC8{Lan;JOPpfTwGIIvN+ zKnfk&ph1f+LIXzz4_2Cuv~?nCOelRJigYAt7X>vDPD?_9epk@^&u$IJu>M1X21Gkn zR|1|PA@t*KOG9)!J!<^ceo*8{+M*Ho>o$()z{tTt(T=1G@k3)$t=;&exFm^FIwh8* zp}XqFL<0zp9@AGv&!6-wyc0{98o2h*UG=B<`E_H=kM%T;11$pR>l(*DHQG^IsQl{TS3=+nib}(VSd4 zo#|TrlPmvSpY?y_`Yavh`20tqHacj)kkDXKsdWq*9v%`l<}bRmb=*~&={AOu5;3KR z0=}ql%2CSDz)0FAHdwb>O{LiH3)e;k({jAf|13$leB4Oaa*-lq1Uhj^9Yb*5)`L{70{r4C(G$D$@Hb$3=@~5zk{-03h zaY~4!Vd-#J{xs-6!6pr*jDeGlZYaN9r3N4Ek`PYc)+IRp^zFYX_|xnX!e~@8Ema%% z^Qiv3MDfS|zrWE^{#Tv)Uv=sMk-`5v)v0|GhEo|0(?#XqC+VN#^S>9IRtX{0)-ctU z_}jMX*C8G4|I(g+i)QM;)4l<|0e&s)5{)RY)KXRb13%@8Q=;LIWIgb68U{uUbNrQG z5ltA*5)G&u{<<&!Z8xI-c>Qk!>e9Y#`wrdOmrvBEd+1Q`$2}BB`R&sf>qI>TPP$5+ z{ZrTek+uI%&Nf^UCjEe*?0<%!t_c&(3|wP$ygB=C4fBtK`0svqPnbYm&;k9AE+};T z$JVSY^{fn>8Y?I552~JMN)0qnf64jDuM{p+-u}2a+BqSVE_G9v{yDklu1 z>s-`z;wQ8GAiAS=T~j}G+=r$eM4kKpSZGg0-{miB++7@h ztN)5BxHRq1p{;NG<}JFrI1U&R7*2-=)FKY?(_;N!4+;3=p7h_32>8Q-^q&`_N6{2V zO{}6LM+}G_5lOt|$1F@YB~vIsQwQDg1%I}wVljW^(u(E;4^*zC`GdM7EOKz5Ze}r% z4o0Bk8U8ebsM9K8^ba)J_qW#m2PJ^tjQ$(-iSbPsMdpsxO*Z!ZWNtMliu%7y2Y^CG zFKj^@2{r*xK!?UvsT9my3$qsWNt;Agn9k&tF z+PBBhv-PFP*aU6{+t4g(ALJ!3gu;g}G2F0_r4Jg;%{K2wuX3im=x|AyH+eJWKRXKH z8y~U!8d(sYnFoAQKjf2cYQvI1rgqF0`2*bf@apAR%B@d8RzHUkW_E8zWLZ znnQYQIQpAThKSoEc~WA{8Q)4qt*8ybtVWW;>#QKSlUKpwT&Agj_ zMf38VxJ9WqV3Gb7O_s!JB4&S9J_c5|epVPi%hH410Mt6C#sR5ccFUq~^F?ZDA8D@F z3gJ>?$?R)N(AhCnIm88WIKOZ78!ZGD&c{Dpl zaW;{0mg2?2kA{G`-ce1cb6w7|U9f--O;c?!_swW=y$I8;cA%3n19!1?nK z#y)Ijg^ll{#-ox9hpv$B`UN!WY!C|D@szS2)Ltt|V}L@(4}$tH<2+_S-k=K7``kAb zD^S_B0#dAFT3mqee`KMH4ay(SaD(fRQel-aeY_M?{9QR{&qLvYFtX=3sqC9}^(>~& zXpH&Qvl+z&4?E=x7T1T1!@RZ4Y8Ge&Bx0b=McBRUFar;w(szaF_5~~@!jU_+HI(so<)zuNCcLQOQnV;@9~EZh zy{V}3SMa>sLi=nsVXZ5tc4SIMCCFP{9th(!d9By6__(sN(D)f-Rj0f?F`lQry9q@V zrla}n0@Ajd4Y_vH1dFfE9p9P?%^^$azs-n8ba^J?v*!ub-=`Jzsn3xx+{#uaYZgF3 zwf54q_dHa%R@5b4WCc#;g`+|g_JXFYH76S)lxU1zx8i~73(ITmB9a}7V?cKYR5@?D zs5nr30u-J`?GjrS_NWDCSGECMJOV{`rc2&D3{o0ZM=v`3lX4YvOO%wU*L~1D!VlQK zUBIocpyS{;g@Z`3#x3dxLw?H!82{b@s6Uc$54|?%bJo6wRCcDEVZ-;>%i%8*F#XjR z2f7EP+Q#|Z+ zQ%*HRnmwo^c)v)d>T}_?yO>Vv=Z5FmO2Qgeu;?-t-K+@Q>b6jRqxcq-|Db7LD^qW1 z30oUsc(1VI<(HuH$6{SSk)Q8IoS`}owWtPW^J_`7ZUR!%eL?fp0t%L# zLW>TsHKBdBXz~N;zBjF9QMj$le_2nEkGSchWEMAEUyT*n5aJ^h7eiPtsVQ{2gXUka zFsh}}zn1|<1dNaYj%B2#;YdE{STOk>y zN%O?kNc9ThuaGud;C=`j*90pn?X4!Y=B2^kX$nxSmHsBC7!Czku-G4IoJf8}n9`i9zvo*vm&7+P zMX$VM`x-#X`r4|#0mXu#+DN{O1Mg?Ak=hk;2P}Ajd1pqrPaGy5A{vchrd!ry(T3u( zu;&X%o@39=DmLSJ7ncEhzf**sU(1*T9-nQ?Q?vaPK68uCeds(7OJ4X(a8_EoeD*Zb zkgK{(He})V0)?aRJguhw65+V2q%^8EgG}X$}B5th?`xGbSX7>`_U^U+yx4^4P>hBm}R=jw5hjs7)$*H#}Y=a(%vFKQ0 zDufhFfxMV%yeMo5OZ{{RiW(7CtX>Y@=idvjFmqIRt?ENo3w;b5lchK!5OMYeN zdrrJWdM_Ex#etV1uXqYNuAWWfc_~6KRFYIPc*=&g zB7Mpu;>g<|mo%e8t8D-XI;-#l%#1dQ{7E~7)@&6g-o$9`fuT?9ako{6$Ks~Xg8aPQP|&m!I*K`3GCGEu?Nl5~Qk?MI_hvl)>Ov%L%(DWG zh~L|hpxht`X&sB?OGY^*a#Q1YTG}~nT1p=X^F9V|8hGP(3wuD z(~l@SVQ#7krg)|Z#lgcC9)zq3@xX>T%hWPjRQ}U8n}a}y9S*OVfT^8mo?t*Vdh7}j z(%OJgjp5$o-=e~>kd;O<;>c@3+zfMriC^p}#!dQ?-CI0_JYPqE*16i$>{FPmDG7vw zK)8y;`H{H^c-mD@YR?xZOvqI+$ivPEb-iv*Me_)rTIv`U=^10?td+W&M|>Q~R%qUk zw%}~I0OsYoBh7n6e7kZyZjC8ge)tAy$w2_Vry#Wh<<_ig7?D^6#M2=yxVt8=cx7(h zL#jnQIjRIVt?WWrv>6q4UcCPuEWX?(OeCSD^VK-K>Lzoq z7!!6Kg1Az|!JG`G_s($`(deUw#!7-v);vAyD=pv%pu7bhX6!2q9}VS2vzBB2-W{0s z_5tR8(3f$a4HPb^{Gz#~h4?S;{|5yRrY8xG_5Sjz|HlWq=WLy_3|k`s9xfyM8^2@h=(-zU_QkwV>br>8Zx=>WDu^@nf;Tuh;*y zJRrC62~4ORiG17P0ejT-zR3Fg8m%`T1mpcioZY7LP8!{VoUPli zYU5g_|keV`ffd5-jScnWt516cJB zmV8;IneeFVAU-AR0v~*CJ6@+X&d{AePpaef(YdDDj{PU<0cUaihYUMtS``W8UcJFj${dw;TbNENdg$CNXeEE{jvgYO4xXoslhBMWHUYhd`iS>RhrGS^3#b|jH}fc(HPt$h0+!bQPXl5l&jZPTB{{3xvs%1*lhiuGqWX z8aof$sa^A(1i?JNqxF_N*ni z)nMT2pO04;9)QPvFS5=CU(jn$JW$-rCn=S9uYUJf^(8H&jda23?Q3$|Fgh==#xbPr zjMCM=i?*2KVxVo8=sVI-T76t2Htt!-=eoZaw6zi@Z#<`+@7IoJPMxl$+!FV0wiL8Q z5*vk_5t_OkDSzAZ;3w0$h4&(eY?KIU%Vp2Zql|1VC})6TgHycdVzzQ(JfzH@EUZ2{ zQ_R_DlN}52ro}DTU!kO=c*HwrXrIhR2f2Dxc{F%cTy2Mx2J=sdlp3vN|Cg7c!lY9; zSg(}yIk5*u50UJ|0^0i_UF3}S`8t1(NEdKm)oJnW;$m3r>MZY9u?GKib1%XVq&%Q4 zrtX+DCLV;k%b=%s)FAr8w+zs>Y?z9|| zeA9I{Y&PwvSbVY%Dm-|Y-Wpz6ro;6urDb4PvIq^VPWiV@WK3+#((V@GOmnTKm}6=A zD)mX0^84ra{k;}-UZj0(SBma^13VoPx#M5pWF>VeV46= z&%TqyN6Rr0Zqjj+i6q-;w%Ih` zA3ScsiPz2Lu$C9ppO`VC9bbRYO}2YlMJjxl{_KwSi(VJpeRMfEj(0+p7tdQ&fz3^Q zpj(?_^6A(*yzTi@;2&L$?>m19Dc3a0A5o7sg0t(AtlY+Jko?Mw=TzodLQfvda*{2# z$3P9AmyB?Pgsy6{aKGi!L30&V?kc~X{IVN|T&fDReOP+UU4+l_-_!Qoz2f=xU}5k% z7A?F>i6a$h?^KCRs$W`F8z^2iYux6cvL8+|;8$*^d8IXX*i%q!AJj6A0>eC8-alq4 z>$7t%hCA2PL>3;!Yo|-eJ;^nt^T|&1y9_AXG?wa3U4HE1Gw4{Dgf|0sp<4|B)#vzg zN53XOTZ6gr{;4qZP-#AK?pR19Zd-r7ALO+LiX#c*^M`8pBxgX!tyNXrvSKehciI(UNG5mG1pxB z%#>eNkE+S(`^<5C8kRc*(Cl6UlKpUoUTdVS$Y8a!uksypIAJW`#T(cj28n8Ms^zUwPOc!7qtSL0E)WOadJy_yvmp29&#v$JMx4+6ReYrfbOsZQ`gE~e7YqKdR=P&EtQ zoJSfvJleg9pEBM6<4%2mYb$r4XQsU*Tk{s@Cc}(=iRd;%A5PJ8_o%WqpknmQ@eD?> ztbP04jP>u7qUx~14q><)xXF;M_n~Fdp8#D@EL?H?pQX+4=#&KwI|3K#x>O{*%XjTsU9(m65+x z9&p7g=x6cb#c5`d-y5jrGV*~We1t_+b|CQ#cyxb`woA3J+u#ZJdh58srlt0f?QG2J z+ZuC#KpyCmQ*rS)WCi;|pTj#Iq?@5Zx4+zR3gtQHH7J*Vu%RqcD&?hVES zjK^(T=y}rY5^~tewZtE*aM^txw4Z$yDgT7ZJ-^G|Jju7Jv~RHy>Np-p8Yeth-c=KS z^}A+isWOss1tzpg649?J;x{o6X=}c=+mcnMT|Q&8fnaYhhZI|cd2eUQO(Y0;~Ti6UC0Vh zyxHRVS)?3=)GI-J?fOfa+Z9@Xk~i4obrz$_&XJ05Qf_+@w`J$6zQNO_6Qsr~2Pii= z$uE$M!X*vW1G#3=2+X){tRa4(!~34bE2xfj!DA?o zI2}aL`B_YPZeX7)F@iW29=~-{ zyEEzq+$!l$c-Mq4;pS4WP%BDQ9ss4Db!F4E^!%!1OPJAZ1@<(qAYbo1i+yD*e|vU~ zu(kP)iYuLX+?jm71EXdH@x>>vvm+DMXo*9^hEtW1q&tx2U#xHKOFAhE>J#B*ElzSC z@b;`T&+Al&t2vwgjP5G0IZ0+Hu8I3J^I=TNe3gT;bN{ADcI38aXF-z#Em(d}M?Uv} zBM|3-s#)}YVTuXg=rRm!*Du30ZnnZ^=Pn3~nvD$)rb79zwm4_{NuWGN;{8Ci8{hQ) z3^X6)UUN%HnuCeGzFnbLwkuDk^T8s{NDwsFWWH7>;aSpDuiH2g58DlA zf1dxVl@v6){cR1-Kg@jpw6f>N1o%H+{AqOwHTb8?|MFbnXU%-|-u(ZSe=2R;2;Ik4 zl=n5CpxXpX9^z}ypRPQ`oW4xOL!M>jjAPB9-7mdl-x61_Gid?TpRfypdLDt)L;GRa z)Lt^_ZYgLR=qXnO4(BOHH?tdcym-kocF-)7Hgsu;2i^o&eR>AEzqga-Cp0*^RxO@# z&p@^)dm5gu^pgipjaRBoVAs=Dc50A}V=RMFGh?J2+uWIV3?Iy6hPA_wF0J5j16Nsp zLIc?1kqgTwH5Jt^`inZZXGkxvs z4v;>~Nh-yuV{RSzwB2iQZHaiz*xWfd_xUi@AF!#N054CR6W6on(b;I5aiZQru?be< zqAr_6iSq_X%2cA_xN90xvXY-0H^CE=r{Y0oNsZRqTHy&0nO^qb7`P#^eY{t8$2`Oc_)4XK2&S|^J0l9jt)(OwTeuX=Te zPa2^4-l?}xJ|REymnS;Hv;M|=d7)IwTc8xdnr@3hzb0>iRK@W2iz#g8otnJ#w>b8$ zuC1IjySVJ!F zdNltCyGD1!$h%GUO=dhy?N1s z-X9>UzLRnrd~C4-DDHsN|6%I~OL@aD5i9O7#fw|NW9RApq+xPZ*{^m}Ip0}J?@jWB z?Xx%7a8wV7?`HU*#2Z?OqmJ}HNFKiyl*)SryA_kYxoQk)Eem%{9! zO%~l7^9vo&Y)dX4Z*`2>yg3I7M@WqgNJY-O`JHdDjhj`&DI z%6j|od#7tyCEQE~hYX;&Uky`&BGBTfA7nfnqf=V@+}j>1F5ND=zD$%9Be?!qzOpmW zJ@8nYhTQDo9Hdx6cCD;jwLO(BXi{0Oxzt9g7(AV1gF7Z}Qfh8^^=1T?ZTkdiOqyYS zhM;VCj}L)yK6~)|x?0$`Ze2-n2SelA@V1kzAW73g4(fJMOb%s0igBFO=P>j_8u;}& zfs_36z-#thQE5R}4BvKBGby45+{#}83NIQ~Ez37Nc>q0VZ*YLfX17{y$4-Z4;_YUK zaBF)l^!nNXlDaR$d&YB=iXPr^4wGNIdCA4~A7#Bwx05*!2522dKZhMH!ll!7H<_^` zQQO|p9!>hj$TkDl0>v;soaH7HF5eWVdgbESTpO?{7>CX>g!OkB1Qth6Y0qUWgK_6l zSQCp?K)A#wMQi};5^LGR4aB!@ti{U5tMaXMF8laV#yqP_ES92kl1NF9Q$G~0@%vqF z;lOd`{K}mhxJO37$On6#N4m6EZYJ|-BijOGW z=_oYl^$KzIXg2GctyF*S*LE?V&|@o0y=^DSo-*S2B{<)3F>EK{XJsqulXUC24H7Q* z!yyUPB#m8EaJ7U%-MW)+Hi1X~GwhXKC4RDbPf)o*3WQ91a07-eeW0QGgKiz&aq*Wq z5FnaR?BB&Iw<>ZHJj7;|HbCdK4frab1RzyEnRcU^B)kKc7k;Sl&?I*%7UXS(c20(Z z{LiRgND70v!KH)@Kh+9c4IcA}p2Ioy6TLFLc%K|InY-Va>eMZWc#w(5Y{wGrZiRye zCmF>kyJTuBH#`|k`z+70eXp0Z17kc73&Sw01q{2;lrUpJP&{0$?8L1^1-fP7y&4OA_rx}n_{ z8wXT}rKVFw8Dqa1CPbGe|NHSpU21W{HmG6NQnp`Mh7;D1+M_pj3pJryISn5V{zf&@ z3yTV-;}^KVNZk+)`%gx)74&)kTG<<04>gcwOHJ0*!oiXIVbz#H7?BwXkJc_ivL~m! zWwtKcFzvv3&-AN%;rY2*oN^VPEe@A+pFh!14Hr{tFM)Gj)8y=H?ICQ@7)~+92uF}q zDT#|*h4J3L*vh@7bQ)exQs3l`6*1r$F#$*IGosj>hAj`S!j9n&6c>?oZktm*cY*rL zE%0=YAbz|0HJre%;Nf!3*>(4IP~CE;7@E2b32!J5YjO2^s>hPlFrnIOEj$|f6v!4* zsZW~h+9KxdDS;IKa#^ymR0@-)M`={-qQlOz-0enrNeYr!)2TMxH%NhB97^KDa^;V4#lXPc^?C8E8QA3MF%;PXN0d$xPG5{9DP2Nlr}aqK!bjP*;4}60IB_93 z6MZTxXQ7jP64)exV#XzZ5dLFapRM%l`K`%_w9476cc%b`WbU7Ogp6SUcH*t*^ zA+6u<6IV8x@Z+soLq_9SNEnaAYvADBx9rN?O3J=)_)93(s@MrH;V)F3FcPyce~>w3mU#-*m#t#df2EFz8!PWt*vqLN$k(@hVXWCW5nXPMrqTRt zRM$>fRU1##crDhgngW9>%u^f;x^I66GcumRt%31^YNv`rc$~H#h(qEi+rvmonw)q8 zE!>xX1lxBH)$tr0nt*%e`bw(hoUjmmoQ)-M1vDQ28j2kVN8)9Sd_}6D zvv~xq^Vz*%kJiU|n)J>ZLTavM_@24Pv10X=82!ZyRU9<0z@T`Rx$HT=6u(xsj^^#v z;ha=QdF3vZHLA9DUb`!c>@P2Fox~{DyeNJc1eapx8~Eq!Qjj{Oj+TP7jRO(gjT_QjgW3a+yh zXM!#E-@w(|PP#hM8bNw~GRmzS|Ipe365qBWRo#z}5TC4gHoB~wjf#6JHQgHYUZqZh z6M}4m-Z3`tu~x-(;*9m3B>J8x%-fsaAodlE#ZUCN0CRK0M!;9PS-Fy0>saO;*4;w zl|1cDXCvFM#!5{VsTwce)tx8KWt5XNUb*SmQmkLhQK{5|QpSx>x^rs{$q&LOL2 z_vE`4Ics-Jti{h%F81H{>;K($hQG|Q|J}0i`_A?{WSpP&s?Y<9KkWMWhvy!DXXzgg zKmOQ;ZWX}4XYl=d2H(GD@cnxR-@j+@{d)%Azi06Mdj{XXXYl=d2H(GD@cnxR-@j+@ z{qq@oKW+V{$(h>y{jZGDzcNa{i>Li6qx6?a{NJbn{lirL&uR$2pX~T!KL7X4{c&N# ze{JN~6%7S*m*M=~n}nSC6!$pZ$C+&wh!M_jk*9W&6JG8ThB8X>3F}4tFnTAP*^;w1 zo-*>w8mKUQId0ybg}obX5wC)6<+pzIp-vS~_||VH=CAvLLw2OXLhB=t=~a;*IO)Xq zJ*|e94_CzL_gmm1pN4Yc${cjp-=!%t+Y(gU^)?^iuFV9d-o5~36IaQPNAEDlr!OG5 zuN&-4OT+lS{rS0S3;D4IH8Jt{5Ij>g2K}G8$|1G(!_mwmxcAg6#=-(+Ov*#Z>~n-w z7+zjxdA-r2j1&nesj9UmKW8Xp=~ERW3D1~PI{RP8fO*T<2Yy7PW4A3S=rhi0q_Zhv$Z zrpz?K1rKK6+SWVJ>})?ypz(`4_$8(h;`JMF z)9HmcUcyd(pEnOnu5JY@rcTCLhjW-_jDav8SA=$L^MHH=lYBdHzYXoty;>g(s5FE3 zobU@MyWMo6eak_`;jp`r7*MV=yuO=_TX*;62{nq#y{97C*PZJ?)XRnS+8 zQv-5%afzFNe1I$C z7QlYliv>kK!SBU`85snwWeH_wL8 zy{vi1$J5|UnbTOJ%)qS3FV6DfLl1af-K5b5eLU+%3_ zo1Z<@L-ySnvA1jKak6q$08ZAYJ(QQ9;*8-NLd5J>6|1yVE+#L?3)jUQ7PJ`Ev{O z_YXZRR1B{?7sP5bc*Cj{b7qz^>hn}tgMZG?fKc&F1U?9aidJugXUh`uamZ_SeeGt* zUpHQp7Q9;=dh?1^iCM1m-E_+^xZ)QB#j{VSIFxJdkCyA4SE8YOjd%Jl#GDnE;Nn3G zd7lm!-s@k0)Caiw!3v*UC*AU(cW~U~rf^u;jZqHBTN$}GsVe<$!qJ zqY-@j_E8hLb~Vg;Jk0xih1YQNTT5`KwJdZWaUZi;rBnw_*YnDs8o}AI@t7=1>Ei6k znc5f~(3s8bQ&L)7TPIXrP^?Ib2cGiFb2N;q3}s`7Ld(Xjxx+hKsST_s=}%^0I~Yb5 zo6Nt~K7{+8u7w9fP9xz9qnv~2F+;?f71i)$pD~bIQvp4?YGDqV<7dQsFLU z^|gR%?(H#2+gZN0cYx;;`^l9X0o&A?4Hwc1uy*!WeC4?lG^;jx_BekA7gez0_M5E% z7bf82Rwp!s+uHuV6*$ETVR{2jeddo&EyGQX=zT;@Em)bnhexN%LDc$seB8dnIy+De zL9#J4dSMAk;d*>mo*p#V_5dh`ba@x;wg_utA!dBIC$`Sp&75k}xtZ1_IoX)*YlZEv z?!$|5V`yCNgq^gH+~pJD(Nq}pi#cC;?w;;@EbJD9HSLU7=-p`5OZCBTsxzk$MZzUq z=#Orn zE4mCnf5DNfyx-o|f>GS?+RFoI@BDh4)WuL?DmC z9-G!clZ04&-=;EbxmROv??!IY{(V1qIeQ&Gw7U#;)m)`>#!%F5d@gD)&l5Y6dNK2^ zhj`fF&(Ny)L{&q1sUGF=;J1?UI3{RSju?G1!tmp}@a~LrsIaxPadk=gj+9qagXuka z?dnLiPlTrz!(+wuVRhCN{CISL*i)+?Kk2T1EOADJw8WWzPcjjah zXdXHrM;k>-!X(_+@FP_6E5jO=tir{^$vpg7ANFQgRS3-Slr#2x_G-pb`Q^ha@nnms zq}gJ_U(_s8KTC!0$uqr>@E=*IJV*OXqb9KbU38a~Rtub~{4 zi;l!;-#xsqYL#YeqyC)gF>#{x|t2a)-ETl9E~LuF*$F4e{QO?rY3jAWTpo@0%qGl2pz}>$;)n9x;0zy$Uw69jwy`C|ffuK6*q+u9T7Hr6Zr=w8FR;PvecBtHHJs`& zQ#m+1%v_!rQckA7D9dX`PUCiM1E5;hQJ5Y4Xzv!cFO>JE=^T+0uw>t8Bs}KSw*25? zDdKi?k;WZoDIN&3lFRb$T~~Xintl-<-qq%+Hq>YkEr}m-*<=}A+SQ}Bw=CDiEk+tk5p3`VLsjO5MiJz_XvuWW1E$d zrE7MA33Rfmxyz}7JI^0^o=i>e)9xApZ)qcpXRGOE&Ta~Fe8Cx_5 z9l|mNeTS2eVcz;6apqw z)eWNf%8*U(m4~&%djaK?Y#_^Hk4?^e_hc(p22VI(ne{RZITu(m7N(KPB%Xo*iq7Rr?rg6(3lj_gzDHrs;I^E(}cB zrLY8u0}JvEac$Cvv7gJ^2hI`m*59LbUKa#$Xijk>=-x>2M_eO86ZqPmH`-qZzFney zj;RjlRC_&qF)I&lXPQg;Oj2Fq>yu9b)krPzQ06@CfS57=0<>ypBdIpZ;IGl*h|2)p zIxUIO+(uAL@#HPH*}Ag9LUHQ;3qp0Ab29BEoSi!Zug6S9%xWmJkI#jVsT%FIPmXwX z$sols$q!Rmk9VUu)n5E?ek$ZAnyNVmb~%~EsGemJmt@303CAAb(=N7>`YYECzbay@ z`>{5)im{F9uYml^iR-A^3mHb`fH){tUNS*T*v~2E#gS`sd9j|4i367d!gE3OMAa84 z)nhr_&HM<&9XQoBPB_4a)x8H}X60k&*%54!&u-Sxvn_TDm>b^+F#L#xbQQezOo4~8}NG5%kWE9*RbyDPl^-6x$)(M z;xpt=s^#5CkE4Z5(q4eL;3-_qA?F7~YAOFk(8Nj#pCD&N581)00w=D-XZuy-S-Xn= zXFb7RAGrLVBtiZUv-rR27ydqd@6f!3U*8U$`}%Zl*4j6KR8PBfR-5_%ID!A`_y2Rr zZ@VG>R+{{Oy<KZj_> z5B|#`nhpLpotjFgUI)1c(rNY$>A$tO-RS>g?>(ThN|t|7vWOz0AS$AmMMX&xzFmzuD`pfUSy2Qem=lr&1ha^!C@N;f zEMHfvU_?+c=bSNO7_;8$&oIuMIp^N>*7?8n-dcCgnlr%OySuu=uc}iOelgpRCxbe$ zv=xKI&DI@6tEB;OP0<#f`(l~Lih1xVX%-6^m+Q8rbc)!V_ym1(3ea+AGv?L!Fn$=- znicv*i_psbur*bbj{oehq}ENwjLw%u(ikrsp63O+4SFE6tB)?d5=6h~j_epN;m#dE zl(^0nNoJLJhs|%5=IIsLn}POR(l_XonV5N=5e?C}_Ox7joGnAY$N7pVTd(S=AM}0b%J9kh%_;tIF@G%y5=gh_YjY(qt ztr_**e1Wu@~2Et}7ab zm!N**De%Og7JRyvKy{iDVYEp@)&rV}jwKE(!GD~rtlgPvS$qG7>d`G6|4Y@Q1F3qp zUkgX78ExklVCxiM?@G0-1N>}#T>R|qse-SwlM7XkCTfQL2WlMc{!7&Ol0~?-aB#GB zYvJf?>*VimXX``NzHJ>{+?)e^eI1;g5^4E+z(IJo_nsBv_1b8>KT^s)7GZqdTl z$=-*mj{7@NWoy3xJ6AVX2RkQcI}J5M{@neFac~QCv8PhswtfLVRQ1`x-=3)Pcd&IK3EDY31i1R!x1g%y zyWs}jSuh`Fn{D$ty9f#EH+#+XCf^8!+|mn>gRVo(1d95E<3gxcJ&` ztlrg4xP3BZYrk|BohW(Q;rv=+OVu-=eY(1Mx!Zu{hdqXqJKu>mgKA*Muuw3(Uso(z z?#Pbaf9W=-jxC!=SCQwO+Jq;|j2G0F(stG;zPYGpu0sP)oHMy8bM15;>vlP;`uenr z*f%QxEBG`PX(c;FgBG0>tGispkFCw}jz59|`*5tgx*f}+>->8yhQiK=mvF0pAJ{_a z`MT28XYHv=aDRt%WFznK(@!RelzZ!;!?+Mg(rO@RykdKnCu`hbI_vH8MSXC}GH%jm z6E^>>4`=R8W=99sL6gl*IKh_4>KZ%nH-YQ^j|n``HNY*v-pSXt1qs;JsYL(@+>N9j z=xpcW>lA3`7U=5mtV%I@m@UAU84+TT$`3Dv^$=T{r$7ff%iKHcAUp4Nkry3X3Ff+# zGjLEV7B)JXuQ+L_L>-P`nWk@HWnE{M6RU=Hd6nVeKqm~?eGw~pB|%~b2Hle#S;LIm zdlx($!G<5J3P#DBMbfB9_2%wv#D46;T!zmTA6gAYf7@}w)p02L86LoblKFVQE-Klc zrJ_;uXr32UTd7I;BroKHa`kf?Do`V1M6+ZS|!K8vcr6qAJ-h#e$j)X*tXEXqK)!py|b`c z5hrSbqgB+6!3Qc{>SeA?@Uh-)w%7dZ5Xt~-Y)<7@2$54KX+m|L)wPo^k!I-bG&dw!zI z6DP21x&zaz)`NYX$=qzUAseZ>j`P7&Ax>W zW=%x?#{){PsS#V2JsDqIabVsNbcs>bN7*{RoFH1EA8BLmD$m#fe`;e~wf`|~4DfTd z^LMoOCs*TOZ|mga;%n>XY#(TA@8jy@ng5w{a!=VaGA?H?Amh%1-%<-(l zhxF`*DerrTmBw@U;a6I$?c-|9X1NX?VR0;-`>IB+A1?M6-P_&6rx9I;eFEC+GsM&F z9x(mc95F90St)B)9>+i4k2l0ebZYup1ZLL8CC^sD%~zGt^Zp>#Ff?88{F4PA6Kj^Sca!GAKsFUSwMKj)(=Y1T;DEuU`01=8o~P?A zUCPFbCPx)`Kq(t1x4whD>*mvv?O_yufM;qudPF%GYQ<;-q+UEC4k~EKmULLS64fK{}#SZ`h)nM z8Pz1lRGl3jLjWpe$Q_F6UT!E*nmI4n@mzBe2j*oTzDL9TTR+OLKER%usS%zwwbMVLR%PRRX@nRzut#`tb> zU0e*C-H8>t_2dShEfiWy#3POtjP|&3yni~sd_S8f2I-+oN^T+PFzLWS5nbFI?DC!reCbABG z3ApZNEwTDcG(1jRh)|@@9=&velm#=D)n~ND@P{X;B>fS1nqCgN?(GGvU^5!4li+M~ zZHTw2N;$m^MSk0l>W{1myFc#^mRs%5hD{zKR`vGZyQ}1eRA{#C`T@AtaVTq*+!3lz zY|qw=NMc?c;_+IC0Lulc)Kn}t8L+^momqI!9Px4G zt6XW2mq!^g>)!fo>*pQp;lNGMyKWoCBl9t~Q?gPaa4O`dPQ{41R-$?R3exEDW%Y@O+?VvG${*Z>b|vmCz|(SeL{}l=RJ$n-CLw7^BznD(g8j@%3O4sT~#zvFH@hp z`Ua#bQPG+?i!yS4nQzKSk`{UWlVD&*zEvtb!^ALKzvr|kK z@5eVI+TxU14`B5E6!6(nlldin0@w3r;F7f-TlnD^pPuO?CV8J%H(+$XxJv;_5Uil% zB2sV8;`z2F(lIFddR4Hz>KVyqCf7Pvfqky&3I`jz;0DnbLYK8+X|sEY6<1H9|G94% z(yt2WS=)<#Pm*~HpM_}jwyJPyI$3$wcnHh6wHWSS4;0tOH&8ZDdyc(Q-1aq?c?~14 ztyE?{Pt-V-6%EcRC8zV$9XIa4E_Djj2fo&4&u`pR#EL#5VSu)ne_{{BU%IP2(bW}A zZcRm_4Q7z&ma3jM`ZYccXmxP)U1A<2Ghemi}R`(BEPi)ObgAV()Z8 z1MPii+N=|=L-%w)vW=9p-~}wns>Rw@)rE&;-=qGhUHHvD9-Ioxvkeu>GO}ane6bz$ z?Qxbbu73s4s1OVM9w0eO_0h8_7*a-!L0c_YNEwwXbIx&;j`!uD`eMYC3#ugN-DuKX zVSRFsV}~utD4nNtUQ%8p1Dv?6teB^wd>K`J`P1zu@ukri<#P4DNP4Hf6x)@?S3v}n zO~)?#qRBqrD{*ZG;o8n=qWL*5z<#GlCaIhpITYo&3J?G3Vw6oBzuxc_R9-U#uU{MO zUfMDVF09%I*ul*Dcd6o z@cMYlKXvAzYW1V1Fx_<_i@GodJI^`*jt)(QN0rskNWYHQ7k!I&pKd8`7t_7m{YT*P zsUBil*-bz^6Y~ASCOJ^c>M8c0H>BTWvz|`#^ZJu;T(L29MNPFgy zZP2??AXMl%ACh7#v5zam#jMSR(7suSa`lrpt3oHTD8P_51e={o+}@j3N3sv7k?jd# zr*xUb+%W}bl`Gn&;zIT!g=B(BrxvkCYjSwaGsD5v`XaUt*Mn289x$zMjuLsTHZC1* z%JSYvAq7ba{j7xNRD=Yh`dB0T0=_>GAV_{VY2#(^ef^57ZT4YZvsyyh)&$FFp>%ts zOxK-Ew2TC+(t-HND8tMCqIMC!bp@RrE-6cgeBdvXM1Btn52?23i7Wk z$gaT8{T+;I`4Z;php=azF2a`MulThN_Z14F;DcufC;uVj-#-T-UT+xAca;nkSn)I5AKklcLoMja%`0 zHGyrmT&uKmS`K2xS&;sTe4~1)!+Ujdkvq0qd>?lgK2fSURAYs+-+|i39i*&D=lF+L z*+_iEvcoDeY6m6Go0`W#_j`AcY@Us5zXGeKyNaoGUZ{E;eu2SBZ`236>9~8|zlx8Q zT$BN=+*}HwPe%1E?LI z5b_i$P5_9GR(foW#g$_&DlZ4EVG@(%Sm+t2@#2OGi7YrNlJ?6F5N@qeHFhc|q#oCq zM7bs_9l$=A#h;9Ul0(6_=J>SmKf?Eb+-U$cT?sH3|yC>6tsxTzSA- z*Y2sR>ft0>w#~pBUXGC3*i=w#1_1_naJ#q@jkht5ve6gLZw@P`{fDuq>B)pK_Z3Hn zO*pgPdhVAv32lcQB3~bf61%qq#o*aRD~O+s;Z))bl=?(*4IExsq{!H0)8hc)v+g;R z)T)WrJ#3lFRh@lT0tOI9FXV)wJhky$<;>Q*JZIqo$mzIOP5K2ZaS&nc0qo{65Oi9u z29m$j3nZLo9lWD%OSr z-6;3#@mD}&0MiNG1jTB~9}D`j8{vN__ZH8?ftPm!#gt;_%L=0Xv^wH=yVo%Cqb0?+ zJMetIJ;e;Q*}1Ec@U=^4DHFUfKqXdN8L%TW%d#Sqg~Xq7qSb}2aO7z*_H&+tGR7i| z$5L<*20f~4e3li{$Q+lyF`zj)>;g4DK|OclydxT4D2o(C2qao zd`hECBpi|Pri}A&j%OB9j45@IFIpI_p1U#|U!76ms|06soNmbHW&EKy9dm*mRI4J! z$Aek#cq9E6f2_F4xJEoaR}JW2_S7Q*D6YlM7;m04JONWTJ{z$aT7zg$0CQ6)!K_UYs7IeO{lyI{Ldd*G353d^FO5=(M zwoy>C?o#lpzf(nv3Ls-tiph9dlO*sy>VxFBaB6uv`{WtID6ZDbrAkXTt4OA-TJt>O zkDB7It{OTEuY6MS(hS7*h|Va-L%0u%+MUqg-?v+*<%FK!u{%c6M@Z`(daD?eIiiLn; zC+M1)D*Y}54ZWM|&^45Qvo~PmYb0Kwj0^vs|4&w4qzf0n4%++EX82!^2K@iJ_WOT0 zNATy6f1V%sTV>*ZITrBu=f9=>|FySY;K6h^z6GP_g}l@3O00b&JND7~HCDf_&)(Xk zh|=1_gtmWYtZ-{7jLqMfJ3DnH#$UPzrJLvo*}`pNwYjmNl~iF?ZHZW{(~&j#Qh`+! zJ)qI1MAn4A<8?ar#-6d=na`0ud*7Cxgo~qkh|)!2s%uJ1Mk}#uyQYq8&+=7}8=t{H z7h15llNl~UFEy?Bg2Dc^P`UncWmoGZ=+Uqp8-JiIyD?*wXf!kgR)5=y?(u72^5vdz z!+0PIUC2SMp!)P`AUw8j$MDZqkj+}u zy%BZ0<>9tTG1%(FX-@C(}|I!?LoO+Vk)rUI_K525)bp9Y=F{5FHyE-;&=jRbr=SwyR&sw z$HCV|wVBDf8(^@$3%oPc7c-wOLhEERrhj`T8Z}75!Vl+gjA0g}H;d*ZSLO2dNl2^b zA~Q8oReknIh+cmHuN|?4Mb%I7v%P0R%A9WEVVy$7J0d|nW`0H3x2vV_tD8q9BQ{|h zv#&U~&I}mZrx#OZ7DMnsYe6gSFfFf>DrTew1V)YXC zHSQ&P)=!79#=3%b5ctQuefVsCJlwLa2&FC{=I(!qL<_D9tfabsI1k4arHGwLW7x7G z_2E#_AZ(x=pxFgTc)vuvy*h?FPcnvMoio62Qh@u5E88JzQ-4_fxVPwB6u>NbJ!P5w zD5c@v6gDt@A3s2A%x8NWil^7E!-3DEu+h-x{MOskSVY%jNCx=gr3t)?Uqr{dmZ??` z_2;ykB5j5(R#6(G_%*z7+4)Giu25Ub9-DdC`A)vt_(EH;XpMk2y9(eqvq1U|gFQ^d zZAvHO(<>XV1l3a(blM4TCkx!&g03Mg{{x1P$cMXSW07nK-NTN-xFTalJ4_ngzg@05 zOIp_#?_TdrAvu+J43FRuhi($BA%bKh;xecln)V>dJr}h73#h%x!XY!A zU+&Y9pJ{NCN4%^iUc8)*eYK6nqYBFpTTsFC+g<) zMq8R*h)iGTJbD`#H86tWfZ0q8aU);k+k} zMf?Oi7O<$Hkh^dlE3QM@B~xx}S%b#oX7ldDbXd};Xy{#SAtQeSWOL9WVXh*5NmYm2 zT<>CYuxmrZ4SC_|9Ig){h61&Kq#V>m1;FN_dK;BHWkK&LR2J?O79)oP-4K@F+~~%pu7~ zU9f!}f7&aQNxPu-RNhJf6uWzh{zq4#0@Gg}R6`6OGpf8Cid`(z^=@3SAq1%c}u>D>|zB)1w zt9Ty)(h>Yt!-}wZKPNsg@?rRO$80Qizkm*3PvGOAcM8#fF#%ttzH{<5g8Yv{zMOEq z4AIe_aJ~peUTq}4O*#$whSM1Na)o>b`PdTWWZ?^Ze=tZX_%sb^hZQ4wc;IDLBK^5C zHs1-?=eB_xi;tmGf#n+>dryNYH?`%#lTawq%mhg&0Q%fhyz zQ0p6rDq~lv{rAqK9o$WBelyw~yvk(u>1?^5#$)OX}_8**h zNxD4@wzoZuW4qTCt=jmpv6oCmpLdSR#K02T$!)4wt*XHbmKLJKy}8~X$Zz5-Rs${Q ziWBKL?>yR`O|Y>LX5&576H6~a_Fy-bPwBFEABbf%Mj>TI{7{FqDJLZ6>U%DM8*U4@ z^xL+%MIgs#{B(u%=OAT&>|9yJyM8e2sk}@2ROSBR);Pb$M5JAA>{sAHdiEIRk6g(4 z-PIVnaWPySV$B9_wM315+@_K)Bkw}hPVQ`VQcbyYPq?&(TWd9dfVWpAeo5@bt;IK7 zW!xm=lq`$Av~-uq$wq|4t5EC4Y`W(h;CJhZCW8-39?(vG6*jU|f1g!KORyN32^2%A z?KfJ1+yNiIpa-k-$Ob9Y#?lAw-+q~!a6M3Sb=0P7s%GoRR0k-_Sp_CC$2;pV+N-MQmmuE zzE;g(-q>__)!JMNPwpA9>hF-zJVkZfV~*(iY_ zm8EXOd;eYhOvX)gYrPu3beVyh6CDJ_U}BNoCbVrfRA|3&ff)Ch;=RWu`7L&g%N2yD zf=(iE8Efc0D~}mbo8^fBw*BM|T>SL0LUzryCpJ(b0-C_#_X}l=!{&{xhJ?X_`b7F2 z$$#a(U0##o%ejz}Z39FnN}MI~VMyDVY`RI<-f zWV}JV=h7E^o4bX_?5HN1U)BM4Q!}6#mS5if30BoMWu=!Akm4bB%XW_BC+sRRWHRpb z;lUVL_0W5Ki`hy(_>Yd@opS}>2Ht|KSp`sGR5AF75j3LA_aD`fm%uDXG$)!i*yUUV+{{aq(2Z3^w%s(K*blR8 z7xHU4#mW}5+9-WDTNe+3oAk(+XJYDL!L0^5N1mk@8H4`qXz88E_msO(z` zbfQJZ=W05QgEEF}et8DwergINBkpfooiHs0C+yT`x65rsuvrSTpY>yps2szHskJ!S zIF?vjgIoV-PIEAPI%PdfJ{SSz^w#r-rv2JmBdCy`kM*y~v2{e0-w10TDxoI} z>qP_%|NbKVJan|CWZ*9@XwnZzYQ8Ux_|i*6%ugO@QUo@uGsRd-XjRpU(W($%!MlQ` z@fqW7#>vKAjGLB!Q~q4}@bX>CeKkrm8m(7J_qpyF-Nm|7biH(~b+YJ#|K0z7tuFj; ze{e}o(omN0&=g40Y;8Ptbhx+oF-?P3!Q0K&cp!p}(us4^6YSjtC3z zBi{S@1P4!`@{!@BM5I3Sx)joHS|uwvjt&|=g6t;1Iv_keG$bH2DuTWV^C5|of~?Z*1Y(aag(W2kxVj^e>JReBLbue21NLU2ZcqF0)MxL|I@KL{~YVd z-^Qw;u1wuuWBvI|j#We4q*NzKxtFB;#IL?3Fp(h!NmfcrvzC0bj*{#p=@FHF!9EcY zL4gzg6u@_u|G+Ym<`0ng)#T6N{22Fl({@gEBu;nMbpDT=mSp^3^j}hI)=qVx;WpHK z_}g&*@=n!MdwR$G_jfcRrY2od?S2|X(LeVq_2-{Du9n*TC!dRcbgXGqzF#}F*-xT= zK9hX=3sKRnQ*DXiGXf-8MZdU143{kszlpg&%9uvTnx}ukxnJlLLGOeG2l)j>S_g*? zmo{VlR}9p&_M75;cQL;MobQCc*FV*uY_d^8#_ux?F!=uQ5Sa&A{4ko(_3({b@1|PyheM2KPpwiTO+=w7@Xu|_S z$caRf2&6j-3<@Eh`h-M`3kbLN^^uBCHX9xg86HHukXRoW8a`TM$;~uQhiLtc-N70P zf`3vlT2c`4-G0bRP%)3|0jBAwE33;`_Z!?f5~nwE!{38#Uzb39sf;=(vAP$ zj8FeJ?~o=fDk%IPRJdVkLqao0i7&^0;G71{+V}0$qn!+t=tgNLkIudNwWn8Nb(&1m zy!p>q_MKvlg-hf4m1*iH!u@NTwyE{0_m;o+E?v#PO*hprwcbx^3;r{;GyGEPlFh~0 z$hHf9v$>z~YhX|?8TQ{<`_unZWTuHu!UH4_g?x{(DW=hgrcY!*n6-lphWpCrZGU@C zNGl_pA931`zP`J>?;T3K`iZsQrA1Il7cwG)NM1i9iVox}`vgs-sQ|&t&)I|~K55kF z#}s62gmqu?@;2Y0`QHpmgLL23azWvHK8n}pk3)7Eb;_g`8VmTFCsjjk4B{uR%Ce~qH)zjzi6V9US!a48W#_+gb=izun3>EJg?es$0ywI+?a zqvrWPj{4V|KStZOhezA?J^NawT2Z@}zqc!;`s1m4Y7J^t6Q&;h$5#KO^hdLQ+ncSM zYDvvEk)qm~c|E>W1 z*H-|D;acm^YxQd7+^}n?I@T8#2946~!^#n!;m@FTUSpE;_!c>~^iuTz(?W411qWz(y<^8n1O^rwZ>Y_Bpfm zRH|nn4mXeC`LX`czq&r^?64I3KD7aF?c318tr@&>zQ)?UH5HE4tD|@S=3-b{ANI#6 zTGra@#^yU#1j{Eq*o;k+SmAgr@ulV(?7FUo=&`n@II$-ihS+w1yTu)F)2Kt}{Cp=& z((Aw`t}zxLM%ECQZDu2Tx>s0?j$!wBBEGD%44%aF;^jUq;p^^XDdVz}*-8@wwyIfm zw#N4fHcnUxKINTRa+DpbJ}V8%bgaZ&K9prOHd2LJyMAKV%)v@{C3EOtmJKg_^I%rv zJv@7WE}UubZhS$LoNC?6h_vZfL%LI0Qwu7)uKG!srUqsrdNbYC--3C(e+%kz&qdd-V(-@syhkh%R{R-JV_k+K`1m+)R~Y%-MvBbZYCBjuJAoyl{$L zt6rH}40kGyQa&tCL+(sT&!`;-r+)$Fmti;lu%^+}~*#t7D;nU`{M+zh^= z-a+;Iq%E>-aXq0xaaqOj^U%)9w7V@tUj0p+bOw_~UR9o?W+UkU;|&`@n-Y`1H-7wy+30|GQ6l3-jW5AO&N?N7qu(bVIEZ0Cs_!iAYf1h|(aye5OSKkxlGY6CQ zEU>UL-ktcK`;H0$yW-_&n0=fFFSp~{8rNaL%X47%*VCZ=bpb4#k_^l27O92u&@HcL zWme|FbGTtYNs<2z743j6D#01XwXm}7OEj-*D2!EkaIg6{Y|-p8*ZWe1Ep6XNOg72D z8Y?bftJY=3hW>F7G502(YFd_TD+MpP7XkGRb>1{mr)|3i`_{a{_1$uC&|W%e8I=Jq z^Cs}KyBg!-qXxoT+Xo(n&O@?uVKA?pAi0VgP`tO~(vi4kVP<#k?yWC9ZBOb`09A+DB`g-H(= z_O2(Q+k`-kKUVV*Mrzg9vrVx5*H6l$&`PZApkBOd#}9l*<&TOgzXzCHNn+FJ8n^AJn%1rwM0(a0nK_M=3v-j{7d+5Z4UIws-{%XJ#sKO?U9=i;-}|mh7M@ zBRk<|H=M^ykG`l(R(pv2`(=dV#{|`~ih8U~axA}VpewZ8-N5;|6C>TgHq*Bv$&P&SHHCvvhs*6;96I9YoqC%$sy zIVO0}Z4?Zw;2_#%9#mZ&(L(w;+}F!gtQma(U;p7EHd}W^(lJ)izcC}-#3qB)Nd5xO zcc~?af6DXCYOEZyk56-p#cwkmu%*^}nAKvIihLV$Xdew5H$H-)ce=r%&;4NaW`B^r zhTfCQ#lk>>jI%>t8*0_xx?@2FDI6;|I;- zGrJyD2J9!JQpv$?u{ScD9q+dv>?1vY?cniG9Bj;*7O9ze}%>@4$jWyZx=;l z(t-7y@CnGy*}w|h@n)$f;kAW&(DO`uKkc&8l)q91&mSc6s`poxt9PlTA6aHsg_Vq- z46D4Nl?~c^`0H*4g8Zn;EF>CE_*??QS%vI_kmQUc}s3Ua35Nc0>9(Bw6wMs=nkm z6L9jDaSCBSlJ91B#-y?g)l>+az67dlUW@HFR29;P+_3+I(tp*sFprZD#@;=9W0lR6 zEoXT~?vqryLE7TAdhp2olbyPt#<iaA9q{tpwRLujs#lDhJNQO)IBU zJk@|ve@JnJAlsEVtB_s8+eO-}+^6bb*}5ig|8){~JY~(L{Le?l!^Yi0`VdvYj7Q4N zj`d~ihBw2@1L+IJ4ksbieJrOKhRHbOYNg?lr`Yt!QH5EokiG+UFOLV$=53%jxiur5 zN3vriodYR5;tw4D&_Ug_Mirb|cOdb2kF7hZ2$L{!avd>v{C*&NMEim6Oi9t&M>woppB$-@G0*KlH<<7; zUir|n1xvXpfOKh38rq9qHKK9dojPa$LdGlDv0#((yniqw-wUMA;Aj07gMz{-HjL*7 z0*WE&$sCaJh>TYU9o$P;Qjahv4(dEU%Zbm@*MWs^Gf~~S00!y~VHD2-#cRswK6{j} zQ-%oACE@Q}OUM|y-cV=d-kdskF|ob)`1k<~i7{hj2hgzLXNBSq41GPF;*SE@Sbi3B z&lm?mJ7ZDOJiMQynEu>I9B*?7*A|V3ieCLhvu#Om(Cvv@nXysyXb^-ayJb+^ z){El#dXRd2I>lXG*%ZI2ApP6vMO84Y#ux5zV`B))+% zqlpMCoKLnq0Hhx&e0Lms+Pf<&Vgk4@4}S^0_g)erUKC`LK}aTo3(VH(VFN>zwA zFn7dF_4q5-@a^vT@a}v=wveilOIu24^$H{wj}1G;zwJop15!Vt)I<7)tvOhM`M6jy zieqp=!fQ^t28+kI3OOerzX)4f4r7ZgOYqv!XVTZfM9R)e_J>+Q)C!Sxbjp_CafWGI%JBpPurC!T;hp_bww@$KDHSQGvU#DD0tKHL)<}|Qw);Uf- z5$84HeA?YzD1Rq8i{$D0?9lTu_$(_xROx?NMZOH$_dSjjGf1DRNFAOxwJg|JnF;dm z(3FR>d^>ISa4S{FOqmYN0!`Wa)>pxL+7Wnn{0uZcQyt0nfZ|xN`xHkuV<*htTSNNf z6fC}N!n?T7hBq7C2``Mf<*kV@#7~FOoPqnFp9Ipb2*;$q<>Z5e!~}{*6t-w2%28{V4l_M?hac8k z3envUqFY;in7$bPJpKQ-H3+%^;6aOxD(gsE#rtoaIQX%n_-ld8|E~*Yva28Kx8HX; z!UH0rf+OX!32nrOM93`{xhCmj9qu#k*MS7hs-s+g(R{91-SQ8h{hRNrUBCMJbET42 z88!R)Kla2l4>ac|m; z6u!_Qb0v;lI*mEUbrAKcxC`HDH&yfc-qxdO(d$ zNw6+&DNb2#0=v5|RA*O?Lq`t}oPPWm(D$Hfp9x`R7VOUQ#TYds0n7AlA=;X>WIR`& z%^2^^E^pL>;=Ys*&u0ha8R{>V%{s00dmAWpGc)jn)hVFdI{f0p=luDzLC~jT4@Kq` zx-=53yGyQOlbx%D_Jelp(!PnxZS%cwF}*FUPk9VJJE%5kIHv?B8nRp@HKLZG0MvUg<9U-k67~b7t0*W3_-6 z#Fy}|-nCVgr{=-ZUG34J@ElZlmBF$Nk5JU(fnLMSpuwpHTx-ZZ%=M~<`|j_X6IPf^tM1Lk!4gnp}lb6;zM>42@<=qaW)io_K zakvGN{NO9)ikP3j4YDiiGt-*qDgSw2@iZk=%*}ZTGp;34jwv(L39Zkl4`pawJGR_> zJETq+&+}^R!SV?&VZ66FJGS)(Jd9Zfl#`0?Mc#(?p&N14wen(m)kq#;aSfIp&=c)T z6IIFCHk1cyvs(YnF`jdMHH7g^U^~x2jH`c(+plnD2~MAR8=tjGmEozFkXMb7UWkH{ z$~f&ch?~Q$g~1dXvE$Zb8q;&6oKYxqKD7^R!d92p#ZGTLL|3|aaC29oD#@zzzS8FN z)t^=zQx3G>h;{V7K;6=K*|yA6rC8N^hGZ-3Ncnh9d=y$Hxmfk-HrTTwUp+O-Qn=oC z5aYMBf;;bY*tmKxxW(Fr2T#!87(r$MiWcle1> z6Wv`ZG-RaLTzA1>;j&>0Tz&gWv8>ye_snm?HfN0H*ZbYXwKse5_!47gT=6te+uRNJ z;lp(|mF|~^(qZupF#hu>HYYh3pB-Bb)w|UcDScbBvO8;wRkc1~S7!r3ImU3(eOE>~ zztGrn4op8^MqCOzrJPM}$*f|kh>KkpSy`PEXuc~~wdeUWw^jPuEHLFR z-)mD>$iF`}?8bw}<{;%sW9-ET;Gf5cuv>SPFWU)!yG&=$+E?h5`z&*g;guN`d58DO z8qBy-^C5a&87r{@XsrC*o==?UR(TCypyIi4jAVp_U24ijCeG!I1(Stul>SX`DsNeu zqV4n&S~Ylu5|08?{FGa>E<&%a<;Ad04^?hPBZXbT2HZ2L96PYwTokzO=R4a~hBZm` zgyYf=NSFnMrRJ>q8big@W&x^hN8z4=-O#+%aivGXSf#e@7!jWONx9c8M}2N|5=fkI zy4Xyi+-K0&W(gE_(PBYk?SOd5wMw*=E?I%9i>q}+k0-U1qnCP%gz9?Szr=_=e|8lK ze^|XL`@p+a1mDg~kuVUlHdT>hgE^P|8I1vsls5p0q1K)OGOrx{{T`0hS`U_WHxQOC zfDy_hlw%FM~dEJqm2Hh1h?zEahDtfc^WOMUn&TJv>2>?kjPX zb==oX3n0F2!L_ziB!(gNr^!P{wgTmR-INTM)i74e2Ad30p<$CeE`1Q$n)I(o`Skes zEeG(`r(syMAVg(ts8Svq7AX%-_kjsFD`mX*LM~&9pi@hjM^1^% z=ckY^iN3|n#p1PjKp2Mg{Da7k^+k(qlX>UDfrM#2L~&L)uG@W`*BOzGcMqOYs1N*7 z|0$BJko+BMqc+v>Tg${v>G32J0`eB|CH*cV`3TXnadUW5Jq2p?Ss`-@DhVc33nMWe z(50d1IO;ia?+h5|cM-@pP@BOZaiGE2#tO!rQ4{u192ARPuUiT!rvbW8kaSrgETUNK z2s(NhD^ljv9zXT1n%EzbiHkb+n%H2qM+)*ukU-dOJ1>rVbygUpOD{RKC2G!VXoy$;qp%EKVOp$j&8tBD3-4O5 z)sZWJk)2?-o?m%6-&{Ce-H5Pm65KqHL^+>!LX|5om8H85E7E7YSwBwH=yaQMKHh|< zDKC`b<`qR^?Rc>+uLisLFa*ACDS}ozsPBF!aN~P3sxwfQMfX|H3WkgoIcEZZWQEk9 zcu?ybek?$2=QI{u#-yu{QrtdC6v7;j8Lb%HlI|x zY6mt3DN1r9LnM8J+HdQzV)o7Iaw z*?m_N0~%bY%$l+|**>OTuPrDhgLw&)X^c;hc!-vh7a+wZV#@7Fu;JKpT$WZ*P^`t2 zk)E3QPkc#=^89^uxbw8F8|6QhGK66tIYe)okFIHD#AKtFAmhgR&k9hrJW)_A4}B;{ z$7|<>_-SJqC<@&J6I^N&KKn4DK|L<9tRTK|(osS26D7g9KzR~|ve0|h3i*G?^-AaU z-_KNN{sIyk$^I3}F{+d?NP^-EYhd-jE$CGLiYjKuLQHltuD4S)l zZubzD|2m(qwf&Myc#6li4rSs%8F6LC9HjV!Ux+LZ6dx-?y47R*Lux6Nih_aSb#7sv z4epza#k*y?g!uvZqS0KWe5XLq8TlDjj<1q)9(JXeQ~cPR<`-4PwW6~ zcM6)g!hXeWnxBQ>4l^t0TzG}gVX5TjE-BupJ3?dU7+g|j3(WOx59Hh2*3QkA{+H&5 zCza8$PXBT_K_0r01s7ZQ=_-#n_3Yh)PIh;v3GQzP2jm3z*O7?-(-RN>I!FH1#DBQ^ z@Mk~&ZWZF6F5SzG_y3Rl^J--x+5~rl7KP#^(phE5|n#Ox(-Sm#|rzX3XIV-k^0`YNQJ18{>~1~ zf9hSYcprcNVG$HfUx53UnZSXg!{ok;w^-1(C@koC3jKX1$n_7~$ub;|84;~P?p+T2 z=pz=;(OR;L4{+6${i@#MexOTSKTMyx9XuKv!=h37a@j~{R(&)PaDA}!JylPx?Q#hB zb}~jZtt%}LQ~$>H7g^&3F58BLGR?Av+^=jE6jkT|6~|_#HCl0K90Ge63`Q#E%`Z96 zk&ARUii((M?zG`NF5kEtQZu%&_f^TzYDzr#e`|zuOzVlY{-vtA=Uj14SQgOS)u}HF z#Kisy-jO$wnBLN6bPzOM9GG8AHrVJ5`&tbVR#|F1JZ&5t-TM;1=`CX}?ev8Cyj>!D zrZ;SP9Rw~;{YWocglp;|XuhNqPu|{~PcYEHXiG!vMa)oR*gT*!Yutv*>DlQ}LOE#briWmHK|E}$jz>0k6fB|4QdDCD-t*)P+4JN# zQ184i+>TuX46ZAyD&}GM7EOM_cQP+-cOBZ+3YD3?T_xE!+cZ4zpnEGr5SpXd$9qQD zx6g0ZMdQ72TVNm&&1J!cE&{2R4>W!xQUdHG*_E{URR*MMk+`_A>~L=aE;vsImtAbc z0oQc2eG>qpU=$wH2aNFDfQF~=;N&e{5iE3w2!E{_RP>OEe zpMi>&^PqLne1FAI<@3B{%Tr=quCMg$e+%N*tp>7lR0^>F=vG&;c_?l-5VeP_RVy}6 zzNzvk8m#C*P4*$OoBGHNO^#vl>TA&6Z#>!jWgwYj)%1Dl6&>7Foh;DYSGVGU$YHp-urt*0DiY-LsQ1bS$oAUWY%Rlv>5ThMTd9)S zAs7)@Q#Q*#iYM3RQ|#6RPfHVNJ+m!-nVgP_t&(5(bieyq9pG3c+L>Bmi-#w~N>5Kt zHX>;bd|$RPewvfUKTli2jO%W}L+|S$>4)1j2~x&|pROA#_5~f*tpTzLj@^UtrCU5S zwmbMoN4X;qr+rT&>@ntklUK1h7M6JV>MtZ41?QWWQL)>yuu3>SiZ}-KC2BRGhb*ae z53C#b2~oBTy?PAA9Saf_oD}5WxcTQvxRg9wrncPzzkDtED!T)4xKS8xG7Mx2Zk1km z26>muFxIa&o_g6_?Ka^$Q|y)g4y}t4@kh7iC9>)fIGA;VI?2wmO4c7 zBdfh~2Uf&c`dOBY6 z=-vs^zJ6D}w|feb&tOr}WmqtK9g_T{cl9vXd;dlWVK!&2M#vl^&6fFsis?fQ$Lv2Ck~GPN8zgRI2O{r4L(aHGggbmpNkO|N6<|7eD-b@2 zTq8s!worQ~_-avGnv5z0D!R`o24K_ON3g`PHYdN~5vyx*Wv&#v_~#2I>}bpyu_9{^ zQ`?&HDb4j2+ZW^`?8J5(zGR*wEYfW*bH)fHnNU`3CMdqwNB0+m|45L!9c`fE_&qI%*n}Tc>6--o5TdLR%_n4l7y8{PsD(sI@6^mFq%tn$C*819tD}F;` zl7S8zV6NUO_;Sh=nso_)&du^!vAzM=`gfGsXT5Pt`>wM2k`p53T}!@4bwjk#n$Kok zpgoiY_mMCdrWK?i$v{PMhg(>=!=Zamu+;=jp53$r&%c|2W-nVSGR8g622v^Tl|a5J z6W&`vVOlrYw$>BYq|RZ&%nI~vR9_``tiZ``Nm%EOGXz|pNU`-WY}!?>>d*HWFCp$-q_t3CX z4MmN0<)M3_JieP1KiY6@$({m39;2BCW^H#0@+;vsWdPN}+5_Izcc5_jX{6YoK4bD( zd<$O6x5b@PzLu1QjhBiqD)ydJsuq28=b-J1ju6u?4ax76abdZ4r0n>l2{o0_gzCnL zvh4*+m8H1{r}^@vBQ|8`FQL_h1j4)lK-XZ@(PSXJ0HY%XBCcyH->Y|14NJ05+;*vl?4l9H zq~B=bXemIklfUh^5RY8TVOn90WVAGtJn|7WuP9Vge3Vkpg1ff3sx+6t;_7SS)cGjb zc&H;BJ~fVaKAF#6%}wA_LsIbErdYPaEfHGW3IywLKYrrXYw%xIiKc@cnRT=;C$5I1 z3+WPf1*yRYi_>Tz7kAyvh)ePH3)@RqmAQsl*9NA3AOhIu#ZS%{Y zaO{$*3@c&Rk1I$vD#;%eoiLZ`Bt~&X5ZA>0jfcstN!?*tWt^0uFgHTh?T5fee>s_geNYL2J$swbi|JDYjq2vEf;$moop$o*$5E6<6-aBjAAzhRjF<5`DW@(ti<^B zx7sWGTGCh*uEj}aVBoMx`5Rt7_Zxq{Uyj8)laa6%i8m_EMAXDDQL!iDO?=AqMfkqT zfGe@HL2qy3ccUbIW&FB@Oj%i=d{$|?qQph~xynK+w$r&`b46C*+(U=^Z_dT~+xCOb zx~3p^Sg^0AW9bIIm4QM>QDKV$IU+(-t@3FpMam1Zg6`b-b@Xd1#n zpHS&LbPN!mBF;Y<4{pwq^+tM%hLtLXPeALO3#f9t55x(8I5@@pUCd;U1M}&Z0Y|Pi zlmXXYLDSvs;nKWc}4w?LF2>E)r1{`cmOHT|0inMSE;9uVn``oZSLb zGwkKT&6eENdVu(NFNK=9j0Rd)AgzfoZpbQ(T~?cHei0D&qq@+B5VxZ~@4Vw3>};hi zmGuX4J{9pGwW6nUo4)#pFmveHYzA)qSc9j&v?Cr^0PQ|JC%$!y?Bg_aDtj%;&gbHh zyH<)_0`Xqnx~Qh?Jmej;>95VZ`o?e?Gn@)&&J~QU|9ihGzy5J*z_SmOxbF9TEW14G zH}M%0zNcU@D$REk9N+5RozXpcQo}sf_zD+fe@HQgP3yiy!Ag9YT0<(l;;p8hpfLmK zpE#ZtS7OS{`O5^KZ-L|!Jbl(SjQBVYvd0@Sq5VeX@E zfU-`?pV(2JOq_y^7J(#;ldl$Npua}0ihLS%Hm`%uL#FT@Q!XfYuEb?%s$B-VB6S)0 zpCsAy%d_SpHP#WG$|m7|tpE4d`v0$U7yoI|{?7vp|BE&IKd{nyn#I~Sh>BT~D%3XrJGqdEi0nRXRP;E@Qb_&#Y;;6@MBYe?i2j0h%Fr{A! zY}inXUoT$Eh8Nz((Mii8wr?_~F7}r6y)2(zgI!;JpCzOZlnbrCv-;g_Bt4fss4+vf z?Y|G4r!8Q;n!I2wzin6hmFkV9x@(hC zYzYfHt1DkunerLkuCeL&Z!x2zJ5)o*w1R$Phw%G%NAWMJN>!gXIzXS5%|}1O;$>Z- zc<*DjJJKCYQ|n{smhG(8H*-AmZUxgguOUCTYs4q-tuK#kyTl&!u7$RP)4-thI5_o5 zm)q0ZfH$7{%Rwm~a&5nt;)bcItcuHI^CLAm?6Z(&Jua}3K5wwpcc5%ASxp=@3{&@L z$pg)8q;mg8O~;_!SbI6--E0}p8p`3PKd_xy90#_$h`lVtbM1C##FSF{P6p&3gbGKQ)6_P10lcb+@aowtm8v zd?^NHJQscR<-6-~w!N#l@~hfKK11PvJJGZ}wb zZh&h&XG0Hl6NwGxh|8N2r7{MG%lUZLd?)s8w)Kw;NiJ$Hk8b>x?M4Xbrz>^)(t9p@ z9|Otlph=%2g6xGIP8L{wdmfE*3|K@v%5C@Vin99WFtj27R?U6F*1vR-({dao>44|8 z3C1_H1}M5!g)>*GKzB$!lzV+r=8YqR85XRZ$g@Vr!IS2F`Rgk^F}v7G)@>}VXuDoqOllj8Y6zj4~2Id4Q{zVzH0%HFRB$R3D!@; zni~S-TDLyf(;}TM-_{hmPm=68)w|tmGm>!9@{heua6gYEL!L4G2b!*FE@}Lr*g@2^ z3rOQpFb@e=rSq!B5K`wEj83Y{d$w$-_z5Xb;@jp>+04xwr35Ildzf5SkUr83+|q{p7kA;Ag>>F2T5o_f1bllL_%$vHAO-)`1cWI?_8Ah2sq1RK0bgB6?=1$PZh-pF#LC6+3*jl*)LN7)Sok z4F6LPPV(G`>=w_1h}v3Brm!4hfMGHs9@WcN9Ul(DN#i}#b;j3z@UlWaqfg) z?BESkIkk;5Z`AZDH}F`EufE^FehsHX#@YoGV_M73b`{X<$|V;5YKK@ktQ(fq?;+{$ zEN9SdZ2hi6b<<@tC|I&ar33LS2Ptl0&Y+<xMni+9JSvYeS8 z!2C%TmQRmEt2-X>CB#E07_Y>?Wvv^?fL0(U^nXrRvs{vmz>3d_oaBqnp0oIw2g!nB zvRw0g68|x6o*)?tW7DNb-^0!enS{@8uwE+z{{EW-oH~P`GCe9ZyDx&Vrl0WXsstWh z7J}igT8pNQK4N)xJ=rfJ4bE(K!`Y?R%%WUAXaZwJC5 zn00$RJ);4V%$S11Qy+JgEp~R12g~R2rsD=e-)4@otVsg@-l_=|$t0u z&B~llnUlyrpQ(m!-8M3pkEyKt%7qZMt|1>c&lbt%6rL${x~wGLu>iVvoC1W+@~X#5 zdd3E<+>|T4^U76Ldn!To^o!yj(9YS355LqB*1z0^WN+|}-XVFZnM(frTNdBl38#nl zglD3GnC)vU*VGnRI<6U%j@zIJ62t!Qpa5n=Ia|^B#Eqy9>rS)S|fCoXc$ZVS6Tt)AG6~M2A!ERPKHqZeI@pf?HPv@H-W~g`Z40D zXg@O@h)4dp@1#Lw55v2Z%u-*(H=m#5z7Erwg2VYa!yvAHB9af`$*uViwEr$7FN~pQ zpz>Kc3Sv=zTA8jO@K{ClGIvCiKR4?+IPyCRbY#Gh-Ry z!ysAi6(bMcSOTLxewRE7|H$UuV({KwllQpojbx|fD?5NGr`#65Tz(hyplSOj(L z1Emt5i08?kzk2d+wu5Di-A|wKFD3$<$b&b77o*nX^@NEU%JcZit+rC})5*Cvf$qsD z2BE@r>2Jil$BJ3no=AQUqB;fZY58JnD#%K4*@t+h*jc&|$lnw!0_FZCom7hKLBWwn z;Zw0zDaWAY#|6bSu-}~mmHW5A>PRca&XMdzj2&epQyNQ9?A=O7L-7aVKKguTsUE+b z^;+QpqSNG8Xg0ke@!H<-VJw}Vt4Svy#~Ld!1*XiY$q6@6SuYU(VX>OgSaaY*L0E=? zcgCU;UqT-xsyh261Mwm3)g`1PHVlHYK|7IuiBmc}-@#PK=uA{=wuf>*&dRm8+ z^#_f=Ba%E-PPwMy+q*!n*ytD4c;a;e4*cj3lV-L@Ma~LVl1#D2oR<)Ee+#UrpDXTV z?-CoR-&uGI9T|PZ9TG~K5f8|L>f!_Bo5T2kpX){W$aa|bc#h93b#L%ZH)ggIvcY}G zRU|(~)zj(7HX6Xd!1+KvC5WekvSz!{#EL7j&N$o{9<)p3W$m*C{S0>=_U5h6yD4i5 zuH|`(eYV!-Uc*kS0F)9`e=p?wbr0&^V?g)+v@4)o^RHk2wT1Ani~s$q z|Nq{#`hUkBfjeYikK;kuawGNQJ2p~&I_)S*hIPbt@jI{~Qcp4+e`)5h6+Rzm#MUo3 zBpPBSylrRB?DgVD6h`VA8Fi z9z#zVfuspKD$|+7E6|7Rbz%+vr4?1ig+|+4$3bupq7rUa8#^s>6!l z!r}q)L(oMG2uKw9M&9zSny}70-d>;sBJk8TzzNrUk0BsP(2u*JJ*zr>R8K;M#q8MMFPnS>)shIzt`|l ze>%Mt2MyedqrMu$sqgFH%Y`n|%gIKx4{suSxn)UAamS|f^&!vwGH!eS1^RD{7k6#$ zS?uyOV;cniYQ&7JoDmvEqq<7#&qA;aCPYxuzsn@pCx~T(GicK-o4uVdR8D$ zYJCp`6{4+7aT3uvNz&DAy2CJrMYRFlKo8#Q*K{Ds+XXZc1Om@v0#+&yV51Fq$T$|R28IBcotS6=Fph8__wAy9o& ztfJg7*)v8zoJ98Y6l^zK!N@ishbA?nQ;+(5*S9X>eJsK%RaogmJyJz0DQ6l zZCHu>2X1ERX6`I${tLM7cMw9Bne)n&?Vy?QTD_=hIaHf%Vpq@W@bXXbKsL!p|0

    SH*5t@a=LBl&}~>MpKpvlpHY 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 n5i9Z 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

    P- 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ⅇ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

    93#0C2qH8Hb{ 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ℑH@uNPs!*8{{5p4eLv~qud9oT_MM#R3}y7zMXGD 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%0ACllH6aU}e_H#D3|1au&fI&qDNNChTXN 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 score / 𝑔 ). If the score drop is gentle (passes the check), the candidate 𝑣 𝑐 is added to 𝑆𝑒𝑙 , and score is updated (Lines 7-8); otherwise, the loop breaks (Line 8) as soon as a sharp score drop is detected. Finally, the algorithm makes its decision (Lines 9-14). If the selection set 𝑆𝑒𝑙 is identical to 𝐸 𝑐 , this indicates that all candidates passed the gradient check. This corresponds to Case A , where the scores lacked discriminative power (i.e., 𝑣 𝑛 is equally dissimilar to all candidates), so 𝑣 𝑛 is added as a new entity (Line 9-10). Conversely, if a gradient was found (i.e., 𝑙𝑒𝑛𝑔𝑡ℎ 𝑆𝑒𝑙 ( ) < 𝑙𝑒𝑛𝑔𝑡ℎ ( 𝐸 𝑐 ) ), this signals Case B . We then select the canonical entity 𝑣 𝑠𝑒𝑙 from 𝑆𝑒𝑙 , using an LLM (Line 13) if the reranker identifies multiple aliases, and merge 𝑣 𝑛 with it (Lines 12-14). The updated 𝐺 and 𝐷𝐵 are then returned (Line 15).", + "title_level": -1 + }, + "summary": "Algorithm 1 resolves new entities by retrieving top-k candidates from a vector database, reranking them, and applying a gradient threshold to determine the outcome. It iterates through sorted candidates, adding them to a selection set only if the score drop from the previous candidate remains within a defined gradient threshold; the process stops immediately upon detecting a sharp score drop. If all candidates pass this check (Case A), the new entity is treated as unique and added to the database. Conversely, if a sharp drop occurs (Case B), the algorithm selects a canonical entity from the valid selection set—potentially using an LLM to resolve multiple aliases—and merges the new entity with it, updating the database accordingly." + }, + { + "index_id": 76, + "parent_id": 65, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 76, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "For instance, considering the example in Figure 2, when the new entity 𝑒 9 is processed, it is first compared with existing entities in the KG. As depicted in the similarity curve (orange line), 𝑒 9 shows high similarity with 𝑒 7, followed by a sharp decline in similarity with other entities like 𝑒 6, 𝑒 8, and 𝑒 5. Our gradient-based selection process identifies 𝑒 7 as the unique, high-confidence match for 𝑒 9. Consequently, 𝑒 9 is merged with 𝑒 7, enriching the KG with consolidated information as shown in the final merged entity 𝑒 ' 7 .", + "title_level": -1 + }, + "summary": "When processing a new entity like 𝑒 9, a gradient-based selection process identifies a unique, high-confidence match (𝑒 7) by analyzing similarity curves, where 𝑒 9 exhibits high similarity with 𝑒 7 followed by a sharp decline with other entities. This match triggers a merge operation, consolidating 𝑒 9 and 𝑒 7 into a single enriched entity (𝑒 ' 7) to enhance the knowledge graph." + }, + { + "index_id": 77, + "parent_id": 65, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 77, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Graph-Tree Link (GT-Link). The GT-Link 𝑀 is formalized to complete the BookIndex 𝐵 = ( 𝑇,𝐺, 𝑀 ) . As described in the KG Construction phase, the origin tree node 𝑛 𝑖 is recorded for every newly extracted entity 𝑣 𝑖 . GT-Link is then refined during entity resolution: when an entity 𝑣 𝑛 is merged into a canonical entity 𝑣 𝑠𝑒𝑙 , the origin node set of 𝑣 𝑠𝑒𝑙 is updated to include all origin nodes previously associated with 𝑣 𝑛 . This aggregation process creates the final mapping 𝑀 : 𝑉 → P( 𝑁 ) , which bi-directionally links the entities in 𝐺 to the set of their structural locations (nodes) in 𝑇 .", + "title_level": -1 + }, + "summary": "The Graph-Tree Link (GT-Link) is a bi-directional mapping ($M: V \\to \\mathcal{P}(N)$) that connects entities in a knowledge graph to their specific structural locations within an origin tree. This link is established by recording the source tree node for each extracted entity and is refined during entity resolution: when multiple entities are merged into a canonical entity, their respective origin nodes are aggregated. This process ensures the final mapping accurately reflects all structural positions associated with each canonical entity, completing the BookIndex structure." + }, + { + "index_id": 78, + "parent_id": 1, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 78, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "5 AGENT-BASED RETRIEVAL", + "title_level": 1 + }, + "summary": "Section 5 details BookRAG's agent-based retrieval framework, which integrates dynamic planning and structured execution to intelligently orchestrate multi-hop reasoning and information foraging for complex document queries." + }, + { + "index_id": 79, + "parent_id": 78, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 79, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Real-world document queries are often complex, necessitating operations like modal type filtering, semantic selection, and multi-hop reasoning. To address this, we propose an agent-based approach in BookRAG, which intelligently plans and executes operations on the BookIndex. We first introduce the overall workflow and present two core mechanisms: Agent-based Planning , which formulates the strategy, and the Structured Execution , which includes the retrieval process under the principles of IFT and generation.", + "title_level": -1 + }, + "summary": "BookRAG addresses the complexity of real-world document queries by introducing an agent-based approach that intelligently plans and executes operations on a BookIndex. This system relies on two core mechanisms: Agent-based Planning, which formulates the necessary strategies for tasks like modal filtering and multi-hop reasoning, and Structured Execution, which carries out retrieval and generation processes based on IFT principles." + }, + { + "index_id": 80, + "parent_id": 78, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 80, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "5.1 Overall Workflow", + "title_level": 2 + }, + "summary": "This section outlines BookRAG's three-stage agent-based retrieval workflow, which integrates planning, scent-guided retrieval, and synthesis to effectively address complex user queries." + }, + { + "index_id": 81, + "parent_id": 80, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 81, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "The overall workflow of agent-based retrieval, illustrated in Figure 3, follows a three-stage pipeline designed to address users' queries systematically.", + "title_level": -1 + }, + "summary": "Agent-based retrieval operates through a systematic three-stage pipeline designed to address user queries effectively." + }, + { + "index_id": 82, + "parent_id": 80, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 82, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "1. Agent-based Planning. BookRAG first performs Classification & Plan . This stage aims to distinguish simple keyword-based queries from reasoning questions that require decomposition and analysis. For instance, a query like 'How does Transformer differ from RNNs in handling long-range dependencies?' cannot be solved by retrieving from a single keyword. Therefore, the planning stage first performs query classification . Based on this classification and a predefined set of operators designed for the BookIndex, it generates a specific operators plan that effectively guides the retrieval and generation strategies.", + "title_level": -1 + }, + "summary": "BookRAG's Agent-based Planning initiates with a Classification & Plan stage that distinguishes simple keyword queries from complex reasoning questions requiring decomposition. For intricate queries, such as comparing Transformer and RNN architectures, the system classifies the input and generates a tailored operator plan based on predefined BookIndex operators, thereby guiding effective retrieval and generation strategies rather than relying on basic keyword matching." + }, + { + "index_id": 83, + "parent_id": 80, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 83, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 3: The general workflow of agent-based retrieval in BookRAG, which contains agent-based planning, retrieval, and generation processes.", + "title_level": -1 + }, + "summary": "BookRAG's agent-based retrieval operates through a comprehensive workflow integrating three core processes: planning, retrieval, and generation, as illustrated in Figure 3." + }, + { + "index_id": 84, + "parent_id": 80, + "type": "NodeType.IMAGE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 84, + "pdf_para_block": { + "docling_label": "picture" + }, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-3.png", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/89'", + "footnote": "", + "table_body": null, + "content": "cref='#/texts/89'", + "title_level": -1 + }, + "summary": "The provided content does not contain any substantive information to summarize, as it consists solely of a placeholder indicating an image with a reference caption code and lacks any actual text, data, or descriptive details." + }, + { + "index_id": 85, + "parent_id": 80, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 85, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "2. Retrieval Process. Guided by the operator plan, the retrieval process executes Scent/Filter-based Retrieval . This stage navigates the BookIndex 𝐵 = ( 𝑇,𝐺, 𝑀 ) , either utilizing a scent-based retrieval principle (e.g., following relevant entities in 𝐺 ) to find information, or employing various filters (e.g., modal type) to refine the selection. After reasoning, BookRAG gets the retrieval set of highly relevant information blocks from the BookIndex.", + "title_level": -1 + }, + "summary": "The retrieval process executes Scent/Filter-based Retrieval guided by an operator plan to navigate the BookIndex, utilizing scent-based principles to follow relevant entities or applying filters like modal type to refine selections, ultimately yielding a set of highly relevant information blocks for reasoning." + }, + { + "index_id": 86, + "parent_id": 80, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 86, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "3. Generation Process. Finally, all retrieved information enters the generation stage for Analysis & Merging . This stage synthesizes these (often fragmented) pieces of evidence, performs final analysis, and formulates a coherent response.", + "title_level": -1 + }, + "summary": "The generation process synthesizes retrieved, often fragmented information to perform final analysis and formulate a coherent response." + }, + { + "index_id": 87, + "parent_id": 78, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 87, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "5.2 Agent-based Planning", + "title_level": 2 + }, + "summary": "Section 5.2 details BookRAG's agent-based planning mechanism, which dynamically constructs tailored retrieval pipelines by classifying queries into single-hop, multi-hop, or global aggregation categories and orchestrating a flexible sequence of Formulator, Selector, Reasoner, and Synthesizer operators to execute the optimal strategy." + }, + { + "index_id": 88, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 88, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "The planning stage is the core of BookRAG, designed to intelligently navigate our BookIndex 𝐵 = ( 𝑇,𝐺, 𝑀 ) . To support flexible retrieval, we define four types of operators: Formulator, Selector, Reasoner, and Synthesizer. These operators can be arbitrarily combined to form tailored execution pipelines, each with adjustable parameters. BookRAG dynamically configures and assembles these operators to adapt to the specific requirements of different query categories. This process involves two sequential steps: first, the agent performs", + "title_level": -1 + }, + "summary": "BookRAG's planning stage serves as its core mechanism for intelligently navigating the BookIndex by dynamically assembling flexible retrieval pipelines. It achieves this through four adaptable operators—Formulator, Selector, Reasoner, and Synthesizer—which can be arbitrarily combined and parameterized to tailor execution strategies for specific query categories." + }, + { + "index_id": 89, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 89, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Table 2: Three common query categories addressed in BookRAG.", + "title_level": -1 + }, + "summary": "BookRAG addresses three common query categories, as detailed in Table 2." + }, + { + "index_id": 90, + "parent_id": 87, + "type": "NodeType.TABLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 90, + "pdf_para_block": { + "docling_label": "table" + }, + "img_path": "", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/95'", + "footnote": "", + "table_body": "| Query Category | Description | Core Task | Example Query |\n|--------------------|-------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|\n| Single-hop | Queries with a single, distinct information target. | Scent-based Retrieval : Retrieve content related to a specific entity or section. | What is the definition of Information Scent? |\n| Multi-hop | Queries that require synthesizing information from multiple blocks, often by decomposing into sub-problems. | Decomposing & Merging : Decompose into sub-problems, retrieve for each, and synthesize the final answer. | How does Transformer differ from RNNs in handling long-range dependencies? |\n| Global Aggregation | Queries that require filtering across the entire document and performing calculations. | Filter & Aggregation : Apply filters across the document & perform aggregation operations (e.g., Count, Sum). | How many figures related to IFT are in Section 4? |", + "content": "cref='#/texts/95'", + "title_level": -1 + }, + "summary": "The document categorizes information retrieval queries into three distinct types based on their complexity and required processing: **Single-hop** queries target a specific entity using scent-based retrieval; **Multi-hop** queries demand decomposing complex questions into sub-problems, retrieving data for each, and synthesizing the final answer; and **Global Aggregation** queries involve filtering the entire document to perform calculations like counting or summing." + }, + { + "index_id": 91, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 5, + "page_path": null, + "pdf_id": 91, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "6", + "title_level": -1 + }, + "summary": "The provided input consists solely of the number \"6\" and contains no substantive information, context, or data to summarize." + }, + { + "index_id": 92, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 92, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "(a) Operator Set", + "title_level": -1 + }, + "summary": "The provided content is limited to the heading \"Operator Set\" and contains no substantive information, data, or context to summarize; therefore, no core conclusion or key points can be extracted." + }, + { + "index_id": 93, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 93, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 4: The BookRAG Operator Library and an Execution Example from MMLongBench dataset: (a) a visual depiction of the four operator types (Formulator, Selector, Reasoner, and Synthesizer) and (b) an execution trace for a 'Single-hop' query, demonstrating the agent-based planning and step-by-step operator execution.", + "title_level": -1 + }, + "summary": "Figure 4 illustrates the BookRAG Operator Library, which utilizes four distinct agent types—Formulator, Selector, Reasoner, and Synthesizer—to execute complex queries. Through an execution trace of a 'Single-hop' query from the MMLongBench dataset, the figure demonstrates how these operators collaborate in a step-by-step, agent-based planning process to retrieve and synthesize information." + }, + { + "index_id": 94, + "parent_id": 87, + "type": "NodeType.IMAGE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 94, + "pdf_para_block": { + "docling_label": "picture" + }, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-4.png", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/98'", + "footnote": "", + "table_body": null, + "content": "cref='#/texts/98'", + "title_level": -1 + }, + "summary": "The provided content consists solely of an image with a reference caption and lacks any descriptive text, data, or context necessary to extract a meaningful summary or core conclusion." + }, + { + "index_id": 95, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 95, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Query Classification to determine the appropriate solution strategy, then generates a specific Operator Plan .", + "title_level": -1 + }, + "summary": "The process begins by classifying the query to determine the optimal solution strategy, which then guides the generation of a specific operator plan." + }, + { + "index_id": 96, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 96, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Query Classification . To enable agent strategy selection, we focus on three representative query categories defined by their intrinsic complexity and operational demands (Table 2): Single-hop , Multi-hop , and Global Aggregation . This classification is crucial because each category requires a different solution strategy. For instance, a Single-hop query typically requires a single piece of information retrieved via a Scent-based Retrieval operation. In contrast, a Global Aggregation query often necessitates analyzing content under multiple filtering conditions, usually involving a sequence of Filter & Aggregation operations across various parts of the document. Furthermore, BookRAG is designed to be extensible, allowing for the resolution of a broader range of query types by integrating additional operators.", + "title_level": -1 + }, + "summary": "BookRAG employs a query classification system—categorizing requests as Single-hop, Multi-hop, or Global Aggregation based on their complexity—to dynamically select the most effective retrieval and processing strategies, such as Scent-based Retrieval or Filter & Aggregation sequences, while maintaining extensibility to support additional query types through new operators." + }, + { + "index_id": 97, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 97, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· BookIndex Operators . To execute the strategies identified by classification, we designed a set of operators ( O ) tailored for the BookIndex 𝐵 = ( 𝑇,𝐺, 𝑀 ) . These operators, visually depicted in Figure 4(a) and detailed in Table 3, define the set of operations the agent can employ for diverse query categories. We group them into four types, which we describe in sequence:", + "title_level": -1 + }, + "summary": "To execute strategies identified by classification, a set of tailored operators (O) was designed for the BookIndex (B = T, G, M). These operators, categorized into four distinct types and detailed in Table 3, define the specific operations an agent can perform across diverse query categories." + }, + { + "index_id": 98, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 98, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "❶ Formulator. These are LLM-based operators that prepare the query for execution. This category includes Decompose , which breaks a Complex query into a set of simpler, actionable sub-queries 𝑄 𝑠 . It also includes Extract , which employs an LLM to identify key entities 𝐸 𝑞 from the query text and link them to corresponding entities in the KG, 𝐺 : 𝑄 𝑠 = LLM ( 𝑃 𝐷𝑒𝑐 , 𝑞 ) = { 𝑞 , 𝑞 1 2 , . . . , 𝑞 𝑘 } (2) 𝐸 𝑞 = LLM ( 𝑃 𝐸𝑥𝑡 , 𝑞 ) = { 𝑒 1 , 𝑒 2 , . . . , 𝑒 𝑚 } (3)", + "title_level": -1 + }, + "summary": "Formulators are LLM-based operators designed to prepare complex queries for execution by transforming them into actionable components. This process primarily involves two functions: Decompose, which breaks a complex query into a set of simpler sub-queries, and Extract, which identifies key entities within the query text and links them to corresponding entities in the knowledge graph." + }, + { + "index_id": 99, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 99, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑄 𝑠 = LLM ( 𝑃 𝐷𝑒𝑐 , 𝑞 ) = { 𝑞 , 𝑞 1 2 , . . . , 𝑞 𝑘 } (2)", + "title_level": -1 + }, + "summary": "The equation defines a process where a Large Language Model (LLM) takes a prompt ($P_{Dec}$) and an initial query ($q$) as inputs to generate a set of $k$ related queries ($Q_s$), starting with the original query and followed by $k-1$ derived variations." + }, + { + "index_id": 100, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 100, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝐸 𝑞 = LLM ( 𝑃 𝐸𝑥𝑡 , 𝑞 ) = { 𝑒 1 , 𝑒 2 , . . . , 𝑒 𝑚 } (3)", + "title_level": -1 + }, + "summary": "The equation defines a process where a Large Language Model (LLM) takes an external prompt ($P_{Ext}$) and a query ($q$) as inputs to generate a set of $m$ distinct embeddings ($e_1$ through $e_m$), representing the model's encoded response to that specific query." + }, + { + "index_id": 101, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 101, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Here, 𝑞 is the original user query, while 𝑃 𝐷𝑒𝑐 and 𝑃 𝐸𝑥𝑡 represent the prompts used to guide the LLM for the decomposition and extraction tasks, respectively.", + "title_level": -1 + }, + "summary": "In this framework, the original user query ($q$) is processed using two distinct prompts: $P_{Dec}$ to guide the Large Language Model (LLM) in decomposing the task, and $P_{Ext}$ to direct it in extracting the necessary information." + }, + { + "index_id": 102, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 102, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "❷ Selector. These operators filter or select specific content ranges from the BookIndex. Filter_Modal and Filter_Range directly apply the explicit constraints 𝐶 (e.g., modal types, page ranges) generated during the plan. Operating on the Tree 𝑇 = ( 𝑁, 𝐸 𝑇 ) , these operators produce a filtered subset 𝑁 𝑓 where the predicate 𝐶 𝑛 ( ) holds true for each node: 𝑁 𝑓 = { 𝑛 ∈ 𝑁 | 𝐶 𝑛 ( )} (4)", + "title_level": -1 + }, + "summary": "The Selector operators (Filter_Modal and Filter_Range) filter the BookIndex by applying explicit constraints to a tree structure, generating a subset of nodes that satisfy specific criteria such as modal types or page ranges." + }, + { + "index_id": 103, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 103, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑁 𝑓 = { 𝑛 ∈ 𝑁 | 𝐶 𝑛 ( )} (4)", + "title_level": -1 + }, + "summary": "Equation (4) defines the set $N_f$ as the collection of all natural numbers $n$ that satisfy the condition $C_n$." + }, + { + "index_id": 104, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 104, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "In contrast, Select_by_Entity and Select_by_Section target contiguous document segments by retrieving subtrees rooted at specific section nodes. This process first identifies a set of target section nodes 𝑆 target ⊂ 𝑁 at a specified depth, where 𝑆 target consists of sections either linked to entities 𝐸 𝑞 via the GT-Link 𝑀 or selected by the LLM. It then retrieves all descendants of these targets to form the selected node set 𝑁 𝑠 : 𝑁 𝑠 = GLYPH<216> 𝑠 ∈ 𝑆 target Subtree ( 𝑠 ) (5)", + "title_level": -1 + }, + "summary": "Select_by_Entity and Select_by_Section condense documents by retrieving contiguous segments rooted at specific section nodes; this process first identifies target sections (either linked to entities via GT-Link or selected by an LLM) at a defined depth and then aggregates all their descendants to form the final selected content set." + }, + { + "index_id": 105, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 105, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑁 𝑠 = GLYPH<216> 𝑠 ∈ 𝑆 target Subtree ( 𝑠 ) (5)", + "title_level": -1 + }, + "summary": "The equation $N_s = \\sum_{s \\in S} \\text{target Subtree}(s)$ defines the total count $N_s$ as the sum of target subtrees across all elements $s$ within the set $S$." + }, + { + "index_id": 106, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 106, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "❸ Reasoner. These operators analyze and refine selected tree nodes. Graph_Reasoning performs multi-hop inference on a subgraph 𝐺 ' ( 𝑉 , 𝐸 ' ' ) (extracted from selected nodes 𝑁 𝑠 ) starting from entity 𝑒 . Starting from the retrieved entities, it computes an entity importance vector 𝐼 𝐺 ∈ R | 𝑉 ' | over the subgraph 𝐺 ' using the PageRank algorithm [20]. These entity scores are then mapped to the tree nodes via the GT-Link matrix 𝑀 to derive the final tree node importance scores vector 𝑆 𝐺 ∈ R | 𝑁 𝑠 | : 𝐼 𝐺 = PageRank ( 𝐺 , 𝑒 ' ) (6) 𝑆 𝐺 = 𝐼 𝐺 × 𝑀 (7)", + "title_level": -1 + }, + "summary": "The Reasoner operator refines selected tree nodes by performing multi-hop inference on a subgraph extracted from those nodes. It begins at a specific entity, calculates an entity importance vector using the PageRank algorithm, and then maps these scores to the tree nodes via the GT-Link matrix to generate a final vector of tree node importance scores." + }, + { + "index_id": 107, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 107, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝐼 𝐺 = PageRank ( 𝐺 , 𝑒 ' ) (6)", + "title_level": -1 + }, + "summary": "Equation (6) defines the PageRank of a graph $G$ as a function dependent on the graph structure and a specific parameter $e'$, denoted as $I_G = \\text{PageRank}(G, e')$." + }, + { + "index_id": 108, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 108, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑆 𝐺 = 𝐼 𝐺 × 𝑀 (7)", + "title_level": -1 + }, + "summary": "The total system gain ($S_G$) is calculated by multiplying the individual gain ($I_G$) by the multiplier ($M$), as defined by the equation $S_G = I_G \\times M$." + }, + { + "index_id": 109, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 109, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Text_Ranker evaluates the semantic relevance of the tree node's content to the query 𝑞 , assigning a relevance score 𝑆 𝑇 to each node. Skyline_Ranker employs the Skyline operator to filter nodes based on these multiple criteria (e.g., 𝑆 𝐺 and 𝑆 𝑇 ), retaining only those nodes that are not dominated by any others in terms of the specified scoring dimensions.", + "title_level": -1 + }, + "summary": "The system combines Text_Ranker, which assigns semantic relevance scores to tree nodes based on a query, with Skyline_Ranker, which filters these nodes by retaining only those that are not dominated by others across multiple scoring dimensions." + }, + { + "index_id": 110, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 6, + "page_path": null, + "pdf_id": 110, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "7", + "title_level": -1 + }, + "summary": "The provided input contains only the number \"7\" and lacks sufficient context, text, or data to generate a meaningful summary." + }, + { + "index_id": 111, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 111, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "❹ Synthesizer. These operators are responsible for content generation. Map performs analysis on specific retrieved information segments to generate partial responses. Reduce synthesizes a final coherent answer by aggregating information from multiple sources, such as partial answers or a collection of retrieved evidence.", + "title_level": -1 + }, + "summary": "Synthesizer operators drive content generation by analyzing retrieved information to produce partial responses (Map) and aggregating these partial answers or evidence from multiple sources to construct a final, coherent response (Reduce)." + }, + { + "index_id": 112, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 112, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Operator Plan . After classifying the query ( 𝑞 ) into its category ( 𝑐 ), the agent's final task is to generate an executable plan 𝑃 . This plan is a specific sequence of operators ⟨ 𝑜 , . . . , 𝑜 1 𝑛 ⟩ selected from our library O with parameters dynamically instantiated based on 𝑞 . This process is formulated as: 𝑃 = Agent Plan ( 𝑞, 𝑐, O) (8)", + "title_level": -1 + }, + "summary": "The agent's final task is to generate an executable plan by selecting a specific sequence of operators from a library and dynamically instantiating their parameters based on the classified query and its category." + }, + { + "index_id": 113, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 113, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑃 = Agent Plan ( 𝑞, 𝑐, O) (8)", + "title_level": -1 + }, + "summary": "The agent's plan ($P$) is a function determined by the query ($q$), context ($c$), and observations ($O$)." + }, + { + "index_id": 114, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 114, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "The plan follows a structured workflow tailored to each category:", + "title_level": -1 + }, + "summary": "The plan utilizes a structured workflow that is specifically tailored to each category." + }, + { + "index_id": 115, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 115, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Single-hop : The agent first attempts to Extract an entity. If successful, it executes a 'scent-based' selection; otherwise, it falls back to a section-based strategy. Both paths then proceed to standard reasoning and generation, denoted as 𝑃 std .", + "title_level": -1 + }, + "summary": "The single-hop strategy initiates with entity extraction, employing a scent-based selection upon success or a section-based fallback if extraction fails, before both paths converge on standard reasoning and generation." + }, + { + "index_id": 116, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 116, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑃 s = ( Extract success - - - - -→ Select_by_Entity → 𝑃 std Extract fail - -→ Select_by_Section → 𝑃 std (9)", + "title_level": -1 + }, + "summary": "The success rate ($P_s$) is determined by a conditional selection process: if extraction succeeds, the probability is calculated by selecting based on the entity ($P_{std}$); if extraction fails, the probability is calculated by selecting based on the section ($P_{std}$)." + }, + { + "index_id": 117, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 117, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑃 std = ( Graph ∥ Text ) → Skyline → Reduce (10)", + "title_level": -1 + }, + "summary": "The process condenses a combined graph and text input into a final result of 10 items by first generating a skyline and then applying a reduction step." + }, + { + "index_id": 118, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 118, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Complex : The agent first decomposes the problem, applies the Single-hop workflow 𝑃 s to each sub-problem, and finally synthesizes the results.", + "title_level": -1 + }, + "summary": "The Complex workflow operates by decomposing a problem into sub-problems, applying the Single-hop workflow to each individually, and then synthesizing the results to form the final solution." + }, + { + "index_id": 119, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 119, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑃 complex = Decompose → 𝑃 s → Map → Reduce (11)", + "title_level": -1 + }, + "summary": "The complex probability $P_{complex}$ is derived through a four-step process: decomposition into $P_s$, followed by mapping and reduction operations." + }, + { + "index_id": 120, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 120, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Global Aggregation : The workflow involves applying a sequence of filters followed by synthesis.", + "title_level": -1 + }, + "summary": "The workflow operates through global aggregation, which applies a sequence of filters followed by synthesis." + }, + { + "index_id": 121, + "parent_id": 87, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 121, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑃 global = GLYPH<214> ( Filter_Modal | Filter_Range ) → Map → Reduce (12)", + "title_level": -1 + }, + "summary": "The global process `P` executes a two-stage pipeline where a combined filter (either modal or range-based) is applied to data, followed by a Map operation and a Reduce operation with a parallelism factor of 12." + }, + { + "index_id": 122, + "parent_id": 87, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 122, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Here, the symbol ˛ denotes the nested composition of filters, applying either a modal or range filter at each step.", + "title_level": -1 + }, + "summary": "The symbol ˛ represents the nested composition of filters, where a modal or range filter is applied sequentially at each step." + }, + { + "index_id": 123, + "parent_id": 78, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 123, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "5.3 Structured Execution", + "title_level": 2 + }, + "summary": "This section details BookRAG's structured execution methodology, which applies Information Foraging Theory through a three-stage pipeline of Selector-based retrieval, Reasoner-driven sensemaking, and Synthesizer-based answer generation to efficiently minimize computational costs." + }, + { + "index_id": 124, + "parent_id": 123, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 124, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Following the planning stage, BookRAG executes the generated workflow 𝑃 . This execution phase embodies the cognitive principles of Information Foraging Theory (IFT), effectively translating abstract textual queries into concrete operations. Specifically, the Selector operators mirror the act of 'navigating to information patches,' narrowing the vast document space down to relevant scopes. Subsequently, the Reasoner operators perform 'sensemaking within patches,' where they analyze and refine the information within these focused scopes. Finally, the Synthesizer generates the answer based on the processed evidence. This design minimizes the cost of attention by ensuring computational resources are focused solely on high-value data patches.", + "title_level": -1 + }, + "summary": "BookRAG's execution phase applies Information Foraging Theory to efficiently answer queries by minimizing computational costs through a three-step process: the Selector navigates to relevant document patches, the Reasoner performs sensemaking within those focused scopes, and the Synthesizer generates the final answer based on the processed evidence." + }, + { + "index_id": 125, + "parent_id": 123, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 125, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Scent/Filter-based Retrieval. The execution begins by narrowing the scope. Aligning with IFT, Selector operators identify relevant 'patches' by following 'information scents' (e.g., key entities in question) or applying explicit filter constraints. This process reduces the full node set 𝑁 to a focused node subset 𝑁 𝑠 : 𝑁 𝑠 = Selector ( 𝑁, params sel ) (13)", + "title_level": -1 + }, + "summary": "Scent and filter-based retrieval initiates the process by narrowing the scope of a full node set to a focused subset through the use of Selector operators. These operators identify relevant data \"patches\" by following information scents, such as key entities within a question, or by applying explicit filter constraints, thereby reducing the search space before further processing." + }, + { + "index_id": 126, + "parent_id": 123, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 126, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑁 𝑠 = Selector ( 𝑁, params sel ) (13)", + "title_level": -1 + }, + "summary": "The notation $N_s = \\text{Selector}(N, \\text{params}_{\\text{sel}})$ defines a selector operation that generates a specific subset $N_s$ from a dataset $N$ by applying a selection function configured with a set of parameters." + }, + { + "index_id": 127, + "parent_id": 123, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 127, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "This pre-selection minimizes noise and ensures that subsequent reasoning is applied only to highly relevant contexts, optimizing the foraging cost. Subsequently, within this focused scope, Reasoner operators evaluate nodes using multiple dimensions, such as graph topology and semantic relevance. We then employ the Skyline_Ranker to get the final retrieval set. Unlike fixed top𝑘 retrieval, the Skyline operator retains the Pareto frontier of nodes, retaining nodes that are valuable in at least one dimension while discarding dominated ones: 𝑁 𝑅 = Skyline_Ranker ({ 𝑆 𝐺 ( 𝑛 , 𝑆 ) 𝑇 ( 𝑛 ) | 𝑛 ∈ 𝑁 𝑠 }) (14)", + "title_level": -1 + }, + "summary": "The proposed retrieval method optimizes efficiency by first pre-selecting highly relevant contexts to minimize noise, then applying multi-dimensional evaluation (graph topology and semantic relevance) via Reasoner operators. Finally, it utilizes a Skyline_Ranker to generate the final retrieval set by preserving the Pareto frontier of nodes—keeping those valuable in at least one dimension while discarding dominated ones—thereby outperforming fixed top-k retrieval." + }, + { + "index_id": 128, + "parent_id": 123, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 128, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑁 𝑅 = Skyline_Ranker ({ 𝑆 𝐺 ( 𝑛 , 𝑆 ) 𝑇 ( 𝑛 ) | 𝑛 ∈ 𝑁 𝑠 }) (14)", + "title_level": -1 + }, + "summary": "The Skyline Ranker ($N_R$) is defined as a ranking function that processes a set of candidate nodes ($n \\in N_s$) by evaluating their skyline score $SG(n, S)$ and time cost $T(n)$ to determine the optimal selection order." + }, + { + "index_id": 129, + "parent_id": 123, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 129, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Analysis & Merging Generation. In the final stage, the Synthesizer operator generates the coherent answer by aggregating the refined evidence: 𝐴 = Synthesizer ( 𝑞, 𝑁 𝑅 ) (15)", + "title_level": -1 + }, + "summary": "In the final stage of the process, the Synthesizer operator generates a coherent answer by aggregating refined evidence, mathematically represented as $A = \\text{Synthesizer}(q, N_R)$." + }, + { + "index_id": 130, + "parent_id": 123, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 130, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝐴 = Synthesizer ( 𝑞, 𝑁 𝑅 ) (15)", + "title_level": -1 + }, + "summary": "The equation $A = \\text{Synthesizer}(q, N_R)$ defines $A$ as the output generated by a Synthesizer function that takes a query $q$ and a set of $N_R$ elements as inputs." + }, + { + "index_id": 131, + "parent_id": 123, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 131, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Table 3: Operators utilized in our BookRAG, categorized by their function.", + "title_level": -1 + }, + "summary": "BookRAG employs a diverse set of operators categorized by their specific functional roles to facilitate its operations." + }, + { + "index_id": 132, + "parent_id": 123, + "type": "NodeType.TABLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 132, + "pdf_para_block": { + "docling_label": "table" + }, + "img_path": "", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/136'", + "footnote": "", + "table_body": "| Operator | Type | Description | Parameters |\n|-------------------------------|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------|\n| Decompose | Formulator Formulator | Decompose a complex query into simpler, actionable sub-queries. Identify and extract key entities from the query (links to 𝐺 ). | (Self-contained) (Self-contained) |\n| Extract Filter_Modal | Selector | Filter retrieved nodes by their modal type (e.g., Table, Figure). | modal_type: str |\n| Filter_Range | Selector | Filter nodes based on a specified range (e.g., pages, section). | range: (start, end) |\n| Select_by_Entity | Selector | Selects all tree nodes ( 𝑁 ) in sections linked to a given entity ( 𝑉 ). | entity_name: str |\n| Select_by_Section | Selector | Uses an LLM to select relevant sections and selects all tree nodes ( 𝑁 ) within them. | query: str, sections: List[str] |\n| Graph_Reasoning | Reasoner | Performs multi-hop reasoning on subgraph ( 𝐺 ' ) and score tree nodes ( 𝑁 ) using graph importance and GT-links. Rerank retrieved tree nodes ( 𝑁 ) based on the relevance. | start_entity: str, subgraph: 𝐺 ' query: str |\n| Text_Reasoning Skyline_Ranker | Reasoner Reasoner | | criteria: List[str] |\n| | | Rerank nodes based on multiple criteria. | (Input: List[str]) |\n| Map | Synthesizer | Uses partially retrieved information to generate a partial answer. | |\n| Reduce | Synthesizer | Synthesizes the final answer from partial information or all sub-problem answers. | (Input: List[str]) |", + "content": "cref='#/texts/136'", + "title_level": -1 + }, + "summary": "The provided table defines a structured query processing framework comprising six functional categories: **Formulators** decompose complex queries into actionable sub-queries; **Selectors** filter or retrieve specific nodes based on modal types, page ranges, entities, or LLM-assisted section selection; **Reasoners** perform multi-hop graph analysis and multi-criteria ranking to score and reorder results; and **Synthesizers** generate partial answers and combine them into a final response. This pipeline systematically transforms raw queries into refined, synthesized answers through entity extraction, targeted filtering, logical reasoning, and information aggregation." + }, + { + "index_id": 133, + "parent_id": 123, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 7, + "page_path": null, + "pdf_id": 133, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "8", + "title_level": -1 + }, + "summary": "The provided content consists solely of the number \"8\" and lacks sufficient context, narrative, or data to form a meaningful summary or draw any conclusions." + }, + { + "index_id": 134, + "parent_id": 123, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 134, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "The Map operator performs fine-grained analysis on individual evidence blocks or sub-problems (from Decompose ) to generate intermediate insights. The Reduce operator then aggregates these partial results, such as answers to decomposed sub-queries or statistical counts from a global filter, to construct the final response. This separation ensures that the system can handle both detailed content extraction and high-level reasoning synthesis effectively.", + "title_level": -1 + }, + "summary": "The Map and Reduce operators function as a complementary pair to ensure effective system performance: the Map operator conducts fine-grained analysis on individual evidence blocks to generate intermediate insights, while the Reduce operator aggregates these partial results to synthesize the final response, thereby enabling the system to seamlessly handle both detailed content extraction and high-level reasoning." + }, + { + "index_id": 135, + "parent_id": 123, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 135, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "To illustrate this end-to-end process, Figure 4(b) presents an execution trace for a 'Single-hop' query: 'What is the type of car in the Ranking Prompt example?'. In the planning phase, the agent classifies the query and generates a specific workflow. Subsequently, it identifies key entities (e.g., 'car') via Extract , retrieves relevant nodes via Select_by_Entity , refines them through reasoning and Skyline filtering, and finally synthesizes the answer using Reduce .", + "title_level": -1 + }, + "summary": "Figure 4(b) illustrates an end-to-end execution trace for a single-hop query regarding car types, where an agent classifies the request to generate a workflow that extracts key entities, retrieves and refines relevant nodes through reasoning and Skyline filtering, and finally synthesizes the answer." + }, + { + "index_id": 136, + "parent_id": 1, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 136, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "6 EXPERIMENTS", + "title_level": 1 + }, + "summary": "Section 6 presents a comprehensive experimental evaluation of BookRAG, detailing the setup, benchmark results, and ablation studies that demonstrate its state-of-the-art performance in document question-answering tasks." + }, + { + "index_id": 137, + "parent_id": 136, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 137, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "In our experiments, we evaluate BookRAG against several strong baseline methods, with an in-depth comparison of their efficiency and accuracy on document QA tasks.", + "title_level": -1 + }, + "summary": "BookRAG was evaluated against strong baseline methods, demonstrating a detailed comparison of its efficiency and accuracy in document question-answering tasks." + }, + { + "index_id": 138, + "parent_id": 136, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 138, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "6.1 Setup", + "title_level": 2 + }, + "summary": "Section 6.1 outlines the experimental setup by defining the benchmark datasets and evaluation metrics, describing the baseline RAG architectures, and specifying the unified model configurations and implementation details used to ensure fair performance comparison." + }, + { + "index_id": 139, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 139, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Table 4: Datasets used in our experiments. EM and F1 denote Exact Match and F1-score, respectively.", + "title_level": -1 + }, + "summary": "Table 4 lists the datasets employed in the experiments, utilizing Exact Match (EM) and F1-score as the primary evaluation metrics." + }, + { + "index_id": 140, + "parent_id": 138, + "type": "NodeType.TABLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 140, + "pdf_para_block": { + "docling_label": "table" + }, + "img_path": "", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/143'", + "footnote": "", + "table_body": "| Dataset | MMLongBench | M3DocVQA | Qasper |\n|-------------|---------------|------------|--------------|\n| Questions | 669 | 633 | 640 |\n| Documents | 85 | 500 | 192 |\n| Avg. Pages | 42.16 | 8.52 | 10.95 |\n| Avg. Images | 25.92 | 3.51 | 3.43 |\n| Tokens | 2,816,155 | 3,553,774 | 2,265,349 |\n| Metrics | EM, F1 | EM, F1 | Accuracy, F1 |", + "content": "cref='#/texts/143'", + "title_level": -1 + }, + "summary": "The table summarizes three long-document benchmark datasets—MMLongBench, M3DocVQA, and Qasper—highlighting their distinct characteristics in scale and evaluation metrics. M3DocVQA contains the highest number of documents (500) and tokens (3.55 million) but the fewest pages per document (8.52), while MMLongBench features the longest average document length (42.16 pages) and the highest image density (25.92 images per document). All three datasets contain over 600 questions each, with MMLongBench and M3DocVQA evaluated using Exact Match (EM) and F1 scores, whereas Qasper utilizes Accuracy and F1." + }, + { + "index_id": 141, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 141, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Datasets & Question Synthesis. We use three widely adopted benchmarking datasets for complex document QA tasks: MMLongBench [33], M3DocVQA [11], and Qasper [14]. MMLongBench is a comprehensive benchmark designed to evaluate QA capabilities on long-form documents, covering diverse categories such as guidebooks, financial reports, and industry files. M3DocVQA is an open-domain benchmark designed to test RAG systems on a diverse collection of HTML-type documents sourced from Wikipedia pages 1 . Qasper is a QA dataset focused on scientific papers, where questions require retrieving evidence from the entire document. We filtered the datasets to remove documents with low clarity or incoherent structures. To address the scarcity of global-level questions in the original benchmarks, we synthesize additional QA pairs by having an LLM generate global questions from selected document elements (e.g., tables or figures). These questions are then answered and meticulously refined by human annotators via an outsourcing process, with this additional QA pairs constituting less than 20% of our final QA pairs. The statistics of these datasets are presented in Table 4.", + "title_level": -1 + }, + "summary": "To evaluate complex document question answering, the study utilizes three benchmark datasets—MMLongBench for long-form documents, M3DocVQA for open-domain HTML content, and Qasper for scientific papers—after filtering for clarity and synthesizing additional global-level questions via LLMs and human refinement to address data scarcity." + }, + { + "index_id": 142, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 142, + "pdf_para_block": { + "docling_label": "footnote" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "1 https://www.wikipedia.org/", + "title_level": -1 + }, + "summary": "Wikipedia is a free, open-source online encyclopedia that allows anyone to edit its content, serving as a vast, collaboratively maintained repository of knowledge across countless topics." + }, + { + "index_id": 143, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 143, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "9", + "title_level": -1 + }, + "summary": "The provided input contains only the number \"9\" and lacks sufficient context, data, or descriptive text to generate a meaningful summary or identify a core conclusion." + }, + { + "index_id": 144, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 144, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Metrics. Weadheretotheofficial metrics specified by each dataset for QA. Our primary evaluation relies on Exact Match (EM), accuracy, and token-based F1-score. To assess efficiency, we also measure time cost and token usage during the response phase. Additionally, for methods including PDF parsing, we also evaluate retrieval recall. To establish the ground truth for this, we manually label the specific PDF blocks (e.g., texts, titles, tables, images, and formulas) required to answer each question. This labeling process is guided by the metadata of ground-truth evidence provided in each dataset; we filter candidate blocks using the given modality (all datasets), page numbers (MMLongBench), and evidence statements (Qasper). Any blocks that remained non-unique after this filtering process are manually annotated. In cases where a PDF parsing error made the ground-truth item unavailable, the retrieval recall for that query is recorded as 0.", + "title_level": -1 + }, + "summary": "Evaluation relies on standard QA metrics (Exact Match, accuracy, and token-based F1-score) alongside efficiency measures (time cost and token usage), with retrieval recall specifically assessed for PDF parsing methods. Ground truth for recall is established by manually labeling essential PDF blocks (text, tables, images, etc.) using dataset metadata and filtering criteria, with manual annotation applied to non-unique cases; any retrieval failure due to parsing errors is recorded as a recall score of zero." + }, + { + "index_id": 145, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 145, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Baselines. Our experiments consider three model configurations:", + "title_level": -1 + }, + "summary": "The experiments evaluate three distinct model configurations to establish performance baselines." + }, + { + "index_id": 146, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 146, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Conventional RAG: These methods are the most common pipeline for document analysis, where the raw text is first extracted and then chunked into segments of a specified size. We select strong and widely used retrieval models: BM25 [44] and Vanilla RAG. We also implement Layout+Vanilla, a variant that uses document layout analysis for semantic chunking.", + "title_level": -1 + }, + "summary": "Conventional Retrieval-Augmented Generation (RAG) pipelines typically extract raw text, segment it into fixed-size chunks, and employ standard retrieval models like BM25 or Vanilla RAG, with a specialized variant known as Layout+Vanilla enhancing this process by utilizing document layout analysis for more effective semantic chunking." + }, + { + "index_id": 147, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 147, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Graph-based RAG: These methods first extract textual content from documents and then leverage graph data during retrieval. We select RAPTOR [45] and GraphRAG [16]. Specifically, GraphRAG has two versions: GraphRAG-Global and GraphRAG-Local, which employ global and local search methods, respectively.", + "title_level": -1 + }, + "summary": "Graph-based Retrieval-Augmented Generation (RAG) methods enhance document retrieval by first extracting text and then utilizing graph structures, with prominent examples including RAPTOR and two variants of GraphRAG: GraphRAG-Global, which employs global search, and GraphRAG-Local, which utilizes local search." + }, + { + "index_id": 148, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 148, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· LayoutsegmentedRAG: This category encompasses methods that utilize layout analysis to segment document content into discrete structural units. We include: MM-Vanilla, which utilizes multi-modal embeddings for visual and textual content; a tree-based method inspired by PageIndex [39], denoted as TreeTraverse, where an LLM navigates the document's tree structure; DocETL [47], a declarative system for complex document processing; and GraphRanker, a graphbased method extended from HippoRAG [19] that applies Personalized PageRank [20] to rank the relevant nodes.", + "title_level": -1 + }, + "summary": "LayoutsegmentedRAG is a category of retrieval-augmented generation methods that leverage layout analysis to divide documents into discrete structural units for processing. Key approaches within this category include MM-Vanilla, which uses multi-modal embeddings for visual and textual data; TreeTraverse, an LLM-driven method navigating document tree structures; DocETL, a declarative system for complex processing; and GraphRanker, which extends HippoRAG by applying Personalized PageRank to rank relevant nodes." + }, + { + "index_id": 149, + "parent_id": 138, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 149, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Implementation details. For a fair comparison, both BookRAG and all baseline methods are powered by a unified set of state-of-theart (SOTA) and widely adopted backbone models from the Qwen family [4, 60, 63, 64]. We employ MinerU [52] for robust document layout parsing. We set the threshold of gradient 𝑔 as 0 6, and more . details are provided in the appendix of our technical report [57]. Our source code, prompts, and detailed configurations are available at github.com/sam234990/BookRAG.", + "title_level": -1 + }, + "summary": "To ensure a fair comparison, BookRAG and all baseline methods utilize unified Qwen family backbone models and MinerU for document layout parsing, with a gradient threshold set at 0.6; full implementation details, source code, and prompts are publicly available on GitHub." + }, + { + "index_id": 150, + "parent_id": 136, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 150, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "6.2 Overall results", + "title_level": 2 + }, + "summary": "Section 6.2 presents the overall results demonstrating that BookRAG achieves state-of-the-art performance in complex question answering, retrieval effectiveness, and query efficiency across multiple benchmarks by synergizing its unified Tree-Graph BookIndex with agent-based planning." + }, + { + "index_id": 151, + "parent_id": 150, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 151, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "In this section, we present a comprehensive evaluation of BookRAG, analyzing its complex QA performance, retrieval effectiveness, and query efficiency compared to state-of-the-art baselines.", + "title_level": -1 + }, + "summary": "BookRAG demonstrates superior performance over state-of-the-art baselines across complex question answering, retrieval effectiveness, and query efficiency." + }, + { + "index_id": 152, + "parent_id": 150, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 8, + "page_path": null, + "pdf_id": 152, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· QA Performance of BookRAG . We compare the QA performance of BookRAG against three categories of baselines, as shown in Table 5. The results indicate that BookRAG achieves state-of-the-art performance across all datasets, substantially outperforming the top-performing baseline by 18.0% in Exact Match on M3DocVQA. Layout + Vanilla consistently outperforms Vanilla RAG, confirming that layout parsing preserves essential structural information for better retrieval. Besides, the suboptimal results of Tree-Traverse and GraphRanker highlight the limitations of relying solely on hierarchical navigation or graph-based reasoning, which often miss cross-sectional context or drift into irrelevant scopes. In contrast, BookRAG's superiority stems from the synergy of its unified Tree-Graph BookIndex and Agent-based Planning. By effectively classifying queries and configuring optimal workflows, our BookRAG overcomes limitations of context fragmentation and static query workflow within existing baselines, ensuring precise evidence retrieval and accurate generation.", + "title_level": -1 + }, + "summary": "BookRAG achieves state-of-the-art QA performance across all tested datasets, outperforming the top baseline by 18.0% in Exact Match on M3DocVQA. This superiority is driven by its unified Tree-Graph BookIndex and Agent-based Planning, which synergize to classify queries and configure optimal workflows, thereby overcoming the context fragmentation and static limitations of existing methods. While layout parsing proves essential for preserving structural information compared to vanilla RAG, approaches relying solely on hierarchical navigation or graph-based reasoning fall short due to missed cross-sectional context. Ultimately, BookRAG ensures precise evidence retrieval and accurate generation by effectively integrating these advanced indexing and planning capabilities." + }, + { + "index_id": 153, + "parent_id": 150, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 9, + "page_path": null, + "pdf_id": 153, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Table 5: Performance comparison of different methods across various datasets for solving complex document QA tasks. The best and second-best results are marked in bold and underlined, respectively.", + "title_level": -1 + }, + "summary": "Table 5 presents a performance comparison of various methods on complex document QA tasks across multiple datasets, highlighting the top two performers in each category with bold and underlined formatting to indicate the best and second-best results, respectively." + }, + { + "index_id": 154, + "parent_id": 150, + "type": "NodeType.TABLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 9, + "page_path": null, + "pdf_id": 154, + "pdf_para_block": { + "docling_label": "table" + }, + "img_path": "", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/156'", + "footnote": "", + "table_body": "| Baseline Type | Method | MMLongBench | MMLongBench | M3DocVQA | M3DocVQA | Qasper | Qasper |\n|----------------------|------------------|---------------|---------------|---------------|------------|------------|------------|\n| | Method | (Exact Match) | (F1-score) | (Exact Match) | (F1-score) | (Accuracy) | (F1-score) |\n| Conventional RAG | BM25 | 18.3 | 20.2 | 34.6 | 37.8 | 38.1 | 42.5 |\n| Conventional RAG | Vanilla RAG | 16.5 | 18.0 | 36.5 | 40.2 | 40.6 | 44.4 |\n| | Layout + Vanilla | 18.1 | 19.8 | 36.9 | 40.2 | 40.7 | 44.6 |\n| Graph-based RAG | RAPTOR | 21.3 | 21.8 | 34.3 | 37.3 | 39.4 | 44.1 |\n| Graph-based RAG | GraphRAG-Local | 7.7 | 8.5 | 23.7 | 25.6 | 35.9 | 39.2 |\n| Graph-based RAG | GraphRAG-Global | 5.3 | 5.6 | 20.2 | 22.0 | 24.0 | 24.1 |\n| Layout segmented RAG | MM-Vanilla | 6.8 | 8.4 | 25.1 | 27.7 | 27.9 | 29.3 |\n| Layout segmented RAG | Tree-Traverse | 12.7 | 14.4 | 33.3 | 36.2 | 27.3 | 32.1 |\n| Layout segmented RAG | GraphRanker | 21.2 | 22.7 | 43.0 | 47.8 | 32.9 | 37.6 |\n| Layout segmented RAG | DocETL | 27.5 | 28.6 | 40.9 | 43.3 | 42.3 | 50.4 |\n| Our proposed | BookRAG | 43.8 | 44.9 | 61.0 | 66.2 | 55.2 | 61.1 |", + "content": "cref='#/texts/156'", + "title_level": -1 + }, + "summary": "BookRAG, the proposed method, significantly outperforms all conventional, graph-based, and layout-segmented RAG baselines across three long-document benchmarks (MMLongBench, M3DocVQA, and Qasper). While traditional approaches like BM25 and Vanilla RAG achieve modest scores (e.g., 18.3–40.6 accuracy/F1), and graph-based methods often underperform, BookRAG demonstrates superior capability in handling complex document retrieval and reasoning. Specifically, BookRAG achieves a 43.8 Exact Match and 44.9 F1-score on MMLongBench, 61.0 Exact Match and 66.2 F1-score on M3DocVQA, and 55.2 Accuracy and 61.1 F1-score on Qasper, marking a substantial improvement over the next best performer, DocETL, which trails by roughly 16–20 percentage points in most metrics." + }, + { + "index_id": 155, + "parent_id": 150, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 9, + "page_path": null, + "pdf_id": 155, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Table 6: Retrieval recall comparison among layout-based methods. The best and second-best results are marked in bold and underlined, respectively.", + "title_level": -1 + }, + "summary": "Layout-based retrieval methods exhibit varying performance levels, with specific approaches achieving the highest recall rates (marked in bold) and the next best results (marked in underlined) as detailed in the comparative analysis." + }, + { + "index_id": 156, + "parent_id": 150, + "type": "NodeType.TABLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 9, + "page_path": null, + "pdf_id": 156, + "pdf_para_block": { + "docling_label": "table" + }, + "img_path": "", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/158'", + "footnote": "", + "table_body": "| Method | MMLongBench | M3DocVQA | Qasper |\n|------------------|---------------|------------|----------|\n| Layout + Vanilla | 26.3 | 33.8 | 33.5 |\n| MM-Vanilla | 7.5 | 19.7 | 14.9 |\n| Tree-Traverse | 11.2 | 19.5 | 14.5 |\n| GraphRanker | 26.4 | 44.5 | 28.6 |\n| BookRAG | 57.6 | 71.2 | 63.5 |", + "content": "cref='#/texts/158'", + "title_level": -1 + }, + "summary": "BookRAG significantly outperforms all other evaluated methods across the MMLongBench, M3DocVQA, and Qasper benchmarks, achieving the highest scores of 57.6, 71.2, and 63.5 respectively. In contrast, baseline approaches like MM-Vanilla and Tree-Traverse yield substantially lower performance, while the Layout + Vanilla and GraphRanker methods show moderate results that remain well below BookRAG's capabilities." + }, + { + "index_id": 157, + "parent_id": 150, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 9, + "page_path": null, + "pdf_id": 157, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Retrieval performance of BookRAG. To validate our retrieval design, we evaluate the retrieval recall of BookRAG against other layout-based baselines on the ground-truth layout blocks. The experimental results demonstrate that BookRAG achieves the highest recall across all datasets, notably reaching 71.2% on M3DocVQA and significantly outperforming the next best baseline (GraphRanker, max44.5%). This performance advantage stems from our IFT-inspired Selector → Reasoner workflow: the Agent-based Planning first classifies the query, enabling the Selector to narrow the search to a precise information patch , followed by the Reasoner's analysis. Crucially, after the Skyline_Ranker process, the average number of retained nodes is 9.87, 6.86, and 8.6 across the three datasets, which is comparable to the standard top𝑘 ( 𝑘 = 10) setting, ensuring high-quality retrieval without inflating the candidate size.", + "title_level": -1 + }, + "summary": "BookRAG achieves superior retrieval performance compared to layout-based baselines, reaching a record 71.2% recall on the M3DocVQA dataset—significantly outperforming the next best method (GraphRanker) by over 26 percentage points. This success is driven by an IFT-inspired workflow where an Agent-based Planning module classifies queries to guide a Selector in pinpointing precise information patches, followed by analysis from a Reasoner. Furthermore, the system maintains high-quality retrieval efficiency by retaining an average of fewer than 10 nodes per query (9.87, 6.86, and 8.6 across datasets), matching standard top-10 settings without inflating candidate sizes." + }, + { + "index_id": 158, + "parent_id": 150, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 9, + "page_path": null, + "pdf_id": 158, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 5: Comparison of query efficiency.", + "title_level": -1 + }, + "summary": "Figure 5 illustrates a comparative analysis of query efficiency, highlighting performance differences across the evaluated methods." + }, + { + "index_id": 159, + "parent_id": 150, + "type": "NodeType.IMAGE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 9, + "page_path": null, + "pdf_id": 159, + "pdf_para_block": { + "docling_label": "picture" + }, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-5.png", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/161'", + "footnote": "", + "table_body": null, + "content": "cref='#/texts/161'", + "title_level": -1 + }, + "summary": "The provided content does not contain any substantive information to summarize, as it consists solely of a placeholder indicating an image with a technical reference code and lacks any descriptive text, data, or context." + }, + { + "index_id": 160, + "parent_id": 150, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 9, + "page_path": null, + "pdf_id": 160, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Efficiency of BookRAG. Wefurther evaluate the efficiency in terms of query time and token consumption, as illustrated in Figure 5. Overall, BookRAG maintains time and token costs comparable to existing Graph-based RAG methods. While purely text-based RAG approaches generally exhibit lower latency and token usage due to the absence of VLM processing for images, BookRAG maintains a balanced efficiency among multi-modal methods. In terms of token usage, BookRAG reduces consumption by an order of magnitude compared to the strongest baseline, DocETL. Notably, on the MMLongBench dataset, DocETL consumes over 53 million tokens, whereas BookRAG requires less than 5 million. Regarding the query latency, our method also achieves a speedup of up to 2 × compared to DocETL.", + "title_level": -1 + }, + "summary": "BookRAG achieves a balanced efficiency among multi-modal retrieval methods, maintaining query time and token costs comparable to existing Graph-based RAG approaches while significantly outperforming the strongest baseline, DocETL. Specifically, BookRAG reduces token consumption by an order of magnitude (using less than 5 million tokens versus over 53 million on the MMLongBench dataset) and accelerates query latency by up to 2×, despite the inherent overhead of processing images with Vision-Language Models." + }, + { + "index_id": 161, + "parent_id": 150, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 9, + "page_path": null, + "pdf_id": 161, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "10", + "title_level": -1 + }, + "summary": "The provided input consists solely of the number \"10\" and lacks sufficient context, text, or data to generate a meaningful summary or identify a core subject." + }, + { + "index_id": 162, + "parent_id": 136, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 162, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "6.3 Detailed Analysis", + "title_level": 2 + }, + "summary": "Section 6.3 presents a comprehensive evaluation of the BookRAG system through ablation studies, gradient-based entity resolution analysis, query-type performance comparisons, and error analysis to validate the necessity of each component and demonstrate the architecture's superiority over its variants." + }, + { + "index_id": 163, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 163, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "In this section, we provide a more in-depth examination of our BookRAG. We first conduct an ablation study to validate the contribution of each component, followed by an experiment on the impact of gradient-based ER and QA performance across different query types. Furthermore, we perform a comprehensive error analysis, compare the effectiveness of our entity resolution method, and present a case study.", + "title_level": -1 + }, + "summary": "The section presents a comprehensive evaluation of BookRAG, validating its individual components through an ablation study, analyzing the effects of gradient-based entity resolution and question answering performance across various query types, and supporting these findings with a detailed error analysis, a comparison of entity resolution methods, and a case study." + }, + { + "index_id": 164, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 164, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Ablation study. To evaluate the contribution of each core component in BookRAG, we design several variants by removing specific components:", + "title_level": -1 + }, + "summary": "An ablation study was conducted to evaluate the individual contribution of each core component within the BookRAG system by systematically removing specific elements to assess their impact." + }, + { + "index_id": 165, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 165, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· w/o Gradient ER: Replaces the gradient-based entity resolution with a Basic ER by merging the same-name entities.", + "title_level": -1 + }, + "summary": "The \"w/o Gradient ER\" variant simplifies entity resolution by replacing the gradient-based approach with a basic method that merges entities solely based on identical names." + }, + { + "index_id": 166, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 166, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· w/o Planning: Removes the Agent-based Planning, defaulting to a static, standard workflow for all queries.", + "title_level": -1 + }, + "summary": "Disabling planning removes the Agent-based approach, causing the system to revert to a static, standard workflow for all queries." + }, + { + "index_id": 167, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 167, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· w/o Selector : Removes the Selector operators, forcing Reasoners to score all candidate nodes.", + "title_level": -1 + }, + "summary": "Removing Selector operators forces Reasoners to score all candidate nodes rather than filtering them first." + }, + { + "index_id": 168, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 168, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· w/o Graph_Reasoning : Removes the Graph_Reasoning operator. Consequently, the Skyline_Ranker is also disabled as scoring becomes single-dimensional.", + "title_level": -1 + }, + "summary": "Removing the Graph_Reasoning operator disables the Skyline_Ranker, forcing scoring to become single-dimensional." + }, + { + "index_id": 169, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 169, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· w/o Text_Reasoning : Removes the Text_Reasoning operator. Similarly, the Skyline_Ranker is disabled, relying solely on graph-based scores.", + "title_level": -1 + }, + "summary": "Disabling the Text_Reasoning operator and the Skyline_Ranker forces the system to rely exclusively on graph-based scores for ranking." + }, + { + "index_id": 170, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 170, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Table 7: Comparing the QA performance of different variants of BookRAG. EM and F1 denote Exact Match and F1-score, respectively.", + "title_level": -1 + }, + "summary": "BookRAG variants demonstrate varying QA performance, with results evaluated using Exact Match (EM) and F1-score metrics as detailed in Table 7." + }, + { + "index_id": 171, + "parent_id": 162, + "type": "NodeType.TABLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 171, + "pdf_para_block": { + "docling_label": "table" + }, + "img_path": "", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/220'", + "footnote": "", + "table_body": "| Method variants | MMLongBench | MMLongBench | Qasper | Qasper |\n|---------------------|---------------|---------------|----------|----------|\n| | EM | F1 | Accuracy | F1 |\n| BookRAG (Full) | 43.8 | 44.9 | 55.2 | 61.1 |\n| w/o gradient ER | 40.1 | 42.8 | 48.9 | 57.3 |\n| w/o Planning | 30.8 | 33.2 | 40.9 | 48.5 |\n| w/o Selector | 42.5 | 43.1 | 52.5 | 59.1 |\n| w/o Graph_Reasoning | 39.8 | 41.5 | 51.4 | 58.4 |\n| w/o Text_Reasoning | 39.0 | 40.3 | 47.2 | 52.5 |", + "content": "cref='#/texts/220'", + "title_level": -1 + }, + "summary": "The BookRAG (Full) method achieves the highest performance across all evaluated metrics on the MMLongBench and Qasper datasets, demonstrating that its complete architecture is superior to any of its component variants. Specifically, removing the \"Planning\" module causes the most significant performance degradation (dropping MMLongBench EM to 30.8 and Qasper Accuracy to 40.9), indicating it is the most critical component for the system's effectiveness. While other modules like Gradient ER, Selector, Graph Reasoning, and Text Reasoning also contribute positively to the model's accuracy and F1 scores, their individual removal results in less severe performance drops compared to the absence of planning." + }, + { + "index_id": 172, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 172, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "The first variant evaluates the impact of KG quality on retrieval performance. The second and third variants assess the necessity of our Agent-based Planning and IFT-inspired selection mechanism, respectively. Finally, the last two variants validate the effectiveness of our multi-dimensional reasoning and dynamic Skyline filtering strategy. As shown in Table 7, the performance degradation across all variants confirms the essential role of each module in BookRAG. Specifically, the performance drop in the w/o Gradient ER variant highlights the critical role of a high-quality, connectivity-rich KG in supporting effective reasoning. Removing the Planning mechanism results in the most significant performance loss, confirming that a static workflow is insufficient for handling diverse types of queries. The w/o Selector variant, while maintaining competitive accuracy, incurs a prohibitive computational cost ( > 2 × tokens on Qasper), validating the efficiency of our IFT-inspired \"narrow-then-reason\" strategy.", + "title_level": -1 + }, + "summary": "The ablation study confirms that every module in BookRAG is essential for optimal performance, as removing any component leads to significant degradation. Specifically, a high-quality Knowledge Graph is critical for effective reasoning, while the Agent-based Planning mechanism is indispensable for handling diverse queries, as static workflows cause the most severe performance drops. Additionally, the IFT-inspired selection strategy proves vital for efficiency, maintaining competitive accuracy while avoiding the prohibitive computational costs associated with its absence." + }, + { + "index_id": 173, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 173, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "11", + "title_level": -1 + }, + "summary": "The provided input consists solely of the number \"11\" and contains no substantive content, context, or data to summarize." + }, + { + "index_id": 174, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 174, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 6: Comparison of graph statistics. Values are normalized to the Basic setting (Baseline=1.0). Absolute values for Basic are annotated. Note that density values are abbreviated (e.g., 3.6E-3 denotes 3 6 . × 10 -3 ).", + "title_level": -1 + }, + "summary": "Figure 6 presents a comparative analysis of graph statistics across different settings, using the \"Basic\" configuration as a normalized baseline of 1.0. The data highlights relative performance changes, with absolute values for the Basic setting provided for reference, while density metrics are expressed in scientific notation (e.g., 3.6E-3) to accommodate small magnitudes." + }, + { + "index_id": 175, + "parent_id": 162, + "type": "NodeType.IMAGE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 175, + "pdf_para_block": { + "docling_label": "picture" + }, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-6.png", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/224'", + "footnote": "", + "table_body": null, + "content": "cref='#/texts/224'", + "title_level": -1 + }, + "summary": "The provided content does not contain sufficient information to generate a summary, as it consists only of a placeholder indicating an image is present along with a reference code, without any actual text, data, or descriptive caption to analyze." + }, + { + "index_id": 176, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 176, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Impact of Gradient-based Entity Resolution. To evaluate the quality of our constructed KG, we compare the graph statistics of our Gradient-based ER against a Basic KG construction. The Basic setting employs simple exact name matching for entity merging, which is standard practice in many graph-based methods. Figure 6 presents the comparative results, normalizing the metrics (Entity count, Density, Diameter of the Largest Connected Component, and Number of Connected Components) against the Basic baseline. The results demonstrate that our Gradient-based ER significantly optimizes KG. Specifically, it reduces the number of entities (by 12%) while substantially boosting graph density (by over 20% across datasets). This structural shift indicates that our ER module effectively identifies the same conceptual entities that possess different names. Consequently, the resulting graphs are more compact and cohesive, as evidenced by the reduced diameter and fewer connected components, which mitigates graph fragmentation and facilitates better connectivity for graph reasoning.", + "title_level": -1 + }, + "summary": "Gradient-based Entity Resolution significantly optimizes Knowledge Graph construction by reducing entity counts by 12% and increasing graph density by over 20% compared to standard exact name matching. This approach effectively merges conceptually identical entities with different names, resulting in more compact and cohesive graphs with reduced diameter and fewer disconnected components, thereby mitigating fragmentation and enhancing connectivity for graph reasoning." + }, + { + "index_id": 177, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 177, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 7: QA performance breakdown by different query types (Single-hop, Multi-hop, and Global). The blue bars represent Exact Match (EM) for MMLongBench and Accuracy for Qasper, while the red bars represent the F1-score.", + "title_level": -1 + }, + "summary": "Figure 7 illustrates the performance breakdown of question-answering systems across three query types—Single-hop, Multi-hop, and Global—using MMLongBench and Qasper datasets. The analysis employs Exact Match (EM) and Accuracy metrics, represented by blue bars, alongside F1-score metrics, represented by red bars, to evaluate model effectiveness on varying levels of query complexity." + }, + { + "index_id": 178, + "parent_id": 162, + "type": "NodeType.IMAGE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 178, + "pdf_para_block": { + "docling_label": "picture" + }, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-7.png", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/259'", + "footnote": "", + "table_body": null, + "content": "cref='#/texts/259'", + "title_level": -1 + }, + "summary": "The provided content does not contain any substantive information to summarize, as it consists solely of a placeholder indicating an image with a broken or empty caption reference." + }, + { + "index_id": 179, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 179, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· QA performance under different query types. Figure 7 breaks down the performance of BookRAG across Single-hop, Multihop, and Global aggregation query types. We observe that Multihop queries generally present a greater challenge compared to Single-hop ones, resulting in a slight performance decrease. This trend reflects the inherent difficulty of retrieving and reasoning over disjoint pieces of evidence. It further validates our agent-based planning strategy, which handles different query types separately.", + "title_level": -1 + }, + "summary": "BookRAG demonstrates that multihop queries are inherently more challenging than single-hop queries due to the difficulty of retrieving and reasoning over disjoint evidence, leading to a slight performance decrease; this trend validates the effectiveness of its agent-based planning strategy, which is designed to handle different query types separately." + }, + { + "index_id": 180, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 10, + "page_path": null, + "pdf_id": 180, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Error Response analysis. To diagnose the performance bottlenecks of BookRAG, we conduct a fine-grained error analysis on 200 sampled queries from each dataset, tracing the error propagation as shown in Figure 9. We categorize failures into four types:", + "title_level": -1 + }, + "summary": "To diagnose BookRAG's performance bottlenecks, a fine-grained error analysis was conducted on 200 sampled queries per dataset, tracing error propagation and categorizing failures into four distinct types." + }, + { + "index_id": 181, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 11, + "page_path": null, + "pdf_id": 181, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 8: Case study of responses across different query types from MMLongBench and Qasper. CYAN TEXT highlights correct content generated by BookRAG. GRAY TEXT describes the internal process, and marks omitted irrelevant parts.", + "title_level": -1 + }, + "summary": "BookRAG demonstrates superior performance in generating accurate responses for diverse query types on the MMLongBench and Qasper benchmarks, as evidenced by its ability to correctly identify and output relevant content (highlighted in cyan) while effectively filtering out irrelevant internal processing details." + }, + { + "index_id": 182, + "parent_id": 162, + "type": "NodeType.IMAGE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 11, + "page_path": null, + "pdf_id": 182, + "pdf_para_block": { + "docling_label": "picture" + }, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-8.png", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/282'", + "footnote": "", + "table_body": null, + "content": "cref='#/texts/282'", + "title_level": -1 + }, + "summary": "The provided content does not contain any substantive information to summarize, as it consists solely of a placeholder indicating an image with a technical reference code and lacks any descriptive text, data, or context." + }, + { + "index_id": 183, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 11, + "page_path": null, + "pdf_id": 183, + "pdf_para_block": { + "docling_label": "caption" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 9: Error analysis on 200 sampled queries from MMLongBench and Qasper datasets.", + "title_level": -1 + }, + "summary": "Error analysis of 200 sampled queries from the MMLongBench and Qasper datasets reveals specific performance patterns and failure modes, as detailed in Figure 9." + }, + { + "index_id": 184, + "parent_id": 162, + "type": "NodeType.IMAGE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 11, + "page_path": null, + "pdf_id": 184, + "pdf_para_block": { + "docling_label": "picture" + }, + "img_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-9.png", + "image_width": 0, + "image_height": 0, + "caption": "cref='#/texts/348'", + "footnote": "", + "table_body": null, + "content": "cref='#/texts/348'", + "title_level": -1 + }, + "summary": "The provided content consists solely of a placeholder indicating an image with a reference caption, but it contains no actual text, data, or visual information to summarize." + }, + { + "index_id": 185, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 11, + "page_path": null, + "pdf_id": 185, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "PDF Parsing, Plan, Retrieval, and Generation errors. The results identify Retrieval Error as the dominant failure mode, followed by Generation Error, reflecting the persistent challenge of locating and synthesizing multimodal evidence. Regarding Plan Error, our qualitative analysis reveals a specific failure pattern: the planner tends to over-decompose detailed single-hop queries into unnecessary multi-hop sub-tasks. This fragmentation leads to disjointed retrieval paths, effectively preventing the model from synthesizing a cohesive final answer from the scattered sub-responses.", + "title_level": -1 + }, + "summary": "Retrieval Error is the dominant failure mode in PDF parsing, planning, retrieval, and generation tasks, followed by Generation Error, highlighting the ongoing difficulty in locating and synthesizing multimodal evidence. Additionally, Plan Errors frequently stem from the planner's tendency to over-decompose simple single-hop queries into unnecessary multi-hop sub-tasks; this fragmentation creates disjointed retrieval paths that prevent the model from effectively synthesizing a cohesive final answer." + }, + { + "index_id": 186, + "parent_id": 162, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 11, + "page_path": null, + "pdf_id": 186, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "· Case study. Figure 8 illustrates BookRAG's answering workflow across Single-hop, Multi-hop, and Global queries. The results demonstrate that by leveraging specific operators ( Select , Decompose , and Filter ), BookRAG effectively prunes search spaces. For example, in the Single-hop case, the reasoning space is significantly reduced from 134 to 24 nodes. This capability allows the system to efficiently isolate relevant evidence from noise, ensuring precise answer generation.", + "title_level": -1 + }, + "summary": "BookRAG effectively prunes search spaces and ensures precise answer generation by leveraging specific operators (Select, Decompose, and Filter) to isolate relevant evidence from noise. As demonstrated in a case study, this approach significantly reduces reasoning complexity—for instance, shrinking the search space from 134 to 24 nodes in single-hop queries—thereby enabling efficient handling of single-hop, multi-hop, and global queries." + }, + { + "index_id": 187, + "parent_id": 1, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 11, + "page_path": null, + "pdf_id": 187, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "7 CONCLUSION", + "title_level": 1 + }, + "summary": "This section concludes the study by summarizing BookRAG's superior performance and outlining future directions for an integrated database system." + }, + { + "index_id": 188, + "parent_id": 187, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 11, + "page_path": null, + "pdf_id": 188, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "In this paper, we propose BookRAG, a novel method built upon Book Index, a document-native, structured Tree-Graph index specifically designed to capture the intricate relations of structural documents. By employing an agent-based method to dynamically configure retrieval and reasoning operators, our approach achieves state-ofthe-art performance on multiple benchmarks, demonstrating significant superiority over existing baselines in both retrieval precision and answer accuracy. In the future, we will explore an integrated document-native database system that supports data formatting, knowledge extraction, and intelligent querying.", + "title_level": -1 + }, + "summary": "BookRAG is a novel, agent-based method that leverages a document-native Tree-Graph index called Book Index to capture complex structural relationships, achieving state-of-the-art performance with superior retrieval precision and answer accuracy compared to existing baselines; future work aims to develop an integrated database system supporting data formatting, knowledge extraction, and intelligent querying." + }, + { + "index_id": 189, + "parent_id": 187, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 11, + "page_path": null, + "pdf_id": 189, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "12", + "title_level": -1 + }, + "summary": "The provided content consists solely of the number \"12\" and lacks sufficient context, text, or data to form a meaningful summary or draw any conclusions." + }, + { + "index_id": 190, + "parent_id": 1, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 190, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "REFERENCES", + "title_level": 1 + }, + "summary": "This section compiles a comprehensive bibliography of recent academic and industry research (2020–2025) that advances Large Language Models through innovations in Retrieval-Augmented Generation, graph-based reasoning, multimodal understanding, and domain-specific data processing." + }, + { + "index_id": 191, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 191, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[1] Simran Arora, Brandon Yang, Sabri Eyuboglu, Avanika Narayan, Andrew Hojel, Immanuel Trummer, and Christopher Ré. 2023. Language Models Enable Simple Systems for Generating Structured Views of Heterogeneous Data Lakes. Proceedings of the VLDB Endowment 17, 2 (2023), 92-105.", + "title_level": -1 + }, + "summary": "The 2023 study by Arora et al. demonstrates that large language models (LLMs) can power simple, efficient systems to automatically generate structured views from heterogeneous data lakes, effectively bridging the gap between unstructured data sources and user-friendly analytical interfaces without requiring complex, custom-built pipelines." + }, + { + "index_id": 192, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 192, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[2] Akari Asai, Zeqiu Wu, Yizhong Wang, et al. 2024. Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection. In International Conference on Learning Representations (ICLR) .", + "title_level": -1 + }, + "summary": "The paper \"Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection\" (Asai et al., 2024) introduces a novel framework that enables language models to autonomously decide when to retrieve external information, how to generate responses, and how to critique their own outputs. By integrating retrieval, generation, and self-reflection into a single end-to-end trainable system, Self-RAG significantly improves the quality, relevance, and factual accuracy of generated text while reducing hallucinations and unnecessary retrieval, outperforming existing methods that treat these components as separate stages." + }, + { + "index_id": 193, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 193, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[3] Akari Asai, Zeqiu Wu, Yizhong Wang, Avirup Sil, and Hannaneh Hajishirzi. 2023. Self-rag: Learning to retrieve, generate, and critique through self-reflection. arXiv preprint arXiv:2310.11511 (2023).", + "title_level": -1 + }, + "summary": "Self-RAG is a framework that enhances retrieval-augmented generation by enabling models to dynamically retrieve information, generate responses, and critically evaluate their own output through self-reflection, thereby improving accuracy and relevance without requiring external supervision." + }, + { + "index_id": 194, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 194, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[4] Shuai Bai, Keqin Chen, Xuejing Liu, Jialin Wang, Wenbin Ge, Sibo Song, Kai Dang, Peng Wang, Shijie Wang, Jun Tang, et al. 2025. Qwen2.5-vl technical report. arXiv preprint arXiv:2502.13923 (2025).", + "title_level": -1 + }, + "summary": "The Qwen2.5-VL technical report (arXiv:2502.13923, 2025) introduces an advanced vision-language model developed by a team led by Shuai Bai and Keqin Chen, detailing its architecture, capabilities, and performance benchmarks as a significant evolution in multimodal AI systems." + }, + { + "index_id": 195, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 195, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[5] Camille Barboule, Benjamin Piwowarski, and Yoan Chabot. 2025. Survey on Question Answering over Visually Rich Documents: Methods, Challenges, and Trends. arXiv preprint arXiv:2501.02235 (2025).", + "title_level": -1 + }, + "summary": "The 2025 survey by Barboule, Piwowarski, and Chot provides a comprehensive overview of Question Answering (QA) over Visually Rich Documents (VRDs), systematically analyzing current methodologies, identifying persistent challenges in processing complex layouts and multimodal data, and outlining emerging trends that are shaping the future of this field." + }, + { + "index_id": 196, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 196, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[6] Yukun Cao, Zengyi Gao, Zhiyang Li, Xike Xie, S. Kevin Zhou, and Jianliang Xu. 2025. LEGO-GraphRAG: Modularizing Graph-Based Retrieval-Augmented Generation for Design Space Exploration. Proc. VLDB Endow. 18, 10 (June 2025), 3269-3283. https://doi.org/10.14778/3748191.3748194", + "title_level": -1 + }, + "summary": "LEGO-GraphRAG is a novel framework introduced in a 2025 *Proceedings of the VLDB Endowment* paper that modularizes graph-based retrieval-augmented generation (RAG) to facilitate efficient design space exploration. By decomposing the RAG pipeline into interchangeable components, the approach enables researchers to systematically evaluate and optimize various architectural configurations, thereby accelerating the development of more effective graph-enhanced language models." + }, + { + "index_id": 197, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 197, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[7] Chengliang Chai, Jiajun Li, Yuhao Deng, Yuanhao Zhong, Ye Yuan, Guoren Wang, and Lei Cao. 2025. Doctopus: Budget-aware structural table extraction from unstructured documents. Proceedings of the VLDB Endowment 18, 11 (2025), 3695-3707.", + "title_level": -1 + }, + "summary": "Doctopus is a novel framework introduced in 2025 that enables budget-aware structural table extraction from unstructured documents, addressing the challenge of balancing extraction accuracy with computational resource constraints. By optimizing the trade-off between the cost of processing and the quality of the resulting table structures, the system allows for efficient and scalable table recovery in large-scale document analysis, as demonstrated in their research published in the Proceedings of the VLDB Endowment." + }, + { + "index_id": 198, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 198, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[8] Ilias Chalkidis, Manos Fergadiotis, Prodromos Malakasiotis, Nikolaos Aletras, and Ion Androutsopoulos. 2020. LEGAL-BERT: The muppets straight out of law school. arXiv preprint arXiv:2010.02559 (2020).", + "title_level": -1 + }, + "summary": "The 2020 arXiv preprint \"LEGAL-BERT: The muppets straight out of law school\" by Chalkidis et al. introduces LEGAL-BERT, a domain-specific language model adapted from BERT to better understand legal texts, thereby enhancing performance on legal natural language processing tasks." + }, + { + "index_id": 199, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 199, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[9] Sibei Chen, Yeye He, Weiwei Cui, Ju Fan, Song Ge, Haidong Zhang, Dongmei Zhang, and Surajit Chaudhuri. 2024. Auto-Formula: Recommend Formulas in Spreadsheets using Contrastive Learning for Table Representations. Proceedings of the ACM on Management of Data 2, 3 (2024), 1-27.", + "title_level": -1 + }, + "summary": "The 2024 paper \"Auto-Formula\" introduces a novel approach for recommending spreadsheet formulas by employing contrastive learning to generate robust table representations, thereby significantly improving the accuracy of formula suggestions in data management tasks." + }, + { + "index_id": 200, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 200, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[10] Sibei Chen, Nan Tang, Ju Fan, Xuemi Yan, Chengliang Chai, Guoliang Li, and Xiaoyong Du. 2023. Haipipe: Combining human-generated and machine-generated pipelines for data preparation. Proceedings of the ACM on Management of Data 1, 1 (2023), 1-26.", + "title_level": -1 + }, + "summary": "The 2023 paper \"Haipipe\" introduces a novel data preparation framework that synergistically combines human expertise with machine-generated pipelines to enhance efficiency and accuracy. By integrating human-guided strategies with automated machine learning techniques, Haipipe addresses the limitations of purely manual or fully automated approaches, offering a robust solution for complex data preparation tasks as demonstrated in the Proceedings of the ACM on Management of Data." + }, + { + "index_id": 201, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 201, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[11] Jaemin Cho, Debanjan Mahata, Ozan Irsoy, Yujie He, and Mohit Bansal. 2024. M3docrag: Multi-modal retrieval is what you need for multi-page multidocument understanding. arXiv preprint arXiv:2411.04952 (2024).", + "title_level": -1 + }, + "summary": "The 2024 paper *M3DocRAG* by Cho et al. establishes that multi-modal retrieval is essential for effectively understanding complex, multi-page, multi-document scenarios, proposing a framework that integrates visual and textual information to overcome the limitations of text-only approaches in document comprehension." + }, + { + "index_id": 202, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 202, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[12] Vassilis Christophides, Vasilis Efthymiou, Themis Palpanas, George Papadakis, and Kostas Stefanidis. 2020. An overview of end-to-end entity resolution for big data. ACM Computing Surveys (CSUR) 53, 6 (2020), 1-42.", + "title_level": -1 + }, + "summary": "End-to-end entity resolution for big data requires a unified, scalable framework that integrates data cleaning, matching, and merging into a single pipeline to overcome the limitations of traditional multi-stage approaches. This paradigm addresses the unique challenges of massive, heterogeneous datasets by leveraging distributed computing, advanced machine learning techniques, and efficient indexing strategies, ultimately enabling accurate identification of real-world entities across diverse sources while maintaining high performance and scalability." + }, + { + "index_id": 203, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 203, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[13] Gheorghe Comanici, Eric Bieber, Mike Schaekermann, Ice Pasupat, Noveen Sachdeva, Inderjit Dhillon, Marcel Blistein, Ori Ram, Dan Zhang, Evan Rosen, et al. 2025. Gemini 2.5: Pushing the frontier with advanced reasoning, multimodality, long context, and next generation agentic capabilities. arXiv preprint arXiv:2507.06261 (2025).", + "title_level": -1 + }, + "summary": "The 2025 arXiv preprint by Comanici et al. introduces Gemini 2.5, a next-generation AI model that significantly advances the field through enhanced reasoning capabilities, robust multimodality, support for extended context windows, and sophisticated agentic functionalities." + }, + { + "index_id": 204, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 204, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[14] Pradeep Dasigi, Kyle Lo, Iz Beltagy, Arman Cohan, Noah A Smith, and Matt Gardner. 2021. A dataset of information-seeking questions and answers anchored in research papers. arXiv preprint arXiv:2105.03011 (2021).", + "title_level": -1 + }, + "summary": "Dasigi et al. (2021) introduced a novel dataset comprising information-seeking questions and answers that are explicitly anchored in research papers, designed to advance research on question answering within the scientific literature." + }, + { + "index_id": 205, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 205, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[15] Xavier Daull, Patrice Bellot, Emmanuel Bruno, Vincent Martin, and Elisabeth Murisasco. 2023. Complex QA and language models hybrid architectures, Survey. arXiv preprint arXiv:2302.09051 (2023).", + "title_level": -1 + }, + "summary": "The 2023 survey by Daull et al. establishes that hybrid architectures, which integrate Large Language Models (LLMs) with specialized components like retrieval systems, knowledge graphs, or symbolic reasoning engines, represent the most effective approach for solving complex question-answering tasks. While standalone LLMs excel at fluency and general knowledge, they often struggle with multi-hop reasoning, factual accuracy, and handling domain-specific data; consequently, the authors conclude that combining LLMs with external tools or structured methods is essential to overcome these limitations and achieve robust performance in complex QA scenarios." + }, + { + "index_id": 206, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 206, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[16] Darren Edge, Ha Trinh, Newman Cheng, Joshua Bradley, Alex Chao, Apurva Mody, Steven Truitt, and Jonathan Larson. 2024. From local to global: A graph rag approach to query-focused summarization. arXiv preprint arXiv:2404.16130 (2024).", + "title_level": -1 + }, + "summary": "The paper \"From local to global: A graph rag approach to query-focused summarization\" (Edge et al., 2024) introduces a novel Graph RAG (Retrieval-Augmented Generation) framework that enhances query-focused summarization by leveraging graph structures to capture both local context and global relationships within data, thereby improving the coherence and accuracy of generated summaries compared to traditional methods." + }, + { + "index_id": 207, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 207, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[17] Yunfan Gao, Yun Xiong, Xinyu Gao, Kangxiang Jia, Jinliu Pan, Yuxi Bi, Yi Dai, Jiawei Sun, and Haofen Wang. 2023. Retrieval-augmented generation for large language models: A survey. arXiv preprint arXiv:2312.10997 (2023).", + "title_level": -1 + }, + "summary": "The 2023 survey by Gao et al. establishes that Retrieval-Augmented Generation (RAG) is a critical paradigm for enhancing Large Language Models (LLMs) by integrating external knowledge retrieval, effectively addressing limitations such as hallucinations, outdated information, and lack of domain-specific expertise while improving factual accuracy and interpretability." + }, + { + "index_id": 208, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 208, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[18] Zirui Guo, Lianghao Xia, Yanhua Yu, Tu Ao, and Chao Huang. 2024. LightRAG: Simple and Fast Retrieval-Augmented Generation. arXiv e-prints (2024), arXiv2410.", + "title_level": -1 + }, + "summary": "LightRAG is a 2024 arXiv paper proposing a retrieval-augmented generation (RAG) framework that achieves simplicity and speed by utilizing a lightweight graph-based retrieval mechanism, offering an efficient alternative to traditional RAG systems for enhancing large language model performance." + }, + { + "index_id": 209, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 209, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[19] Bernal Jiménez Gutiérrez, Yiheng Shu, Yu Gu, Michihiro Yasunaga, and Yu Su. 2024. HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models. arXiv preprint arXiv:2405.14831 (2024).", + "title_level": -1 + }, + "summary": "HippoRAG is a novel retrieval-augmented generation framework that enhances large language models' long-term memory by mimicking the hippocampus's neurobiological mechanisms, specifically utilizing pattern separation and completion to efficiently store, retrieve, and integrate vast amounts of information without catastrophic forgetting." + }, + { + "index_id": 210, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 210, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[20] Taher H Haveliwala. 2002. Topic-sensitive pagerank. In Proceedings of the 11th international conference on World Wide Web . 517-526.", + "title_level": -1 + }, + "summary": "Taher Haveliwala's 2002 paper introduces Topic-Sensitive PageRank, an enhancement to the standard PageRank algorithm that assigns different importance scores to web pages based on the specific topic of the user's query, thereby improving search relevance by tailoring rankings to distinct subject areas rather than relying on a single, global page authority score." + }, + { + "index_id": 211, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 211, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[21] Xiaoxin He, Yijun Tian, Yifei Sun, Nitesh V Chawla, Thomas Laurent, Yann LeCun, Xavier Bresson, and Bryan Hooi. 2024. G-retriever: Retrieval-augmented generation for textual graph understanding and question answering. arXiv preprint arXiv:2402.07630 (2024).", + "title_level": -1 + }, + "summary": "G-retriever is a 2024 framework that enhances textual graph understanding and question answering by integrating retrieval-augmented generation (RAG) with graph data, allowing models to dynamically retrieve and reason over relevant graph structures alongside text." + }, + { + "index_id": 212, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 212, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[22] Yucheng Hu and Yuxing Lu. 2024. Rag and rau: A survey on retrieval-augmented language model in natural language processing. arXiv preprint arXiv:2404.19543 (2024).", + "title_level": -1 + }, + "summary": "Hu and Lu (2024) present a comprehensive survey on Retrieval-Augmented Generation (RAG) and Retrieval-Augmented Understanding (RAU), analyzing their transformative impact on Natural Language Processing by integrating external knowledge retrieval with language models to enhance accuracy, reduce hallucinations, and improve performance on complex tasks." + }, + { + "index_id": 213, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 213, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[23] Soyeong Jeong, Jinheon Baek, et al. 2024. Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity. arXiv preprint arXiv:2403.14403 (2024).", + "title_level": -1 + }, + "summary": "The paper \"Adaptive-RAG\" (2024) by Soyeong Jeong, Jinheon Baek, et al. introduces a framework that dynamically adjusts the retrieval strategy of Large Language Models based on the complexity of the input question. By learning to distinguish between simple queries, which can be answered with minimal or no external information, and complex queries requiring extensive context, the method optimizes the trade-off between retrieval cost and answer accuracy, outperforming static retrieval-augmented generation approaches." + }, + { + "index_id": 214, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 214, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "13", + "title_level": -1 + }, + "summary": "The provided content consists solely of the number \"13\" and lacks sufficient context, text, or data to form a meaningful summary or draw any conclusions." + }, + { + "index_id": 215, + "parent_id": 190, + "type": "NodeType.TABLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 215, + "pdf_para_block": { + "docling_label": "table" + }, + "img_path": "", + "image_width": 0, + "image_height": 0, + "caption": "", + "footnote": "", + "table_body": "| [24] | Soyeong Jeong, Jinheon Baek, Sukmin Cho, Sung Ju Hwang, and Jong C Park. 2024. Adaptive-rag: Learning to adapt retrieval-augmented large language mod- |\n|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [25] | els through question complexity. arXiv preprint arXiv:2403.14403 (2024). Tengjun Jin, Yuxuan Zhu, and Daniel Kang. 2025. ELT-Bench: An End-to- End Benchmark for Evaluating AI Agents on ELT Pipelines. arXiv preprint |\n| [26] | arXiv:2504.04808 (2025). Geewook Kim, Teakgyu Hong, Moonbin Yim, JeongYeon Nam, Jinyoung Park, Jinyeong Yim, Wonseok Hwang, Sangdoo Yun, Dongyoon Han, and Seunghyun Park. 2022. Ocr-free document understanding transformer. In European Confer- |\n| [27] | ence on Computer Vision . Springer, 498-517. Dawei Li, Shu Yang, Zhen Tan, Jae Young Baik, Sukwon Yun, Joseph Lee, Aaron Chacko, Bojian Hou, Duy Duong-Tran, Ying Ding, et al. 2024. DALK: Dynamic Co-Augmentation of LLMs and KG to answer Alzheimer's Disease Questions with Scientific Literature. arXiv preprint arXiv:2405.04819 (2024). |\n| [28] | Guoliang Li, Jiayi Wang, Chenyang Zhang, and Jiannan Wang. 2025. Data+ AI: LLM4Data and Data4LLM. In Companion of the 2025 International Conference on |\n| [29] | Management of Data . 837-843. Yinheng Li, Shaofei Wang, Han Ding, and Hang Chen. 2023. Large language models in finance: A survey. In Proceedings of the fourth ACM international conference on AI in finance . 374-382. |\n| [30] | Zhaodonghui Li, Haitao Yuan, Huiming Wang, Gao Cong, and Lidong Bing. 2025. LLM-R2: A Large Language Model Enhanced Rule-based Rewrite System for Boosting Query Efficiency. Proceedings of the VLDB Endowment 1, 18 (2025), 53-65. |\n| [31] | Haoyu Lu, Wen Liu, Bo Zhang, et al. 2024. DeepSeek-VL: Towards Real-World Vision-Language Understanding. arXiv preprint arXiv:2403.05525 (2024). |\n| [32] | Shengjie Ma, Chengjin Xu, Xuhui Jiang, Muzhi Li, Huaren Qu, Cehao Yang, Jiaxin Mao, and Jian Guo. 2024. Think-on-Graph 2.0: Deep and Faithful Large Language Model Reasoning with Knowledge-guided Retrieval Augmented Generation. arXiv preprint arXiv:2407.10805 (2024). |\n| [33] | Yubo Ma, Yuhang Zang, Liangyu Chen, Meiqi Chen, Yizhu Jiao, Xinze Li, Xinyuan Lu, Ziyu Liu, Yan Ma, Xiaoyi Dong, et al. 2024. Mmlongbench-doc: Benchmarking long-context document understanding with visualizations. Advances in Neural Information Processing Systems 37 (2024), 95963-96010. |\n| [34] | Alex Mallen, Akari Asai, Victor Zhong, Rajarshi Das, Daniel Khashabi, and Hannaneh Hajishirzi. 2022. When not to trust language models: Investigat- ing effectiveness of parametric and non-parametric memories. arXiv preprint arXiv:2212.10511 (2022). |\n| [35] | Zan Ahmad Naeem, Mohammad Shahmeer Ahmad, Mohamed Eltabakh, Mourad Ouzzani, and Nan Tang. 2024. RetClean: Retrieval-Based Data Cleaning Using LLMs and Data Lakes. Proceedings of the VLDB Endowment 17, 12 (2024), 4421- 4424. |\n| [36] | Avanika Narayan, Ines Chami, Laurel Orr, and Christopher Ré. 2022. Can Foun- dation Models Wrangle Your Data? Proceedings of the VLDB Endowment 16, 4 (2022), 738-746. |\n| [37] | Yuqi Nie, Yaxuan Kong, Xiaowen Dong, John M Mulvey, H Vincent Poor, Qing- song Wen, and Stefan Zohren. 2024. A Survey of Large Language Models for Financial Applications: Progress, Prospects and Challenges. arXiv preprint |\n| [38] | arXiv:2406.11903 (2024). Arash Dargahi Nobari and Davood Rafiei. 2024. TabulaX: Leveraging Large Language Models for Multi-Class Table Transformations. arXiv preprint arXiv:2411.17110 (2024). |\n| [39] | PageIndex. 2025. PageIndex: Next-Generation Reasoning-based RAG. https: //pageindex.ai/. |\n| [40] | Liana Patel, Siddharth Jha, Melissa Pan, Harshit Gupta, Parth Asawa, Carlos Guestrin, and Matei Zaharia. 2025. Semantic Operators and Their Optimization: Enabling LLM-Based Data Processing with Accuracy Guarantees in LOTUS. |\n| [41] | Proceedings of the VLDB Endowment 18, 11 (2025), 4171-4184. Boci Peng, Yun Zhu, Yongchao Liu, Xiaohe Bo, Haizhou Shi, Chuntao Hong, Yan Zhang, and Siliang Tang. 2024. Graph retrieval-augmented generation: A survey. |\n| [42] | arXiv preprint arXiv:2408.08921 (2024). Peter Pirolli and Stuart Card. 1995. Information foraging in information access environments. In Proceedings of the SIGCHI conference on Human factors in computing systems . 51-58. |\n| [43] | Yichen Qian, Yongyi He, Rong Zhu, Jintao Huang, Zhijian Ma, Haibin Wang, Framework for Data Manipulation with Large Language Models. |\n| | Yaohua Wang, Xiuyu Sun, Defu Lian, Bolin Ding, et al. 2024. UniDM: A Unified Proceedings of Machine Learning and Systems 6 (2024), 465-482. |\n| [44] | Stephen E Robertson and Steve Walker. 1994. Some simple effective approxi- mations to the 2-poisson model for probabilistic weighted retrieval. In SIGIR'94: Proceedings of the Seventeenth Annual International ACM-SIGIR Conference on Research and Development in Information Retrieval, organised by Dublin City |\n| [45] | University . Springer, 232-241. Parth Sarthi, Salman Abdullah, Aditi Tuli, Shubh Khanna, Anna Goldie, and Christopher D Manning. 2024. Raptor: Recursive abstractive processing for |\n| | tree-organized retrieval. arXiv preprint arXiv:2401.18059 (2024). |", + "content": "", + "title_level": -1 + }, + "summary": "The provided content is a bibliography of recent academic research (2022–2025) focusing on the integration of Large Language Models (LLMs) with data management, retrieval systems, and domain-specific applications. Key themes include the evolution of Retrieval-Augmented Generation (RAG) through adaptive mechanisms, graph-based reasoning, and recursive processing to handle complex queries and long-context documents. Significant attention is given to data-centric AI, covering LLM-driven data cleaning, transformation, and pipeline evaluation (ELT), as well as specialized applications in finance and healthcare (e.g., Alzheimer's research). Additionally, the list highlights advancements in vision-language understanding, the optimization of semantic operators for accuracy, and foundational studies on information foraging and the reliability of parametric versus non-parametric memory in language models." + }, + { + "index_id": 216, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 12, + "page_path": null, + "pdf_id": 216, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "[46] Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Eric Hambro, Luke Zettlemoyer, Nicola Cancedda, and Thomas Scialom. 2024.", + "title_level": -1 + }, + "summary": "The 2024 work by Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Eric Hambro, Luke Zettlemoyer, Nicola Cancedda, and Thomas Scialom represents a collaborative research contribution by these authors, though the specific title, methodology, or findings of the study are not provided in the excerpt." + }, + { + "index_id": 217, + "parent_id": 190, + "type": "NodeType.TABLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 13, + "page_path": null, + "pdf_id": 217, + "pdf_para_block": { + "docling_label": "table" + }, + "img_path": "", + "image_width": 0, + "image_height": 0, + "caption": "", + "footnote": "", + "table_body": "| | Toolformer: Language models can teach themselves to use tools. Advances in Neural Information Processing Systems 36 (2024). |\n|------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [47] | Shreya Shankar, Tristan Chambers, Tarak Shah, Aditya G Parameswaran, and Eugene Wu. 2024. Docetl: Agentic query rewriting and evaluation for complex document processing. arXiv preprint arXiv:2410.12189 (2024). |\n| [48] | Shamane Siriwardhana, Rivindu Weerasekera, Elliott Wen, Tharindu Kalu- arachchi, Rajib Rana, and Suranga Nanayakkara. 2023. Improving the domain adaptation of retrieval augmented generation (RAG) models for open domain question answering. Transactions of the Association for Computational Linguistics 11 (2023), 1-17. |\n| [49] | Solutions Review Editors. 2019. 80 Percent of Your Data Will Be Unstructured in Five Years. https://solutionsreview.com/data-management/80-percent-of-your- datawill-be-unstructured-in-five-years/. Accessed: 2023-10-27. |\n| [50] | Zhaoyan Sun, Xuanhe Zhou, and Guoliang Li. 2024. R-Bot: An LLM-based Query |\n| [51] | Rewrite System. arXiv preprint arXiv:2412.01661 (2024). Vincent A Traag, Ludo Waltman, and Nees Jan Van Eck. 2019. From Louvain to Leiden: guaranteeing well-connected communities. Scientific reports 9, 1 (2019), 1-12. |\n| [52] | Bin Wang, Chao Xu, Xiaomeng Zhao, Linke Ouyang, Fan Wu, Zhiyuan Zhao, Rui Xu, Kaiwen Liu, Yuan Qu, Fukai Shang, et al. 2024. Mineru: An open-source solution for precise document content extraction. arXiv preprint arXiv:2409.18839 (2024). |\n| [53] | Jiayi Wang and Guoliang Li. 2025. Aop: Automated and interactive llm pipeline orchestration for answering complex queries. CIDR. |\n| [54] | Peng Wang, Shuai Bai, Sinan Tan, Shijie Wang, Zhihao Fan, Jinze Bai, Keqin Chen, Xuejing Liu, Jialin Wang, Wenbin Ge, et al. 2024. Qwen2-vl: Enhancing vision-language model's perception of the world at any resolution. arXiv preprint arXiv:2409.12191 (2024). |\n| [55] | Shu Wang, Yixiang Fang, Yingli Zhou, Xilin Liu, and Yuchi Ma. 2025. ArchRAG: Attributed Community-based Hierarchical Retrieval-Augmented Generation. arXiv preprint arXiv:2502.09891 (2025). |\n| [56] | Shen Wang, Tianlong Xu, Hang Li, Chaoli Zhang, Joleen Liang, Jiliang Tang, Philip S Yu, and Qingsong Wen. 2024. Large language models for education: A survey and outlook. arXiv preprint arXiv:2403.18105 (2024). |", + "content": "", + "title_level": -1 + }, + "summary": "The provided content is a bibliography of recent academic and industry research (2019–2025) focused on advancing Large Language Models (LLMs) through tool integration, document processing, and retrieval-augmented generation (RAG). Key themes include enabling models to autonomously use tools (Toolformer), developing agentic systems for complex query rewriting and document extraction (Docetl, R-Bot, Mineru), and improving domain adaptation for open-domain question answering. The collection also highlights advancements in vision-language models (Qwen2-vl), hierarchical RAG architectures (ArchRAG), automated pipeline orchestration (Aop), and the growing prevalence of unstructured data, alongside foundational work in community detection and educational applications of LLMs." + }, + { + "index_id": 218, + "parent_id": 190, + "type": "NodeType.TABLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 13, + "page_path": null, + "pdf_id": 218, + "pdf_para_block": { + "docling_label": "table" + }, + "img_path": "", + "image_width": 0, + "image_height": 0, + "caption": "", + "footnote": "", + "table_body": "| [57] | Shu Wang, Yingli Zhou, and Yixiang Fang. [n. d.]. BookRAG: A Hierarchical Structure-aware Index-based Approach for Complex Document Question An- swering. https://github.com/sam234990/BookRAG. |\n|--------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [58] | Yu Wang, Nedim Lipka, Ryan A Rossi, Alexa Siu, Ruiyi Zhang, and Tyler Derr. 2024. Knowledge graph prompting for multi-document question answering. In Proceedings of the AAAI Conference on Artificial Intelligence , Vol. 38. 19206-19214. |\n| [59] | Shi-Qi Yan, Jia-Chen Gu, Yun Zhu, and Zhen-Hua Ling. 2024. Corrective Retrieval Augmented Generation. arXiv preprint arXiv:2401.15884 (2024). |\n| [60] | An Yang, Anfeng Li, Baosong Yang, Beichen Zhang, Binyuan Hui, Bo Zheng, Bowen Yu, Chang Gao, Chengen Huang, Chenxu Lv, et al. 2025. Qwen3 technical report. arXiv preprint arXiv:2505.09388 (2025). |\n| [61] | Murong Yue. 2025. A survey of large language model agents for question an- swering. arXiv preprint arXiv:2503.19213 (2025). |\n| [62] | Qinggang Zhang, Shengyuan Chen, Yuanchen Bei, Zheng Yuan, Huachi Zhou, Zijin Hong, Hao Chen, Yilin Xiao, Chuang Zhou, Junnan Dong, et al. 2025. A survey of graph retrieval-augmented generation for customized large language models. arXiv preprint arXiv:2501.13958 (2025). |\n| [63] | Xin Zhang, Yanzhao Zhang, Wen Xie, Mingxin Li, Ziqi Dai, Dingkun Long, Pengjun Xie, Meishan Zhang, Wenjie Li, and Min Zhang. 2024. GME: Im- proving Universal Multimodal Retrieval by Multimodal LLMs. arXiv preprint |\n| [64] | Yanzhao Zhang, Mingxin Li, Dingkun Long, Xin Zhang, Huan Lin, Baosong Yang, Pengjun Xie, An Yang, Dayiheng Liu, Junyang Lin, et al. 2025. Qwen3 Embedding: Advancing Text Embedding and Reranking Through Foundation Models. arXiv preprint arXiv:2506.05176 (2025). |\n| [65] | Wayne Xin Zhao, Kun Zhou, Junyi Li, Tianyi Tang, Xiaolei Wang, Yupeng Hou, Yingqian Min, Beichen Zhang, Junjie Zhang, Zican Dong, et al. 2023. A survey of large language models. arXiv preprint arXiv:2303.18223 1, 2 (2023). |\n| [66] | Yingli Zhou, Yaodong Su, Youran Sun, Shu Wang, Taotao Wang, Runyuan He, Yongwei Zhang, Sicong Liang, Xilin Liu, Yuchi Ma, et al. 2025. In-depth Analysis of Graph-based RAG in a Unified Framework. arXiv preprint arXiv:2503.04338 (2025). |\n| [67] | Yutao Zhu, Huaying Yuan, Shuting Wang, Jiongnan Liu, Wenhan Liu, Chenlong Deng, Haonan Chen, Zheng Liu, Zhicheng Dou, and Ji-Rong Wen. 2023. Large language models for information retrieval: A survey. ACM Transactions on Information Systems (2023). |", + "content": "", + "title_level": -1 + }, + "summary": "The provided bibliography highlights a rapidly evolving research landscape focused on enhancing Large Language Models (LLMs) for complex question answering through advanced retrieval and structural techniques. Key themes include the integration of **Graph Retrieval-Augmented Generation (Graph RAG)** to leverage hierarchical document structures and knowledge graphs for multi-document reasoning, as well as the development of specialized **embedding models** (e.g., Qwen3 Embedding) to improve multimodal and universal retrieval capabilities. The collection also features comprehensive surveys on LLM agents, corrective retrieval mechanisms, and the broader application of LLMs in information retrieval, alongside technical reports on next-generation models like Qwen3, indicating a strong industry and academic shift toward more structured, accurate, and context-aware AI systems." + }, + { + "index_id": 219, + "parent_id": 190, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 13, + "page_path": null, + "pdf_id": 219, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "14", + "title_level": -1 + }, + "summary": "The provided content consists solely of the number \"14\" and lacks any descriptive text, context, or data necessary to form an informative summary." + }, + { + "index_id": 220, + "parent_id": 1, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 220, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "A EXPERIMENTAL DETAILS", + "title_level": 1 + }, + "summary": "This section details the experimental framework of BookRAG by defining evaluation metrics, outlining answer extraction and normalization procedures, specifying system prompts for query processing, and documenting the hardware and software configurations used to ensure reproducible RAG model assessment." + }, + { + "index_id": 221, + "parent_id": 220, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 221, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "A.1 Evaluation Metrics", + "title_level": 2 + }, + "summary": "This section defines the evaluation metrics and outlines the answer extraction and normalization procedures required to accurately compare RAG model outputs against ground truth labels." + }, + { + "index_id": 222, + "parent_id": 221, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 222, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "In this section, we provide the detailed definitions and calculation procedures for the metrics used in our main experiments.", + "title_level": -1 + }, + "summary": "This section defines the specific metrics and outlines the calculation procedures employed in the main experiments." + }, + { + "index_id": 223, + "parent_id": 221, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 223, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "A.1.1 Answer Extraction and Normalization. Standard RAG models typically generate free-form natural language responses, which may contain extraneous conversational text (e.g., 'The answer is...'). Directly comparing these raw outputs with concise ground truth labels (e.g., 'Option A' or '12.5') can lead to false negatives.", + "title_level": -1 + }, + "summary": "Standard RAG models often produce verbose, conversational responses that hinder accurate evaluation against concise ground truth labels; therefore, answer extraction and normalization are essential to strip extraneous text and enable reliable comparison." + }, + { + "index_id": 224, + "parent_id": 221, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 224, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Following official evaluation protocols, we employ an LLM-based extraction step to align the model output with the ground truth format before calculation. Let 𝑦 𝑟𝑎𝑤 denote the raw response generated by the RAG system and 𝑦 𝑔𝑜𝑙𝑑 denote the ground truth. We define the extracted answer ˆ as: 𝑦 ˆ 𝑦 = LLMextract ( 𝑦 𝑟𝑎𝑤 , Instruction ) (16) where LLMextract extracts the key information (e.g., the key entity for span extraction) from 𝑦 𝑟𝑎𝑤 . We further apply standard normalization N(·) (e.g., lowercasing, removing punctuation) to both ˆ 𝑦 and 𝑦 𝑔𝑜𝑙𝑑 .", + "title_level": -1 + }, + "summary": "To ensure accurate evaluation of RAG systems, raw model outputs are first processed by an LLM to extract key information into a standardized format, after which both the extracted answer and the ground truth undergo normalization (such as lowercasing and punctuation removal) to enable precise comparison." + }, + { + "index_id": 225, + "parent_id": 221, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 225, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "ˆ 𝑦 = LLMextract ( 𝑦 𝑟𝑎𝑤 , Instruction ) (16)", + "title_level": -1 + }, + "summary": "The equation $y = \\text{LLMextract}(y_{\\text{raw}}, \\text{Instruction})$ defines a process where a Large Language Model (LLM) transforms raw input data ($y_{\\text{raw}}$) into a structured or refined output ($y$) by strictly adhering to a provided instruction." + }, + { + "index_id": 226, + "parent_id": 220, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 226, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "A.1.2 QA Performance Metrics. Based on the ground truth 𝑦 𝑔𝑜𝑙𝑑 and the model's response (either raw 𝑦 𝑟𝑎𝑤 or extracted ˆ), we com𝑦 pute the following metrics: Accuracy = 1 𝑁 𝑁 ∑︁ 𝑖 = 1 I (N( 𝑦 𝑔𝑜𝑙𝑑,𝑖 ) ⊆ N( 𝑦 𝑟𝑎𝑤,𝑖 )) (17) where ⊆ denotes the substring inclusion relation.", + "title_level": 2 + }, + "summary": "Section A.1.2 defines the QA performance metrics, specifically detailing the calculation of accuracy via substring inclusion, exact match for strict character-level agreement, and F1-score for token-based span extraction." + }, + { + "index_id": 227, + "parent_id": 226, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 227, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Accuracy (Inclusion-based). Following prior works [3, 34, 46], we utilize accuracy as a soft-match metric. We consider a prediction correct if the normalized gold answer is included in the model's generated response, rather than requiring a strict exact match. This accounts for the uncontrollable nature of LLM generation.", + "title_level": -1 + }, + "summary": "Accuracy is evaluated using an inclusion-based soft-match metric, where a prediction is deemed correct if the normalized gold answer appears within the model's generated response, accommodating the inherent variability of LLM outputs rather than requiring strict exact matches." + }, + { + "index_id": 228, + "parent_id": 226, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 228, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Accuracy = 1 𝑁 𝑁 ∑︁ 𝑖 = 1 I (N( 𝑦 𝑔𝑜𝑙𝑑,𝑖 ) ⊆ N( 𝑦 𝑟𝑎𝑤,𝑖 )) (17)", + "title_level": -1 + }, + "summary": "Accuracy is defined as the proportion of instances where the set of normalized gold-standard labels is a subset of the set of normalized raw model predictions, calculated by summing the indicator function for this subset relationship across all $N$ instances and dividing by the total count." + }, + { + "index_id": 229, + "parent_id": 226, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 229, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Exact Match (EM).. Unlike accuracy, Exact Match is a strict metric. It measures whether the normalized extracted answer ˆ is character𝑦 for-character identical to the ground truth.", + "title_level": -1 + }, + "summary": "Exact Match (EM) is a strict evaluation metric that determines correctness by checking if the normalized extracted answer is character-for-character identical to the ground truth, distinguishing it from more lenient measures like accuracy." + }, + { + "index_id": 230, + "parent_id": 226, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 230, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "EM = 1 𝑁 𝑁 ∑︁ 𝑖 = 1 I (N( ˆ 𝑦 𝑖 ) = N( 𝑦 𝑔𝑜𝑙𝑑,𝑖 )) (18)", + "title_level": -1 + }, + "summary": "The Equation (18) defines the Exact Match (EM) metric as the proportion of instances where the predicted label $\\hat{y}_i$ perfectly matches the ground truth label $y_{gold,i}$ across a dataset of size $N$, serving as a strict evaluation measure that awards a score of 1 only for exact label agreement and 0 otherwise." + }, + { + "index_id": 231, + "parent_id": 226, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 231, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "F1-score. For questions requiring text span answers, we utilize the token-level F1-score between the extracted answer ˆ and the 𝑦 ground truth 𝑦 𝑔𝑜𝑙𝑑 . Treating them as bags of tokens 𝑇 ˆ 𝑦 and 𝑇 𝑔𝑜𝑙𝑑 : 𝑃 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 ˆ 𝑦 | , 𝑅 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 𝑔𝑜𝑙𝑑 | , F1 = 2 · 𝑃 · 𝑅 𝑃 + 𝑅 (19)", + "title_level": -1 + }, + "summary": "For text span extraction tasks, the F1-score is calculated by treating both the predicted answer and the ground truth as bags of tokens; precision and recall are derived from the intersection of these token sets, and the final F1-score is the harmonic mean of these two metrics." + }, + { + "index_id": 232, + "parent_id": 226, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 232, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "𝑃 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 ˆ 𝑦 | , 𝑅 = | 𝑇 ˆ 𝑦 ∩ 𝑇 𝑔𝑜𝑙𝑑 | | 𝑇 𝑔𝑜𝑙𝑑 | , F1 = 2 · 𝑃 · 𝑅 𝑃 + 𝑅 (19)", + "title_level": -1 + }, + "summary": "The provided formulas define three key evaluation metrics for classification performance: Precision ($P$) measures the proportion of predicted positive instances that are actually correct; Recall ($R$) measures the proportion of actual positive instances that were successfully identified; and the F1 score ($F1$) serves as the harmonic mean of Precision and Recall, providing a single balanced metric that accounts for both false positives and false negatives." + }, + { + "index_id": 233, + "parent_id": 226, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 233, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "15", + "title_level": -1 + }, + "summary": "The provided content consists solely of the number \"15\" and lacks sufficient context, text, or data to form a meaningful summary or draw any conclusions." + }, + { + "index_id": 234, + "parent_id": 220, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 234, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "A.1.3 Retrieval Recall. As described in the main text, we evaluate retrieval quality based on the granularity of parsed PDF blocks (e.g., paragraphs, tables, images). For a given query 𝑞 , let B 𝑔𝑜𝑙𝑑 be the set of manually labeled ground-truth blocks required to answer 𝑞 , and B 𝑟𝑒𝑡 be the set of unique blocks retrieved by the system. The Retrieval Recall is defined as: Recall 𝑟𝑒𝑡 = ( 0 if parsing error occurs on B 𝑔𝑜𝑙𝑑 | B 𝑟𝑒𝑡 ∩B 𝑔𝑜𝑙𝑑 | | B 𝑔𝑜𝑙𝑑 | otherwise (20)", + "title_level": 2 + }, + "summary": "This section defines the Retrieval Recall metric, which penalizes systems with a score of zero if any ground-truth PDF block is lost during parsing, otherwise calculating recall as the ratio of retrieved gold-standard blocks to the total required." + }, + { + "index_id": 235, + "parent_id": 234, + "type": "NodeType.EQUATION", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 235, + "pdf_para_block": { + "docling_label": "formula" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Recall 𝑟𝑒𝑡 = ( 0 if parsing error occurs on B 𝑔𝑜𝑙𝑑 | B 𝑟𝑒𝑡 ∩B 𝑔𝑜𝑙𝑑 | | B 𝑔𝑜𝑙𝑑 | otherwise (20)", + "title_level": -1 + }, + "summary": "The recall metric ($r_{et}$) is defined as zero if a parsing error occurs on the gold standard set, and as the ratio of correctly parsed items to the total gold standard items otherwise." + }, + { + "index_id": 236, + "parent_id": 234, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 236, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Specifically, if a ground-truth block is lost due to PDF parsing failures (i.e., it does not exist in the candidate pool), it is considered strictly unretrievable, resulting in a recall contribution of 0 for that specific block.", + "title_level": -1 + }, + "summary": "If a ground-truth block is lost during PDF parsing and consequently absent from the candidate pool, it is deemed strictly unretrievable, resulting in a recall contribution of zero for that specific block." + }, + { + "index_id": 237, + "parent_id": 220, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 237, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "A.2 Implementation details", + "title_level": 2 + }, + "summary": "This section details the implementation framework of BookRAG, specifying the Python-based architecture, model selection rationale, experimental hardware configuration, and standardized evaluation protocols to ensure reproducibility." + }, + { + "index_id": 238, + "parent_id": 237, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 238, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Weimplement BookRAG in Python, utilizing MinerU [52] for robust document layout parsing. For a fair comparison, both BookRAG and all baseline methods are powered by a unified set of state-of-theart (SOTA) and widely adopted backbone models from the Qwen family [4, 60, 63, 64], including LLM, vision-language model (VLM), and embedding models. Specifically, we utilize Qwen3-8B [60] as the default LLM, Qwen2.5VL-30B [4] as the vision-language model (VLM), Qwen3-Embedding-0.6B [64] for text embedding, gme-Qwen2-VL-2B-Instruct [63] for multi-modal embedding, and Qwen3-Reranker-4B [64] for reranking. We primarily select models under the 10B parameter scale to balance efficiency and effectiveness. However, for the VLM, we adopt the 30B version, as the 8B counterpart exhibited significant performance deficits, frequently failing to answer correctly even when provided with ground-truth images. All experiments were conducted on a Linux operating system running on a high-performance server equipped with an Intel Xeon 2.0GHz CPU, 1024GB of memory, and 8 NVIDIA GeForce RTX A5000 GPUs, each with 24 GB of VRAM. Specifically, to ensure a fair comparison of efficiency, all methods were executed serially, and the reported time costs reflect this sequential processing mode. For methods involving document chunking and retrieval ranking, we standardize the chunk size at 500 tokens and set the retrieval top𝑘 to 10 to ensure consistent candidate pool sizes across baselines. For further reproducibility, our source code and detailed implementation configurations are publicly available at our repository: https://github.com/sam234990/BookRAG.", + "title_level": -1 + }, + "summary": "BookRAG is implemented in Python using MinerU for document parsing and evaluated against baselines using a unified suite of Qwen family models (LLM, VLM, embedding, and reranking) to ensure fair comparison. While most components utilize models under 10B parameters to balance efficiency and effectiveness, the 30B Qwen2.5VL vision-language model was selected over the 8B version due to the latter's significant performance failures. Experiments were conducted on a high-performance Linux server with 8 NVIDIA RTX A5000 GPUs, employing serial execution to accurately measure time costs, standardized chunking (500 tokens), and retrieval top-k settings (10) for consistency. The full source code and implementation details are publicly available for reproducibility." + }, + { + "index_id": 239, + "parent_id": 220, + "type": "NodeType.TITLE", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 239, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "A.3 Prompts", + "title_level": 2 + }, + "summary": "Section A.3 presents the specific system prompts designed to guide the four critical stages of query processing: agent-based classification, question decomposition, filter operator generation, and entity resolution judgment." + }, + { + "index_id": 240, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 14, + "page_path": null, + "pdf_id": 240, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Specifically, we present the prompts designed for agent-based query classification (Figure 10), question decomposition (Figure 11), and filter operator generation (Figure 12). Additionally, we illustrate the prompt employed for entity resolution judgment (Figure 13) during the graph construction phase.", + "title_level": -1 + }, + "summary": "The study presents specific prompts designed to facilitate four critical stages of the system: agent-based query classification, question decomposition, filter operator generation, and entity resolution judgment during graph construction." + }, + { + "index_id": 241, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 241, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "You are an expert query analyzer. Your only task is to classify the user's question into one of three categories: \"simple\", \"complex\", or \"global\". Respond only with the specified JSON object.", + "title_level": -1 + }, + "summary": "The user's query is a system instruction directing an AI to act as an expert query analyzer that classifies questions into \"simple,\" \"complex,\" or \"global\" categories, requiring the output to be strictly a JSON object containing only the classification result." + }, + { + "index_id": 242, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 242, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Category Definitions:", + "title_level": -1 + }, + "summary": "The provided content is incomplete as it only lists the heading \"Category Definitions\" without supplying the actual definitions, categories, or data required to generate a summary." + }, + { + "index_id": 243, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 243, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "1. single-hop: The question can be fully answered by retrieving information from a SINGLE, contiguous location in the document (e.g., one specific paragraph, one complete table, or one figure).", + "title_level": -1 + }, + "summary": "A single-hop question is one that can be fully answered by retrieving information from a single, contiguous location within a document, such as a specific paragraph, table, or figure." + }, + { + "index_id": 244, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 244, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-This includes questions that require reasoning or comparison, as long as all the necessary data is present within that single retrieved location.", + "title_level": -1 + }, + "summary": "Questions requiring reasoning or comparison are valid as long as all necessary data to answer them is contained within a single retrieved location." + }, + { + "index_id": 245, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 245, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-Example: \"What is the title of Figure 2?\"", + "title_level": -1 + }, + "summary": "The provided content does not contain any substantive information to summarize, as it only consists of an example question (\"What is the title of Figure 2?\") and formatting instructions rather than actual data, text, or an image." + }, + { + "index_id": 246, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 246, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-Example: \"How do 5% of the Latinos see economic upward mobility for their children?\" -> This is SIMPLE because the answer can be found by looking at a single chart or paragraph.", + "title_level": -1 + }, + "summary": "The example question regarding how 5% of Latinos view economic upward mobility for their children is classified as simple because its answer can be directly extracted from a single chart or paragraph." + }, + { + "index_id": 247, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 247, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "2. multi-hop: The question requires decomposition into multiple simple sub-questions, where each sub-question must be answered by a separate retrieval action.", + "title_level": -1 + }, + "summary": "Multi-hop questions require decomposition into multiple simple sub-questions, each necessitating a separate retrieval action to answer." + }, + { + "index_id": 248, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 248, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-It often contains a nested or indirect constraint that requires a preliminary step to resolve before the main question can be answered.", + "title_level": -1 + }, + "summary": "The content describes a problem structure featuring a nested or indirect constraint, which necessitates completing a preliminary step to resolve the issue before the main question can be answered." + }, + { + "index_id": 249, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 249, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-Example: \"What is the color of the personality vector...?\" -> This is COMPLEX because it requires two separate retrieval actions.", + "title_level": -1 + }, + "summary": "Determining the color of a personality vector is a complex task because it necessitates two distinct retrieval actions." + }, + { + "index_id": 250, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 250, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "3. global: The question requires an aggregation operation (e.g., counting, listing, summarizing) over a set of items that are identified by a clear structural filter.", + "title_level": -1 + }, + "summary": "The \"global\" category defines questions requiring aggregation operations, such as counting, listing, or summarizing, performed on a set of items identified by a clear structural filter." + }, + { + "index_id": 251, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 251, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-Example: \"How many tables are in the document?\" -> This is GLOBAL because the process is to filter for all items of type 'table'.", + "title_level": -1 + }, + "summary": "The example illustrates a global query, where the task involves filtering the entire document to count all items of a specific type, such as tables, rather than focusing on a localized section." + }, + { + "index_id": 252, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 252, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "User Query: query", + "title_level": -1 + }, + "summary": "The provided content consists solely of a placeholder label (\"User Query: query\") and contains no substantive information, data, or context to summarize." + }, + { + "index_id": 253, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 253, + "pdf_para_block": { + "docling_label": "paragraph" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 10: The prompt for query classification.", + "title_level": -1 + }, + "summary": "Figure 10 presents the specific prompt designed to classify user queries." + }, + { + "index_id": 254, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 15, + "page_path": null, + "pdf_id": 254, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "16", + "title_level": -1 + }, + "summary": "The provided content consists solely of the number \"16\" and lacks sufficient context, text, or data to form a meaningful summary or draw any conclusions." + }, + { + "index_id": 255, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 16, + "page_path": null, + "pdf_id": 255, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "You are a query decomposition expert. You have been given a \"complex\" question. Your task is to break it down into a series of simple, atomic sub-questions and classify each one by type. **Crucial Instructions:** 1. Each ' retrieval ' sub-question MUST be a direct information retrieval task that can be answered independently by looking up a specific fact, number, or value in the document. 2. ** ' retrieval ' sub-questions MUST NOT depend on the answer of another sub-question.** They should be parallelizable. All logic for combining their results must be placed in a final ' synthesis ' question. 3. A ' synthesis ' question requires comparing, calculating, or combining the answers of the previous ' retrieval ' questions. It does **NOT** require a new lookup in the document. You MUST provide your response in a JSON object with a single key 'sub_questions', which contains a list of objects. Each object must have a 'question' (string) and a 'type' (string: \"retrieval\" or \"synthesis\"). ---EXAMPLE 1 (Correct Decomposition with Independent Lookups) ---Complex Query: \"What is the color of the personality vector in the soft-labled personality embedding matrix that with the highest Receptiviti score for User A2GBIFL43U1LKJ?\" Expected JSON Output: {{ \"sub_questions\": [ {{\"question\": \"What are all the Receptiviti scores for each personality vector for User A2GBIFL43U1LKJ?\", \"type\": \"retrieval\"}}, {{\"question\": \"What is the mapping of personality vectors to their colors in the soft-labled personality embedding matrix?\", \"type\": \"retrieval\"}}, {{\"question\": \"From the gathered scores, identify the personality vector with the highest score, and then find its corresponding color from the vector-to-color mapping.\", \"type\": \"synthesis\"}} ] }} ---END EXAMPLE 1 ------EXAMPLE 2 (Decomposition with retrieval and synthesis steps) ---Complex Query: \"According to the report, which one is greater in population in the survey? Foreign born Latinos, or the Latinos interviewed by cellphone?\" Expected JSON Output: {{ \"sub_questions\": [ {{\"question\": \"According to the report, what is the population of foreign born Latinos in the survey?\", \"type\": \"retrieval\"}}, {{\"question\": \"According to the report, what is the population of Latinos interviewed by cellphone in the survey?\", \"type\": \"retrieval\"}}, {{\"question\": \"Which of the two population counts is greater?\", \"type\": \"synthesis\"}} ] }} ---END EXAMPLE 2 --Now, perform the decomposition for the following query. User Query: query", + "title_level": -1 + }, + "summary": "The task requires decomposing a complex query into a JSON-formatted list of atomic sub-questions, strictly categorized as either \"retrieval\" or \"synthesis.\" \"Retrieval\" sub-questions must be independent, parallelizable fact-finding tasks that do not rely on other answers, while the final \"synthesis\" question must combine, compare, or calculate the results of the retrieval steps without requiring new document lookups." + }, + { + "index_id": 256, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 16, + "page_path": null, + "pdf_id": 256, + "pdf_para_block": { + "docling_label": "paragraph" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 11: The prompt for query decomposition.", + "title_level": -1 + }, + "summary": "Figure 11 illustrates the specific prompt designed to facilitate query decomposition, a technique used to break down complex questions into simpler, manageable sub-queries for more effective processing." + }, + { + "index_id": 257, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 16, + "page_path": null, + "pdf_id": 257, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "17", + "title_level": -1 + }, + "summary": "The provided content consists solely of the number \"17\" and lacks sufficient context, text, or data to form a meaningful summary or draw any conclusions." + }, + { + "index_id": 258, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 17, + "page_path": null, + "pdf_id": 258, + "pdf_para_block": { + "docling_label": "code" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "You are a highly specialized AI assistant. Your only function is to analyze a \"Global Query\" and return a single, valid JSON object that specifies both the filtering steps and the final aggregation operation. You MUST NOT output any other text or explanation. ### INSTRUCTIONS \\& DEFINITIONS ### 1. **Filters**: You MUST determine the list of ' filters ' to apply. Even if the filter is for the whole document (e.g., all tables), the ' filters ' list must be present. -' filter_type ' : One of [\"section\", \"image\", \"table\", \"page\"]. -' section ' : Use for structural parts like chapters, sections, appendices, or references. -' image ' : Use for visual elements like figures, images, pictures, or plots. -' table ' : Use for tabular data. -' page ' : Use for specific page numbers or ranges. -' filter_value ' : (Optional) Can be provided for \"section\" (e.g., a section title) or \"page\" (e.g., '3-10' or '5'). **For \"image\" or \"table\", this value MUST be null.** 2. **Operation**: Determine the final aggregation operation. -' operation ' : One of [\"COUNT\", \"LIST\", \"SUMMARIZE\", \"ANALYZE\"]. ### EXAMPLES OF YOUR TASK ### User: \"How many figures are in this paper from Page 3 to Page 10?\" Assistant: {{\"filters\": [{{\"filter_type\": \"page\", \"filter_value\": \"3-10\"}}, {{\"filter_type\": \"image\"}}], \"operation\": \"COUNT\"}} User: \"Summarize the discussion about 'data augmentation' in the 'Methodology' section.\" Assistant: {{\"filters\": [{{\"filter_type\": \"section\", \"filter_value\": \"Methodology\"}}], \"operation\": \"SUMMARIZE\"}} User: \"How many chapters are in this report?\" Assistant: {{\"filters\": [{{\"filter_type\": \"section\"}}], \"operation\": \"COUNT\"}} ### YOUR CURRENT TASK ### User: \"{query}\" User Query: query", + "title_level": -1 + }, + "summary": "The system is a specialized AI assistant designed to process user queries by generating a single, valid JSON object containing specific filtering criteria and an aggregation operation, with no additional text or explanation. The JSON structure requires a \"filters\" list, where each filter specifies a type (\"section\", \"image\", \"table\", or \"page\") and an optional value (required for sections and pages, but null for images and tables), and an \"operation\" field set to one of four actions: \"COUNT\", \"LIST\", \"SUMMARIZE\", or \"ANALYZE\"." + }, + { + "index_id": 259, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 17, + "page_path": null, + "pdf_id": 259, + "pdf_para_block": { + "docling_label": "paragraph" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 12: The prompt for Filter operator generation.", + "title_level": -1 + }, + "summary": "Figure 12 presents the specific prompt designed to generate the Filter operator." + }, + { + "index_id": 260, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 17, + "page_path": null, + "pdf_id": 260, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "18", + "title_level": -1 + }, + "summary": "The provided content consists solely of the number \"18\" and lacks sufficient context, narrative, or data to form a meaningful summary or draw any conclusions." + }, + { + "index_id": 261, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 261, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-Goal-", + "title_level": -1 + }, + "summary": "The provided content contains only a goal header without any actual information, data, or context to summarize." + }, + { + "index_id": 262, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 262, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "You are an expert Entity Resolution Adjudicator. Your task is to determine if a \"New Entity\" refers to the exact same real-world concept as one of the \"Candidate Entities\" provided from a knowledge graph. Your output must be a JSON object containing the ID of the matching candidate (or -1) and a brief explanation for your decision. -ContextYou will be given one \"New Entity\" recently extracted from a text. You will also be given a list of \"Candidate Entities\" that are semantically similar, retrieved from an existing knowledge base. Each candidate has a unique ' id ' for you to reference.", + "title_level": -1 + }, + "summary": "The task requires an expert Entity Resolution Adjudicator to determine if a \"New Entity\" extracted from text refers to the same real-world concept as any \"Candidate Entity\" from a knowledge graph. The adjudicator must output a JSON object containing the ID of the matching candidate (or -1 if no match exists) along with a brief explanation of the decision." + }, + { + "index_id": 263, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 263, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "---", + "title_level": -1 + }, + "summary": "No content was provided to summarize. Please supply the text, image, or table you wish to have condensed." + }, + { + "index_id": 264, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 264, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-Core Task & Rules-", + "title_level": -1 + }, + "summary": "The core task is to condense provided content (text, image, or table) into a self-contained, informative summary that captures key points and stands alone as easily understandable, using any provided title to identify the subject, while strictly beginning with the main conclusion and avoiding any introductory phrases describing the input format." + }, + { + "index_id": 265, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 265, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "1. **Analyze the \"New Entity\"**: Carefully read its name, type, and description to understand what it is.", + "title_level": -1 + }, + "summary": "The \"New Entity\" is a distinct subject defined by its specific name, classification type, and descriptive attributes, which must be carefully analyzed to fully understand its nature and purpose." + }, + { + "index_id": 266, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 266, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "2. **Field-by-Field Adjudication**: To determine a match, you must evaluate each field with a specific focus:", + "title_level": -1 + }, + "summary": "To determine a match, each field must be evaluated individually with a specific focus." + }, + { + "index_id": 267, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 267, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "* ** ' entity_name ' (High Importance):** The names must be extremely similar, a direct abbreviation (e.g., \"LLM\" vs. \"Large Language Model\"), or a well-known alias. **If the names represent distinct, parallel concepts (like \"Event Detection\" and \"Named Entity Recognition\"), they are NOT a match, even if their descriptions are very similar.**", + "title_level": -1 + }, + "summary": "Entity names are considered a match only if they are extremely similar, direct abbreviations of one another, or well-known aliases; names representing distinct, parallel concepts are not considered matches regardless of how similar their descriptions may be." + }, + { + "index_id": 268, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 268, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "* ** ' entity_type ' (Medium Importance):** The types do not need to be identical, but they must be closely related and compatible (e.g., ' COMPANY ' and ' ORGANIZATION ' could describe the same entity).", + "title_level": -1 + }, + "summary": "Entity types do not need to be identical but must be closely related and compatible, such as 'COMPANY' and 'ORGANIZATION' describing the same entity." + }, + { + "index_id": 269, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 269, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "* ** ' description ' (Contextual Importance):** The descriptions may differ as they are often extracted from different parts of a document. Your task is to look past surface-level text similarity and determine if they fundamentally describe the **same underlying object or concept**.", + "title_level": -1 + }, + "summary": "The core task is to evaluate whether different text descriptions refer to the same underlying object or concept, prioritizing fundamental semantic equivalence over superficial textual similarity, as descriptions often vary due to being extracted from different document sections." + }, + { + "index_id": 270, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 270, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "3. **Be Strict and Conservative**: Your standard for a match must be very high. An incorrect merge can corrupt the knowledge graph. A missed merge is less harmful.", + "title_level": -1 + }, + "summary": "Maintain a strict and conservative standard for merging records in a knowledge graph, as incorrect merges can corrupt the data while missed merges are less harmful." + }, + { + "index_id": 271, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 271, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "* Surface-level similarities are not enough. The underlying concepts must be identical.", + "title_level": -1 + }, + "summary": "True equivalence requires identical underlying concepts, not merely surface-level similarities." + }, + { + "index_id": 272, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 272, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "* For example, \"Apple\" (the fruit) and \"Apple Inc.\" (the company) are NOT a match.", + "title_level": -1 + }, + "summary": "Entities with identical names but distinct meanings, such as \"Apple\" the fruit versus \"Apple Inc.\" the company, are not considered a match." + }, + { + "index_id": 273, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 273, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "* **When in doubt, you MUST output -1.**", + "title_level": -1 + }, + "summary": "When in doubt, you MUST output -1." + }, + { + "index_id": 274, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 274, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "* **Assume No Match by Default**: In a large knowledge graph, most new entities are genuinely new. You should start with the assumption that the \"New Entity\" is unique. You must find **strong, convincing evidence** across all fields, especially the ' entity_name ' , to overturn this assumption and declare a match.", + "title_level": -1 + }, + "summary": "In large knowledge graphs, new entities should be presumed unique by default; a match should only be declared after finding strong, convincing evidence across all fields, particularly the entity name, to overturn this initial assumption." + }, + { + "index_id": 275, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 275, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "4. **Format the Output**: **You must provide your answer in a valid JSON format. The JSON object should contain two keys:**", + "title_level": -1 + }, + "summary": "{\n \"summary\": \"The output must be formatted as a valid JSON object containing exactly two keys, as specified in the provided instructions.\"\n}" + }, + { + "index_id": 276, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 276, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "* ' select_id ' : An integer. The ' id ' of the candidate you've determined to be an exact match. If no exact match is found, this value MUST be ' -1 ' .", + "title_level": -1 + }, + "summary": "The `select_id` field is an integer representing the ID of a candidate identified as an exact match; if no exact match is found, this value must be set to -1." + }, + { + "index_id": 277, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 277, + "pdf_para_block": { + "docling_label": "list_item" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "* ' explanation ' : A brief, one-sentence string explaining your reasoning. For a match, explain why they are the same entity. For no match, explain the key difference.", + "title_level": -1 + }, + "summary": "The provided content defines a specific data field named \"explanation\" as a concise, one-sentence string used to justify entity matching decisions by either clarifying why two entities are identical or highlighting their key differences." + }, + { + "index_id": 278, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 278, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "---", + "title_level": -1 + }, + "summary": "No content was provided to summarize. Please supply the text, image description, or table data you wish to have condensed." + }, + { + "index_id": 279, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 279, + "pdf_para_block": { + "docling_label": "section_header" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-Output Schema & Format-", + "title_level": -1 + }, + "summary": "No content was provided to summarize; therefore, no core conclusion or summary can be generated." + }, + { + "index_id": 280, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 280, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Your response MUST be a single, valid JSON object that adheres to the following schema. Do not include any other text, explanation, or markdown formatting like ''' json.", + "title_level": -1 + }, + "summary": "{\n \"summary\": \"No content was provided to summarize.\"\n}" + }, + { + "index_id": 281, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 281, + "pdf_para_block": { + "docling_label": "code" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "''' json {{ \"select_id\": \"integer\", \"explanation\": \"string\" }} ''' ----Example-### Example 1: Match Found ### Example 2: No Match Found -----Task Execution-", + "title_level": -1 + }, + "summary": "The system processes requests by returning a structured JSON response containing an integer `select_id` and a string `explanation` to indicate the outcome, which is either a \"Match Found\" or \"No Match Found.\"" + }, + { + "index_id": 282, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 282, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Now, perform the selection task based on the following data. Remember to output only a single integer.", + "title_level": -1 + }, + "summary": "The provided content does not contain data to summarize; it is an instruction to perform a selection task and output a single integer, but no actual data or options are given to make that selection." + }, + { + "index_id": 283, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 283, + "pdf_para_block": { + "docling_label": "text" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "-Input Data -", + "title_level": -1 + }, + "summary": "No content was provided to summarize." + }, + { + "index_id": 284, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 284, + "pdf_para_block": { + "docling_label": "paragraph" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "Figure 13: The prompt for entity resolution judgement, examples are omitted due to lack of space.", + "title_level": -1 + }, + "summary": "Figure 13 illustrates the specific prompt design used to guide entity resolution judgments, though detailed examples are excluded from the figure to conserve space." + }, + { + "index_id": 285, + "parent_id": 239, + "type": "NodeType.TEXT", + "meta_info": { + "file_name": null, + "file_path": null, + "page_idx": 18, + "page_path": null, + "pdf_id": 285, + "pdf_para_block": { + "docling_label": "page_footer" + }, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": "19", + "title_level": -1 + }, + "summary": "The provided content consists solely of the number \"19\" and lacks sufficient context, text, or data to form a meaningful summary or draw any conclusions." + } + ], + "meta_info": { + "file_name": "BOOKRAG_VLDB_2026_full.pdf", + "file_path": "/Volumes/ExtMac/Projects/Exorty/BOOKRag/BOOKRAG_VLDB_2026_full.pdf", + "page_idx": null, + "page_path": null, + "pdf_id": null, + "pdf_para_block": null, + "img_path": null, + "image_width": 0, + "image_height": 0, + "caption": null, + "footnote": null, + "table_body": null, + "content": null, + "title_level": -1 + } +} \ No newline at end of file diff --git a/e2e_test_output/tree.pkl b/e2e_test_output/tree.pkl new file mode 100644 index 0000000000000000000000000000000000000000..28163875ca5430be876013ce535e3953f1235e48 GIT binary patch literal 229402 zcmd44Ymi;pb>BDQLnK8}4~v#enYNBbAki3gHwLeHU^o;p7+?qu9y36T18F#hZg=1A zdk5WpoA-7DXlf=VC0P{hwmqUCSqdeZE=P%7wkxWXWyy@omBgx4rJPDqDOa4R%1(L8 zuK0^>Rmv4RU#$H8YpuP{KKIdm0FrWsH5{P(-gEX|kNxy_y5fO>-YEHx7pq4-0E+w4eV1__}eA@rGDkDTdVz*om;nTf$v-EZ**^M zbvC>AukQO_wmUmL{_@`K&U*J&fA!w|7a!SwpZz6%^R3&fYy9H=i|^R~4*ikUb#5(h z3|4OQ$o&tj4puh$TkE$rI?LUSw6@Xyd;6Q~eAJ%({{E&Oez(8MUwQnu``>%r{(5gm zKX}hdXM3kV*wQ-I27{fg!HyRAZ9AQ1mb*My-Q#cXSs85Yh%PrDdCwz{-01CAuXMK7 ztEFDII^XMWbw}Om$F}-+y2DX_XRjKpRi7O2>lgXI`RYcmyY*TAtwz1wyL{`^Cs_0C z#g*OO?Zxiu?&8W;_2X<}qhI|*Z?OA-&)lx^YRd;QzyRyS}DI$;7F{i7E1%izj>H2VKDyf-vZre9<#WfXozCd?e09CMGwgTobT-cI zu1oH_tJMqLt?sa6Uzxjp?uBFX)!klyrC0GFK02y;aCc*`8g@7M-qubfA!SMSg|*>e zvqFfw!>!InwKCY;-ss+|5G7Np(R|hGu*;pDVP{3J+8K6v>FQwDe#q;!PJ71kV5i5E zS9eD{!#$S1T6I=BtKH3hXR*3)ug{Ly2dk?(+uOrIXQju&25X2>wZ_Z%^H#NP``9So zuIE5TqzG}^7z}P3h1OUMf9UK~5LO%OY%JUz3^!KmuU2!TT}Z&<;l*wCq5o`jcWg&n ztMS9`&dTC3wg~e&kO?Xd0frSQ!7g@Jc6Nu|M9jf(y|dN-EURWc{UM|>9q`Ss_7MU> zMYTTcZ0&AzhLU{94R`1HZ)a7zM=-VrgJDA^;Dl}I<#Wd0#cF9#byh*9k-Z32+URfg zcZ^v)>TVYr?+gd4yU5dXYzd0av-U0Mv(X?gk3-bNGrb}+w7T1ePls)`dvAMV(BBzV z8-sNtN2U$?H=ZC5{80kHMv*LEptdNf+p|3#Aa{$^jqUDAe@zeH*t2~t?}EsAD@YP@ zSa3lfWHZ{c;XfSRli*4)MclD1A*fyFjkGXrKQVLE9p2GSjK1?NAtrWY`|X4K}gUt%=acmR;CorUGj2(mcQ1AzKlqwW5XpF$z+UUn$y z`^7;#f2r3U3`Kc^iq$<#ku#%O+31W$um%Dp1ku{NK*L}UqCunn26lLrEe94=Xy5I% zjlo^%IyyZP93n*Ek1)!#d#5LsV0yY>QD=3qE!kY|Zmsk-JHy+f3al7x!En*ibUVZw z96|cTt`Ta`T^Ot_u&IU4aHmwH`D)Z(-!g&P+TjI*-JO755mQ9M&hU)>7D#{w)Jq?B zC0fQFl(4h1vWrOVi7rURW(NlIuO1?B>>}^Bw>3n!&*JwM@9)2#A7UL%-S7YCAMnra z{vWw@YkO}MwC%6lGAYIGU)}${;-?UJV|8?E)Rjx{7x6rPsQ1y{M|zLHwg185Q`^J- z9d@m6?=J7Zd$qeQ%l!_lx)db5fp2HG+TJaR(fu#(zh|_&2~qd%-+c9*k35p-*ca~t zC=%lqW?PXA)Nn?$gOfteB90HC z`@73!z|e>udf(IgSnq?q5B0vk_u&XIet^)V_k&k^k6!Kl(2I}sj$G}1+55ed4n4h7S9_;RJn20Fbo8El@twV=c-zxo?47;&9mG=@fNJ`)Dnkm;c5AgW zTs84u2^R!$+e3a$Gs1Y+@E}JcoW7N6y954?s_ot7jsB=-8f3=krQu+u+m$~g|IdE( zDLD)dAPxgNATkw zS6Enre!E9^wmMgRvh+r8ByV(~bC-}5iw+uv=|7kBMdZ)X!E|5;hR=tK|9o=s7hMYG zs}oPpoj7*3x_R^F0{_leCm%m~W)Z~fpS^i=@#f9r{E+{&le2fboV^1%OK6h)R>7c~ zp%Ui7_OVSG={b^mcZ(M`w>8UnlO`U0y^E zkB>T=Cr_Pz`sv4yhi)vkQ>ynkw|;i^;-DZt4PaZZO{ltPX-+S)48%x*EonL|^FMi8zHfE2TdwjC@ zk++gLdk5z1oxP`jzIS&2HmtiZ>;{{&eA zp^}CrZnhCQ_quYcuXQ?6mM3-q%Wy|DS1|c}_SbZ~EoC zi0-NC)h8Z*&B*csX`8Knb#n1c_3DXJuX%!G*u68@*cGsuM<9BSH62@ zzIx&W|DJh`#0Fmg(mg+8fyCN^Hm3GtWI325xU8!LbdnYY!lP{nV6jDH z%@h?Yqh^rk7EXJWEU|C1cv?d<2qO|#HmE^^aS20J+X&USg;3SG-xQjBP z#u+swA$kO`sV6LAjE~2gM#q=;7PeLvwpNexxZ|SPoqqQ&MrmcRZE0rL#5G0j2@wV%DxQllAS&7c5!ZW40p>=*Zm3mMnOC_A;mHmKU>_E=Hc7i=eqLE z;mka47zt2qe1|v~T3{i2SdrBTV962pmkl3KUi%2e1APjDubQXb9V(nwa%QLyO(~|; zXA)18G7F}tfPie^pSxdSS@gsLOEx!Xk6D%{KZE?qA(7rV4mT(-Gnhqp2K6UGgEp%4 z{l&Y7{wZxxqcXN6_J*`g8P$(GB$$_iN+!>NiyfWox7U~L^r3#JOMb;=|te!wI z)I_3#IoX2;0Cbh8FoWE9u2ukTz(!E-ILv0q{((}i72}}$H_x#>&NZ&BmdaB7j6mnZxMGtacgaNV`Cv+ zwQyo_du#oEoekRmZtUXPvqyjExKwp?{KV;__j`-`kKDHuQSZN;NChqS9_uai+=s3` zXeER`;7t2l^3E~<93aeud>fR0dV>vFd1)WT57U_~B4gDwqrjBXF{p-@lquL?7GykJ zl}FM++;ur_o`lURe5XIsPlfWSZqd-?$z)9%ME;K8;DO1So4@zYM;@`NB6&y*gBgnv zuCZL%Cts^G&>#=~81}5{?5BQ1W-otW<^B|qB)hcl|47Vc(bFN1s)^RFnh@FRtKt4RJXSV zcd3s-f4wCoA@tqd9q0)yWo{Bgsa8EHh{4zvz~`+G zwic^vp7!%_U2romP{5^3PxMfu*=BslrUEg*vd z5n1)u2Se5QrmNd3%aHqd1UVF|DA{A{GY9fdTQwEC|Q4YLu#Hbl%=e+l#E1;z%`wn-E zUVFzQkGx`Kz*cF-+z5i^QnK%_LsHK{6eWBy@4$Ey*>d?)R6qjFamLkpqjT38hU#q!`<|{Wq-;-SREmRzw zVeM&sz7V_--sb*8hjt>iX$=jE^!3vyl4ze%MhF)^8(FjS-Bo~=3 zA+kEXMr0+_YQRcllgyTw^od}W6ZR}iRwC?mvpo;tjK?xm$`*D+m6`89id@`qg-;HfVMdsDbCM!0J3#TSm% z?K|R$974g~Zdej_MxZDkEkO2i7q?(b(BUOLYzKDO(rKLyY#E@jiKlhqH3?Ltb{dIX z#euR^tlQcr^k8i=oGEOX)T2u~O8t`gaGDKk^yg3qbQjPs z+uNJi+Y8BZr9H*_#()Z+jRu##Fe$v95|GaFdIOA-IF?qHB#|cU81RUlsmd)rQqod3 z+Oh~mY0xAxR5=O1FeymYR6vnwn!-t{#@m<52fNEClTusN7m{}Ap)Mxko9Bh=@*^%> z)+KE?`vHzH;H(O8(}imEOs&J@?$qm2RK*JwV#7%f#u_EFu85qSB=j!bS@x~Z3`hxK zPrYPWo=a&iXgeu}C^h+47x5|L$S+(5llb6qNF`<@0A@C4e2X_{d{+wkQ(N?`e9OlJ zF~`#_v#=9}QVL3mmzHkncX_P-#c2tau@_|np9D6@V)#Sz@UDe~{1WMP``t*Z$fSZ) zQ`0J-SZsC%QB@C={WvhI5(NHkCvfi{L)hML9+2U9@+cV&K5_i!58%_hQKWYOey}>pw>5xg2n(496M-xT$QU}P6AHHl2 zu&+c%q(1j;Z!ApwGv!D5GY9=He`xj}W_^9?&!_y5^*Sm9=oyWmZ*AIZ&@jU<+9!NT zcE^2?Hspnl)Blrg)fkW#Lm)EH*Ye^+)|rY|l;eG-qM_ z!;^oXx-LF8_2=!^i!fbSx{T}e?3rw9i|^(kcPI+9y9+ox_MEpS<2j`CYwl z?CTt{%4v5Pek@YWoz3X>l zmAv1_ePDTb^6H3@f+YA8wAQ8OYOp z&@S$idG`Z5dts@pu#7Vd(_z;BkF-h<_ul!)BMmZY$>g$BP)-r9_M=oSe7UcZ zNj`IuC@=@bBgmqMWF@u`JM9)}vol`$3>-EaN3>|)AgbZ80QB(JnW&T@U_>10!L@6t zg_`?`@i$}5f7h&J#2?@wg)&<$BJ#7TB6wQz}sgcpP5d5qUjv1Er zF@!TsTQD6nbwe@50)!;XYJ{!uP;-x zzetQLR-vvb%^>Al?RK|izqcZ<#bOd1W*qcNK}ra+yrnv!nM4H9APXuWFP~l@X_%7< z^Fba^;D<2?Y~N76hmX+|&FXcyG$lVqb_}jAm}&iubel_GEii6|QrSpu0`Dk0F?`dD zm6v2f%WEGa(LEc;Nz!2JR3MwO_vWfoa!tN$f>ImTXm3k8(*LX^sH401R z*`RaQozKvRHPGfTsL3jkG9C#n#_+~!K{A{R?jzRqN1$R10h&tZE!Uye&F!ey!QGk# zQ^W!T=^}w=$j%I1dnR1-*eb8IfF*=Od??~0m(~uzTkzkW+)xbUId>2QCvDr4(wLye zA{vocD0qjHnG)Vm8y%pQgxgujX&N_0(`wxbje6Jw=Lg#x!+(j~QA;G)r$(0g8|34r zwolm_8n=gib)i_vb-lBV=!=?TN7gH2M?^r`_gLuUkp_`#R$E^9!m5wZ`Aw6D+}*Jt zKyja^7zn$I)2iunY7#I4kJqGxUXjNaYo-`j{Wu9K8!-;1$NITZe{nq@pmgJsx1>6n z^V>WCgf8n3WV@*HC?uh#s!Cgm?$T?HBIF+IjQ3&ycaS%|+SVrL6?G6}6ntdE#lxo^ zPR+|mwyZ8i+RhI;8V@lo?6sAbWE8)>qa;zzy*Vdewt2Sr+7;|nFTP;wCeD+7G|Erx z1t?YAbWs6s%nT6v+ZlJBDH7-1(2zu+hQFf+X(K#3JtFkbW;hJJZ^*|p=zO{##BUdO ze9!^;-xWzC#fiMlL*90Ro#j;smRKGUSvDs*eq8%0?n)%4liKLcJIzVF2P8Fp_xZ`w4E1Q(ykXa9J4m%-j8L*~2j1{?{I(`NW zH#-r+XACdSP$O@6mBt_m3)RotXi6a{mJxX%IeDlEGkrgJn?sA-TQt?51QR87 zzI=Er{uxeMg)ELCN(EjmS`gGX0N34r5jHUihDJCeNKmfBsdoC&Fi;WhdPgcpKr=v7`EtSoNeH<_#jFxT?HT@;YkBfrVhO z9YXz4N2tG`%m@i8oLm?k+vi1@y++1b21esGWTFc@%Ie#jjA(Fw9*}WJUhtgGn`Zvv z;n^uVXWD>yU!JCi@-=IKH

    B3z6Z!f1lRE86L}J4|ZgWOdA14i)^!buqhx3pTZmGwxlf z#BHApgIG+KX+)sz?K_IuDeQc>-+iWgsD;-Z*a`iS#ju)i6qW2Eih)yQZ6*hKi&Q8E zI+$j?X_ty7sf*2dI8@)1n%Ba!^_HNjHH4;4M&#JM5+Bin9(!N%4N|@kZdGPoWa&;whftq)H9+d=rM&gl9Q${*+HNJ14UlLU?yE>E9eoskI&F`adlban{QEx%=Q)fn(3A;C?P+rOkY<%v=- zH3&w`rjwzT{&6ob-lc7-5P?`JpO%M6?UF=OJ8Y3lQ(V_>DpX{sl#5IBAR_U(1e>6b zLx(ph0XDg+kO<~Nwt{~!QF`2+6Rq|0>1e!3lurM{ zXtO0=e4pdRlfnyUSCfP~y5!Rg9Ra3uO0=w@6X6!Ew9pjGEaX@Qro^zVoDiKdA}rAv zrIYtQNn40Wyv2!iMS4U5Dzi5zH6ANyHHVPQlAJ)}kDJg4n-bZPNb1gc1N zgXete9s} zPc`VoNlGAC<79f|X`o!dXlJ5O)Vc@Fj@hPg$IC*(b2+5hali|zmvkmQ2FDVQZmLsC zpC(h?(rM2K;5}$g_Jhz<&XwNfZC0AVW@A^NL}P*Y4>qw=AIAd;Jv2g=8=4wu>G6}^ zcR_28xP|%RY*HN2wiCT2L!NBuu>1)ViHFssPHHt{4Z?k zrLBeYDu;3OhvHFpVTl?C=r{+fkJ*Z|RX^yIJ5ry{-YgRyMP|D6gmc*A(Q24ZVvRhZ z(GMWhu9xWVa*}sr3&QJ|DhnuE#B^>T@{ygH@{pffiiRpp*=W`h;mfw^dO5<6tccCa zq>9sw^;30I=$y~JO^?zg7%3X2)zl7ci3uGnwvQNxTr1>z3*wu z)GC;Ic$9wge~L!T8GKrdX6n?isv@vYOtBGt>43n%W}g85Y9z4m$>+aX543$JOMv+~ z39lBb=NXUy(wGnpmT6f<#ONwh*<^Zw$N0l2!>IV#G%e*p(!|5$dcj6%?ijD>0vgdf zYOy~vTWS?c>x0ccf#Z`)S1!+2FFk*eHwhw#Oo))7JI1?MaPd_+IUUW+P6^_J*unvYQ%`Yx`=ZQ5>U+Czr(+{0m}SEe>TGyW9V2CK?NgSPWUK?6&rZ!H zw-wINEMzp1Po$h$_##lWzfdgrZg)9rq*e7B+Yy5l^LS&4@zV( z>qhA!8u3!9xo$X4G_AGX@s}i`?gg>IHrbTR31HOiwn8hLj_n?C-TiK`nuWt=A=*c! z#;=}yYQ8%CIR8TBGpB;W%7Ck(bH2KKZRy8uP=R6!Cp6@m6*mh7qolE<0Q%%X^E+WjIdA>NvR+zZt)Sxtl$)YSBBQ}yzL3CYMB^ZS;MFUqO+uosl zQe)#(B#_R@DYvQL!7(F3J?cSC{v2db_FrvMg?y2*Qyd}UNz1cPC^o}iLjX10D(N$y zHcP;{e!h^?`O!8lMVvCi>eZ7t$fwY;GpAo`X)G#tf`1n$*pG`e5$>SNgw(}|9s(pN zzE+vHlweJD-K?70bWKHb;_pGHngz_v_FH#mMETAC4!;B0)dUPQ# z0w2Y8?5hDg2|CLChRA1-V<4fcpq@FdfN?aT)SgLgv^O`@&PRDkjZAamm8SH(PC`?( zb}8prDvAm618GW9W7kIdZq5Y=diR_iZ}i=T%GeDV#gUjX(U$=Xp+{6w1?ymukKtTW zHeU7cuEGztcNKIzkBr-xZ)ShbbIJgRJM<9<%7BGP5XKEB&mSYn(W2{$JL+G4 z&+Hqwshzm}$9re8NpTsEd$w#vr6mx-k|z4$64|iA&y@>gRbEjfrt}l_qHrof<{+vp z{JM{$!fiy6JcDd3eg&V`=^aQUWTcFVKH@sjnrq$Kw(>{;h#VezGAHo#33&G$Ey%QW zn)B!715{ZbLlNu{BxGog%u~?KG+a=JMw@}3ZP?uzYz;Q;sx_g3o3f(yg&F)DrtreI z6GwF-Td%z<4pM0qjB#t`KFMI@DjT~?JxV0RaBg!QKeBwX!)t6v7YpFTz~ECbl-YFc zQj$ODM(pPNHPYKT=1HAxsOl6YOtPNr ztXiJJ5o{7LQbC%_@`5!;73IEZV$JypoT<81J6q$XNQ;k{Wm6D|v4rnj*n(1k2yJc5 z6^WNjK8CmNlt3KFNfP;weFgR;9M-W(#pby&>BiMn-Bfp+kb z#hV%TyB{!5qpBU4Ol$di#%%y1bSevlaV#B!@x6I>d znqO&`rlI6xcNra+!QcO{8w@g6-{%fF($)^VCFgPKCyGBWpOcY}GbP|6O0uT*KC@fI zvj>!6J?rcA5aIi7#h*eFn~iCf%-lvYeY zZf#6CVoBAA$sJE3**NGt7y(QUh?_<&#^Hh`d3kxpwG}{@|SQWrjC7OrW~#hZqKQR z=;5kdr8@aq{r<1N_1j7T<@_NJ!vUa%VFSr&3`NR*|JQ%v^Ee0=WZD;=t$s>B{2Be< zFIR8+2kg(!GHl&EMEn%@(pN~RE2(TbTDgBzfXAM1PGNl_=(#GM{}=V(zvR#Voc~$R z7g;b1J~Pfw-SN5jaNdYEQ6CEM7U2|lm=_%9b4fcz&fBjy!zt0A5}P$)ku?d1aQu8M zfGt0j2B>*xhHUPl*`qO(t!jt4k9bc@|4JMzTOXiV5FGa{d>HjJMZcN#Hpz$Q8*lw> zzJY5amT~By?h$SrJhov5xsx;6bolb`RB!*;pRS&BUYO&dmkQBTPIM-(l4IOpc03@h zTB+R-d;`cz$5kY|*#oXe)tZ9pcLw>%558Z_nHQk5ydabvR1B zi(>po+%Nn0W-^m1)lI%_w1_z;lXH-TOm@sRA&WdR$$L7F)u`PSb{3^5`3du;@T_D~ zo*FU68*}R?)ezoT0&SZ1B{ee5(ZaJ-kLgWLf=IkWjKL5*2G0;3D9GsmJn&!%I5Bvz ztcmdo^p?9uF;%ooW@>>kaVh=caN~fc9Q0)xSkOmgq%O^vDJ1!sf@|Z5P42!WNPjdy zx?S(WsdfVSQ8$}kU2-`0&cxiiFn+CqXqOroPJLq=7>t{7DhMX%0Em3GC??LP+V}3i zHx14?aQIy~!bgLM?+L`1HO6=ULk3h2ujxmfu$v-mT3~hL92Vfl-1GC*XO10lg;gw} zy+B6Z~45w}uIuJCmJksJCTIT6vus!|-IQ%no4k#L@`jy%s-@Gy^j=E!U+%^brN zWSMK@0PNp!^K?T)Yj?SAXN$&uP2Bd_MZyuceP~3#v|Aj^XAJcFWL>gSx)sJ$qb)h9 z=m9l(Wg9QwBIFgc&N;zuh?Mc@y zYsKyNrUzuW&DbDD5xTt|KK{(=cyQ;4b7yvS{QFKVo?zm%dt(>t)*6Lz?>Oi}H#LYI znN}wE5CKy7@CJ9ErqzFJjN#4ETv(RtAlCw{mUPW&SBa9(GqbkmP@1frl4 zFo`8Td^(EF>WgS80cw`b4NI}rBSVtznC5WO$*u;7vYnlMLObp1HxHqBx+oHl&B3~E zFr9)1dZ-*s9PpxOgdET;cJ*;({@K>z00VgAhzoLW3tT`J7b#dNxKsn=ylV=F)Bn5U~h40{?$ z!Xm4Az$?Nn&wYO==LYB@-stRr+t18_so+eEUN>RR;9&;ChcI8*q!Y%5(_t@v}zj=SI_x{)J~Nnu~ByoUX#^{ zfwekChMXAcrT|~(+L_*x;8Ay+?CAP!1#|Mdq#Pi?E?xpU%YCXkt)3bo%xALcAi9R^ z2G=WETGD2dvL`{+wJlq0E`Oxe>UR;lBp0_xNhsF}$f|@E-42!$j9V&L0cQ%WM8Wvz zoMP1@$Fq8D)`8d-L*oUl$aQgYVg%!O5?{_9p`R|)z`fK9j9RWnIS|6l(jiY>6G~DA z{ZR2dyNKHy&!8p45{2qGrqT@4IO`bcmO8XzZF$ybiVIRWK;{zu>!Ch^*}DEyd$?>X z=1TdWt_IDfx{ZaPR+3JK!19{YluWjiLXUdZj-4~)-b(9;Zs`jyxZU_2RO=Nx2x{rXc}12G#T=V ziL}M=O%YbZZtn10a{+U`!}695%8SJz*Lb%NL3LY?6<3RXF$v&o32EGfY7(nej0tU! zbs>ptC+o9CKGwO273J0c>OxLBG`fP`SvJiv<*VGEZyT2w@G|-L11a2 ztqnl8d-y@Sl8yzP26Ngqy{*7u(alZ-xj- zPJ@rVPG@p>R+|B3Ev&B6p2ywl{xb^)EZBAXRWlD1Z6%Qgm?4TpZ*)hS6dWRpQiunX z!-67*35ZFnG-^^x+*1x2$sWNp=_o~@p_w5k9?f`|(U~R_{wkx-1BwN%*HoEsU*&-% zqKSN1>chb9oqj&{@c_F+FaQ4MaqTtpp_dv6&`{9O-^iFab)uzuG|4H=Rdw&!l;yHt zxAT%W_L{QX2qS;djt$_mz;QJ61zlp+(9VPm{jEF7NQ^X?u(7iETB%x3g$Z$y)0R0Gy?!9#CnWaAG%>in%g#2e2~9&+RPnUhE3 zKCr93$6x=LyoHlL`Um_|7no+>d49r#V*me^a=>M;Gp|H-aCHESZ8U!BqMy{;cQ#On%yIMvGQ`XFca=+GK>Qsi*e8b>mMl*zD9)Af$JSbmF|wEUD`_yX-L zZ+&fEfBYOH2nq3NMzX(tA${cY`YSy+`ZOPD^dy-|*1nL}iuvH@Ezb`znPesp$#J~_ zZ6bBDM0hF(Sk9Ew=ja1D^A{gk<466IFrPYlF;6;7>YiWmH z%sb>~9O)CWUd$K0JF+$n{-mFy0;Ey&i#$Q=VSl_mztw(eRJ3>0!}!DF(b2k+B=pv# z0nEl5{_l&`+3M||`_fDHn$P<}^%Yy-g0bSV#Ch(8r3L-rSauF2<&an|UO2$yo9u~r zhI&M>DJQLW@{DGpLVfb{o`3Or3x3*NBr43i?(|)<486ZbC!$tph*3iTQW*}rSfDp$ z7l;{ky2X^+tE>*dhih6zQA3|kB4Y1o#tIXQ`~v&XP;b^&ezgu%J-Ovz9#sZt|gbx@pg!~N$ibStA6lwb@}Nb{5^ zazvetb4&Bp3tU@9XN#>9?%Fgiks-5AaYzgw$OQJjETso>({)&ev(=HMBM{KST04$W zNCA&(IHe{68DC}q#W52L@s|zc6)2T!J2cZC((p`mYM!B}gQ;W)-JQYEx@~IZ%FSY*S`SISDYBu%LMFEsf^s zRz_1US$0&zH?f_>Ic(Xih6Q!_SrRPfY&*yi7mq-WNO+S5mY=XrJw8p!P6#IGQ!$|- zz?t6if7J&ZT97UjNTq~k7o-U2ZICtMahxjIS(!YR6tIwdU=s`9hsj#K5edBQ%DS() zc}Y>gB$Q>m&$;*%vBgu}?9k|2+)=MI0z$LA!O{NJ0f%#Nwa5-&y_3Z!Q5?`{u+1~` z`EctmgP?kcMz$r0?!AcWe?)a1~VdrVb z&VNBRAY% z?kpl#f$ti}Cex+$Sz20U{!e-i`wtp9>@kz=eo%fc(^e^`Q2@64=^EBN z8Ez+2LnyOE$w(-@lzBB~BHa&nT@{7(tYVOo-ORGA19FMBU_sES_JqgizoMPd*`UH}$~cRC zIUkLf;;WS#)QZiX9k|1k&wc1!G_!c)?A>g~-ltlz_ah<#ahQhqSq$jec|SI!);7p< zr+c_ikv2n)u0z>?gmO6FYMXJNYW=YO74dnc-s#MSfF z;^HFb>f{t-L7;*>T`OMkVfb~_zZ22nu)7fR9R2t|hXrVyvQq%TQi&Gytoq!ysrt1f zM~pdom5GBEAv_TREj6%&m=fi+fBIBHfu<$eVd0z@3XDY`*Rk;BJOgv4PP~Vz)X|{{Sx|F zIb4ZtDk4Yv&Xq>M$M-CKTSkPuC5dQq`O!7atumTH!CI|U;8d`WW-CkHfG*QaUhw5g z8f>Ms6J60m#AX4{S;wEIWs`|`%>e{TaG3n?IZ4r%$}i@OpxxK294T;& zU?YnlLEQ&{;^S4~ZdnaW@3*);wejalGd(_zq^naU)hHNX$x+F*Ob&aR$-JJeQ#|5r z5@b>r;D!_#jp%ObD1|;IQJ`|bU*xscX1X1koOLw$$v_i7vuY zTq94WA?kLVB4t1vi^klysCp;(rBewor$a_xdV(C+Y2&<9nGws})k zy%Fcg5hMifs6Xteefwzryrb2eDXckLM=#>1-9Wa_Rwqs$^#_NML+P8gDQzjVb*DOd zSzgH5>g3Ty74eOF3HXoZPCkB=3YiyftZI|I9U)DJ^I(OG5y?99Jcfp9 z1*|(##rDM|8cpPUXpJ7fr$w5dBm$Y80pmP2)!&M`P*X*-$QQP>mTP8YrkRW8FK62# z@M-`<@(@^U5KsIIFq2CSwrLM;OvV7HY>oyq3XC-;P?A5cn=L)6XB-2sW3-oed)Dua zr2@a?d%ziJRvT#d6%!VQ%Pl4ekW9Af;3K(BgRQfXxz}!UXdhoXL?OKq*c~L>vwN1V z+ZG=wc%71Uh|rL}azhCP5#|&w=uVAYHQ*JRn5k`MA4w8**H9A9g?^SyQ`!ofln2OJ z!sPAY%Qbv>vLi!Gd7-zV2qvYYkU!f`h^5~uXjVH!Aqkr$Vofe;HaCfNa+#1_j%6-bs(_W2bPhW*gNLPYpKN6q--mCbRLY65#D!alsn#$c%+e=PP-UHxWZ~FyJbq50 zz0aG$orY32JmXlD;sOS8=0M6L)L2&xz~^lQN4j%Zxy0JUSn&lfb47EC^}V8e&@jx& zNs^SI{PLsuhJyi#4;|bPy5wcs0)>b#zO!x+dc3FN$;sYF-bz=LsCe?Er?0=3ES*y? zb*}5FV>oA!l?<7W?-Ryw3J`&^T}9Gm2QCj0|NzUjrh^4w{DIM<7Jo zgKa+}sxOVV23ac+;2-j3@ro&<;&BFzq7F2%0vuTrIXP*4s?Tmxl{b22D^t=sZEN=@V_(bn_pouv*^vC`M2L zwjQ74I1yT1dOODyR?+M>I$7U>2bp&e3^9;TFbmW#Z0(HfGQW2B%JA2!-9ph0-R zzz_|H(%9}jAF%41a~~r;%JW0IDp$~jJ=xvd(hPUPd^RZGcw?mF(zz^KuMg)bPiM+9 ztf$mVDJY<(rcQPAyti|9S1&Qywv3NkNV-ywpKwR{b4nJpVRtItJD1I~ayw=F6*!@| z7%izum|UU|8hVYts=QbmCo(ddyT|x8{T(KF5KV%igYRTcs^0E0eLMsqHQ5r=GFQbA zx%V~MjDs#qX3NP1|WkD{~mx5U?*RPx#Aq!Z6bnEZ~yi-4SjiyK+Ea zUp1z?R!n=C;d`(QZW7XXI}>lZ@2`vg*e{ZHNS&p>tl#_@TTF3|w#-}dyP`HSp06yk zl_?CV?{GjsaM|qoca9sz@TapXLP&Iz49Oc=(8Xf%Vr*Eia2-dC!F^__(xw^;oAoeB z8+sA3h@>^nv`5Etmb%ENmdk!N@-OPStv=<$QZ9G4)_0Xvy@H%?RCAxYe8qZb-A8M# zDqfKr2S{er{UTZvSq?zWRYT(rv z-oe0J8KqP;??<^Lu2SKd`AP0FG84kG9T}?(|q>#1K14&PsPX`U}dLYy@kzWbw+KlVZ=l)w!eR z7M?pgU-6&w{73%C(dYOhMp_+4c1N`!ll-0bP2Ndu7J;{9pUB2^3@JOz{Oph+(ESfq zF8OIe%$ND|NqXy#rJ;uwclU>Pb$Prmt3Sfp2mq5mVcx+qV6zF4`C+fWoG3KX^f>pt zW=J0j$;bo{+V8C}Pu$*P|_@RSow!cclJbQ0cq^yQCG9GB$@)w$l{b z3Dx_!cb=gPD2V0W7HD-wEX&E;w8wTR?62T|4Ut0IW_|O9XY4kT?eJ_xH7BUTU4EX) z{_8qJI#mN<35|THQyk8*4nm*#D$qA+Zz1d<-;rHqv8LUnmbt|7x(Uf%K(G-&1bhM6 z9#`cR=1*AmI}b)c{lE(w0#wS~k!y2Xf9fRN^N|4KRSg;2>{u6F>AX&puNYmzIlo=B zE3UtqdS_Tm=sn*GdOr;GE`e^Vt87o|EsP*=cFT`~;8ZnE7bZX^=%VQZ%>xEWRpEf~ zCqXGUv6(rUV=^ESNiNmn0onZ>4xnz$qfcfeoVP9On}!}hjXQmeXA5yRSHjdAh|Eqz za0yS|@9%Mls$n5xKaji0OW?ECs$wX{hL}%r1o03f>UOt@1V^{e=Awc2=1oK5UTjbU z<0e+LCQqh=)$m}xvq5;Wy0;MMQkviB=}!Y?V)@19GbHWxyBoUKieADL13+{dn}&BR zFdg9;X@#77z~`nh*VMB?r6C-$PXCT3=rJ%;%j6S(g@1pIe}BEYrN90PZY#e8z~WLA z(5}x4Y3ON}FFx-;_4DRFS&-(3vd4u-S(Lr%dTkpE+)Dcff0GPJ*9i2oP+&=k3|!{M zrNctHU{NqLZ93mqoQN*|=?ZZRDXr@qqoXKX%#2oM4`E?*K(>~PHE zA$L{qmPu^W_$kRNL=MrP%2W<5EZiRhVg){90Sl3Ev>TC;P)3+Fc0;p2s-sL_eu(x@XQDZ4S<^^tSp`3z1%(Rx;G5k}a>hyi!Rl5 zk_HzXuEvHb=_$X>zrV#NK82SJQR5ztZ~&&^tB{7h_XhMIL7_}&K6}3%&o4U9|J4$B zkepT(C5MFVV)}T(c<#j)EW)p`L+-9)hj?w?n)}`ivi5ysd=#I{zTc*K$arePq?i(5 z4pZ(3>Sz>C4eCe?cFuc|K03;@IwH{tHUI@`>abfD47_H;S6Dx1{4I|Td zn9XC}Hnuzq!y>J${Kd{#zg4~cb8pepqO%$bOI%*;NcLaluLLOe=Lsu(>>1*g8}{Yv z_PyWn589V3EA?f9nrAAOdxOch7V70gi+Kc}Da@2}c#>TSNt2cF?$EGQux%3uxISin93LSEHkb;cqA zv)eJk)xoHp{J-EX#-9imqmxlJcip(>=b|?zuu^1E#`2Do1mZ^2$gMQw)O-R3bAmQ| zq=Lrm5Lu@mw3nP?nm6lVd<~KdDT~f@Th2H|Kwi=h0H>fd4M<7I5JRv18I3YuRuXvz zPDm~0>sFahwpN+_-{sc8^Bw4N?yP~S110nN>}r+}aXb~DzZ;nX^|m|1J?|IlL={ht zk1#BJR3$JbA?7Z}@;L9s(8oS@Y!i|ZmeWs7^P0B51-%J3HLjJ*hHG>IopGLNwI*MK zIpbt`xXUeT8J~36{n{&v@Mr9&nmcmm*47crm=a(N2dld)%2>+Te!yLZVvKFFd(YDm z54X>;YF}&fda1QQ-2BIAWs-^K&Q=%h(H|nN%oGf0xzWdE#}<;#X>yyqxF{D=VSE>t zp}w*y1x3*@=>UU0Bbips!ET~Ejrv0U{4Sc5KoVT?%C6-mic6|JL>f}6>u>4!F48k5 zF&jEIWWJC^35*K%`i zFtfI(5*$J?8oPL560*Z-lt|p9($@{TKibBHz4_Cq*ENR0BpVyXfuu=c1__%}#*NAV zQ}AV0P!Z1sBSy&5n7D9RlsbrrT2a>(kJ}IOe z5ND|Xw!u(J7r{S^x#|WhD>5qj6V;~@-BVZNxK!syI(G*39Se>8h@C%BGlIltD&f#@ zOXu2QxallND?fMa;a&b0TdC5^-%9&?_8m`{|KN^eXIXbA7?~Bj<~TKiEiXj72M`~^ zAyD)EtuAR>~Q&fim*0F5Hm%LL-T;-i9 z(zH(nOuV1G&1}AMb z*I(=|aw4Vq+>gg^kLzvsb$|(fS>N_mteQ!(Vcj~jI=8KkcNa}tJfN%(=lvFIX2m4% zVKmg_*)^LyzW3+zq1|mIbr}WfgnAM}JyTgrlS*U$d~&DT)iPODsO2nq$_js@fwKJa z=^b;Li%tc{V&s(;Tbn1UAZ$iDk#F^gRXn|LLQGGzu;@{CU_$2DfCE2eD&J`mGOb*{ zC2PH+tTlfn%PJ=@Q;VXW=n08fR_3M=HoPx{1=cczT{-tb#5bmPn(31Hq=Bp}8lE%e zByLl`9wyEwar&}^3G_3shA$+5<@wFk!CYFn8eemc8pZ1zPOt=;Jr2#RD99NcwUQv& zb>`1zd)YOo#fpBF$18~cGXLJ^-@o$q&;Es`xXh7V_?Uh)^`ntK;MZ@dxEe%P)TLW% z-10C90UUu?;$L|%8@E$z8$-^o@-WXU7y$COQg$OI_8u9R#S^E9vRrFwzp*}(l--7K z^z&vS+HnZ6UC%PUsX=mZRGZgy97XhUfg^to`CCc(>qr>TpE6ubh}HGIhap#x-QlRROs zMS=K_gvk>)`av`l zdpnCq9Ag;^DJ*Z$BVT-Bu{tLsN9T@AZTvWZU)4|8jGsxSg1!lB3GM==@p|Ps-1Aoj zQTbDS!w7DlcygW`svBusreL+5mltp%PD8d*IkK-0?YK zYH7ag*sXiMEX5H*qBS)_f||ZhL)QnQBp3P`fXt%aoRfouPP#cuZ!h?5f~D>a8$uT( zjnv_RLUo`_8LgXA6b_R!6&u9?R5hYIiBnt1V9T}9S)`@LiWHalR^XZ(A@*RMBhF?d zJ9y+9hDp(!!x)x0@{xN_Md0n;L&S^$Ggn%{%zpvQyr36N8_+6ZFlx=`=4oS}Gt7`Q zQdMO)Y*7KTpS|a!^(ZfVi`heb4Mdcv*7r17vIovGgdTR@e}8 zJlTVO9^2)Q3fklTDxj>MpEqYM!nnjX;FmdM?L5&dj%F9s`^9@^%C;oAQ#Dr(miw0H zj$AogeX9C2i~TfE(8Im|sh8fIyLya5h{az3w2mnd043|gGAEm&eY4tOo`E`TtKyQr z&nZd}hd=3zK=4YW)LQeQD!2+tdhfW{W7Oo3knkgQR=Y0PJZ10T=Sv~Cf+!y6HNZpV zJqI0mpNbU@7I%|v_KfndYpY8&BvnsH66n)iSWgne$%D^{C#ee=&1UiP17RRqPzX<& zcgiouRKO~;<9aC&H}Fbitl=v?l)F>?7-h>-Cg)m#?tj44>XgaJiLAF{%k`Y0Gl#2T z@i#nfQD63}Pn?{uo_OLlS>wBm+LKq}3y0m{sY%U9oI|mcB2B$#H?i zs6m$>fdORg%7K$4N{8!HAc;*p+VsGLuV|UB3!!?ux2tmjo^=MZCTfKx6%y53**$Utc5T3oWQPd5T#3|3x;*njEk*ig#iOx*^HJtyNVwTmK}Zu`J5lz z_>-1yhn(r)My|tZ?PCtDy|$6#^~PgA$6-7xGxD+eV%^A)dfzi61G^`&4G@YR9jQ;z z%$PcEyf;Q1%aObL<7vqd1dLF^5&GdQDGzT%l3M1Y5Qit>la3yC)HzOqJ?lC;yRGee z(M>lTjSES{vqR51KkGdE-f^Chhsfuh|9^AX#zdNYY!WCjvV}zDraPE6AxxzXOp&GF zRqq2F!<~6#FYcIMoWZDHI;s0?`KPydwRfDGKla~$x_a)~wHGg4eg48tvFXqo))xIp z`oGUd(uI%ZEn4oq)CQqBnijoJ3>6g7>UzM{SQ$9#;q#4Q9%F+9%wx?>zXNbc7h!T3Ney;EG-6+{^;k`LW>A z2&qxIIM@{HoF{pqGeXvwfJjC&KDNLIznK2`lq~P5LvG12r!mwyN#tl_=4PQs8j8d} zM`O&`Ede*<#{$54l{4jr(Rav5H7_k?X~!B$9xxWy~s@?BOao6x=2UD=gs zDOQeQm9fkcRb1ef)Xy{VY35nJ{7_HCyO$xirfRGFOX#s$(T)1@*bBC9`333Q5pMW*>suF-8?ei5vy5ZoDV$W^TG4qk>wCF$ zamk(^&EPz-h4-!-(5|`n{$HWrLF>dP9<29-h$wYLeF~1w6f5jgBCO%s46d3<yDbnt&p2p_% z?v>8aG*SHlHIpSEH3O4}&N6bzRcx*qKc1=>2bG^~2P!YO0hRqheqA4QIY>8X@+lqV%`q#HQC-QVsKd6D2weJ65I0x|4j?W1y{jcU$&oK>Pk<%JI| zm}p|g%O>dicS_yO%MIKxkx%yx)^B;Rh2~{qsXZE-n!9evoa@1y_ifNtbBj=9^Ztza z@i$)w_D>L2OaZ6G1f-FF&PS!rGYes4eU28Le6$jrr3vKZ!HG#YoeC19V?zvFAN7j9FH_JPG{VgVVaa?_jq$eorc%>ICX$oI`rr# zY2LH(&P(b+lM(}n-lyY*tm{{=S_0h$EenV=V0pn4M^*jMjbk)|lKj;T z)E4LGLYZwOXB1Qf@5{`fN|#5; zNkbx&5F!lf0!Yup>xsME^-Mn@S_-1*g#hAW)fX!ekBO*Zu@bKhYZM7+&R0QZW12!2 z1Plp5kUBaQVm!-sppcEs`TSXbpWlD7>y1{K&uv)SxComb&U6l$x6{`bYLE|{j~gLQ z+_Z$Y8v$*H-mCfNlkxC-HQhvRRM}sfWrQGZ!o6&GeYypTQJ|z~D;G|2vnhXPBjV;R zeT9vzZL1zunVTDKZvJLCRY-mL#{8aXhDVY$?2;qbEP{HMa+!!yqDHF3qq#fb8ERa5 zi+!*!z;U{1p3TXbH&sShvgDlX{bAlzdFqgxDxZ4#XmL~JZ^{*FcT=Ufx8&UWXYzR< zaC2l~zFdH4Tcc9Y-v1akRqC=~8Iu)F6B2-^l?X9oF)=aUC)KHAz;bvPjXWhjg6Y{T z|In<_@7*?t|#59Uh+ZU)P#U1x4Htz2G%)d)_Rfxpd9Jl(8Q(V7j5Qv zI3V>KQjlN{Ok9!|fLr6`0TnaK#C?`DERHi`N%h8fRk^T;!_sU-uc^zRO!U7CkgO(S zMM#Q1jasuY$@^^eZKYcoW`xJ4vFbE)_%!o67Pp5Kna&)B;{)1QxNPp2O5kxco`JF_ z4HF;Eg*t>S(;q$iWf43kAm-kXOv9F5z>m2X@FapDjVg&}BjM}#{XnjohvK~o6mA-p z5&tx?*|wKgSe{5N8CXYA@@<`GQy7NjB^}`=FfqdX(3%bUesCdk025ps$Fj5cVkt7@ z=SbQRn^$KBKD?fOs{2WNq=XmR?Nvj;i<*yhCeC0YNb&q7p2(&W23k5VMhU zR4HvN=SR6Eb4bB$y%}SS_O|%0ru^DN$O+Ajmoko3+kGXel!c&FVXYuc6zL8X0!T~L zmytpUH{beAWMXsmFOS!FXOZ;xc8?ULA{k;mm|?p!7>&m}lNO_Q5l8=a_i=%3yd~gNs|`-Cy#A z?%!RqqaX@&u|?!F6vU4b-r)9>LH=|XDEV>8M@x>XwYZ-#!oOU8C)X#UYCj;H;QV}cf{*hyu~k3*~j zq;-pVOuJz}%}iMaISr}IASa_TyZK{@(~P^@+dAV*75AQviz+C{VFQmdK|vm>0bizM z31D$7FNPuw7;z3Ws;1hWtH?j&3Eks6#^Ai+kE6VN+nS(UMu3>24iSB;0 zmKKRTdA5jo+{8A^@WlD(I;b9IJaj*AOq!`tOKeV+EJ3poCM15{j znre<&$1nX5^c+Kd%W{AOgI&&CnwS~6jft5H^oc&8pz#eq$8wN-iSt=dQWKR6TlgIk zwK}t5w8;Vx`J0-}lLIDNBE^pfQXCrYe$2a8!VV-pfjISi2o0;N-9W9O8kGoO( zWFSs{lsI+3E75f2oxi^qHd(&E34jp{qBlmn|iD-ubdu>7O?=CCnon82Zir=M75Lw1g~C z9r$Ly%AWrQ2cbKbb@i=(T`zs(+um51^3T*CPWjw7=0|_HZ(CUShQ1F9RyP2_jjmNX z6E|EiRXU0+rnjT&B&iOubGKl_5!5XeJB#Vd5By)2P{gFybAWv|1>5p1aLv;^PPev2 zPMF_VVNX+M%!504EpJq>D1{$xi+K$sZRPi^RhNpUXJCj&qfQCG_;`9ig2n(r2B*1|CZ@WWd`gO22ZZgvL>l%fEzYjm?7_wIs_l6qm#4w z=hm#z{94Wv(tkv7BiE$qh{ln}6qAfN%oT)vqx#0xFDg;+g^j^7fzP?3!E^=%i?XG6 zZOP0_06?+aB4EbSV=57Z0-MG)ipLOZ>OXH#+Eao8;+2b_NUpd!XD^~tOz+Gu`)Kld z$c@(hvF;D(jVa}Eez3d6VeA{bn;cVf3T`URm3%w$EZ70_B&`n4hDfyJPLl%!@s0bv z$6x>bS-HXEy@j4%R?)nw;wRku`rjg*k@u6FK}E5ph-POy#U3t+ZfY|yxZ|Bu{7{OP z&WK#3q+(4z{2Xp3JUUxF_E-%>k3E*(v18z(oI|Prg|_>-oiZ7c7x)Yh%Q{&+i@Rs^ z`cj!vOodxwosHV^n0jSBktit*IZIvidr3yAFicVBjgLJxDd5Gr!pjaROOF{BYL=Da z?NXqQ<4vPj~4Ii)FxVtCXIs31=v-ZXk6oT)bjP|+_=zh@c zIZyboyU0`P#seCI}DVKS#eB|WND^=nEYt@rU#%-PNLf@xSFb@j-4A! zC1Gf6u@)bU8-^rVy1#pSfQAr>c`Td{OFTSnUuzjr-26C56*aWeUPDWces|(@MVIzXQIYHZxo^7N;hVyKReaTNI*=f`q{G;mM<*t(Tu{q zNO`q66VWoPdd&^PenIY{*k);m6sXlAACynouNZ8i-XjQ?t%GL?jC>CjCnK*>I!QJq z844vXqUU9jxHxvxXzQI8V(%1*@U(^-=Yj_qMGn#l=bNb^jv#ipo)`-bAjw=6tiY|B z#<7%SVN+qcyaJY;#0Iv_Rb`I72x%US=T&$NL};kr&1(LAMWcPe%AxlHUE^O z=I<<(rX-;z{~b3bsGD7Gm7*CyPUCRUx>S9XV%CMnvcx!6eN4bv_t}|9N{8uxpsT;5 z68zdO=S#4{f+F;K3`u8ma;9MpPTmTrJTOhWzZF@9W>XaFB};7Mm@mRzj~6F>+f)`yT|z8Lwp2Z0aZ@VS3UsJrctSi@tm7v(6-m-o zr>G}nGc`5I1JnWcPPsg%0Tw2b=fxvEiQxq}#rlQgm;pH5A2dB9k*P#pSS<^>ENMhc z*O?Z;`bs>6uN%{)N-85-1|VUU_e1CKzm9SFz^dgYREm{nLM-ahg4{rK5`r0!v7M;_ zY+f<1^>{fIJrTMGUlZFw_U@~>cAS;FeGU~n1D<2Oqwa8-X955;%J|ff;J>CRoe=Vlzan$tPY}q5e26vCTkv6R|wPA zX^*5o2ZNccS=V;1Mcg$K?$jQlM6oD{h^j1=2gBw~4r@e;);MFXT4V)jzGNL0p6p4$(FXK`PJ)|xIR z4=wO|gO&RjO|%Xpx#mHWdl3hId)nNJgC&Hz7zbJFb@>fo%nMT5~3I zBU8U%%QYqxS~aJ*SVerV88i1>^=!2?Uvc{83W>L+aaLs2w^~rzevVi?)RTWWSuq-8 zM@mrn@{A#Hq2@=*-sIz^3?0A(PVnTxYjdGP%k6dO2&MeDfBo+iHSt864tdA=-tC&y zmdB=}6T9K!=j)bq)d8kgkF!0`$AD6Lx|>f3#W*z@q{&-T&kr(~0A`MRH?&Igme%(x zKFECQ)yl0iTi|E)e_uuM8O>yOKIV5`@Z-n%jbpPP;dCIvp5-+xt>_Q+8ERjt!$aSy zLIDf2?QFg23lG7$_g);!%;cw_CX&M!5j*RZvq1>4*k^6{q-KZx!q4cpjLx_D4sWqm z{`eJ;=Gp3}{EzXI6HGy$XP5e4{D@EfO7&(nck-B?VY3Cl!uNDJdHv|$;ZwiCzkelt zD?j>63}?3|eQEsBU(%cZQ$70Bv3Ab=vTL|zvR=$h7TC`jqLhIa@+FBX60yeGhFr-> zz}51D5;9gse3zA4GW3YS791GwVj##-0xNr$UcK zG7ll1R*VUeL{x!_5WV!UYn0go{?e_V0!buz$FIgdcPs* znZ)ME2VLOvx*X`e_mOVz-inWJ45ZAS;>iXl`cw1Mzzk{-ok~ zcas4{G6%%aN4mFQU2>NB+omKS2krr8e)R}_h6Hnnrb=Yq-s!DeRI795!X)J3GZx+8 z`oSrruYHmPS=gDVlV=gl?S~|ZJd6Mf#_X5`IQ_IXL3!6^8lCLA%+m`T))i^LkqHz2 zOEYq@&JTBX0o;D5Rn!!9lmcmejDSDg7ZDd0A`kQ~nnE`S!2>cJ8fA9%b!AdSb(Bl$O@2r8;FoEJZ-o0F^XyWj~(Ggcay- z0o~}V1R;KK-G&A_Nigx&=x*OFZ**0(fxjS^@vXm;D)M#rI}!0Vj=Ea=LE#^E4hb zo`REix}}r1<|^~g1i`6&wvPO(xdZugEVkNYs{FcqFkvdY5Oz*ji^6blcZD&tz*5TU z!UGJhQ;w{X-wkYW$_V>7TH`!ZipglG1MRuXJso^3crSS@xIa@@+8EXKwnp{wn$_P( zCapV@K68Nq%Lb9K7gSNsz|#YgvLjb-tsRjEBk@|Ha+UhtDU;Da&!sTCx&+?u?iy7` zwq(F$gMzC5wa83XN6vH6%S@upZaoi|v)9HT-TVOYDp*~oTwMZhE$`jB;N4$Bg!+f6 zZ6?}B^gUXrbr30~I`P!};@Pp|(#VtKjZtRZU>#yBDs3usJ=Qt8KJ$jqhjGPS4$Gx-@+p^~M@P3E9CGG#t$=g5>ooSEw01|$1z zG4d0&zr0 zIxaDGXTXKM2nsD(!rD>BS{`N<7gzg?G?5ULcHtKJDUBn1tH=)+Y~T1gVD|M^F#D#Z z1%HReTa7$Yzb8a#_%2?&@0?6g^7j^JrH>@9ze)FzUjOf$~SviPS_hR2gK zL(akQ?VcQzuQ7<&e5o&5jtXb$DE~w8!`bC!<|1a?g?JLLOXw}1ZUxg}FB7Bf$e z@&`?taWLFnZfq_h2PEz#{7zih+kk7j6!q1UkK48PqI|s7#>9I@&GcB)Egj|gYeD!4 zgl7!tuzyc0`kX}$mP4>5xprrs=|0l5v3OhFAEwHfQtU6l`wfHgwEt)8-H3azF*1zC zyC;;WOpkh2zYntggTJI-e6E^%vL&p)?y%m8gg}zk?2Tfw+~djek+*4Z9>OTOJX{>d zL~f_2VP7HTB%Py)p)}nq!8O_uqw`pBdw>KTBn=+^C8nFt#`}XqpmjU`^T8rX<*X0( z;zMNWObWr*h4i=EBK>2vFdQaB?b3s{9n=4M?FS=$B}QkpWBWF{5a2oTf+00wS!9O! z#x}l=j9vtLuEaSOF~gc&ww3yXR&}I%^oXi;Oy)sP@wJa!y7ht#idm5K_BZFK4|IJkc4Twy{EIwc}W!427A7s_*IRPeA5#U5jvOs3t&vppAazx&oR8AmZHe> z$vm(UOKhfo0=wj-084f*jHD!_VO6UGyL{9csZ$U(PG327?$*{x_#jms3~AdU#VX7t z`XK^p+0MG@!uoF|tZ90YpV}Q&1@}_1#)+<}xpYD43cxYSTac3h6LZpu8CcO{!gFxm z$M}#Q?&MA&?oJERj`tB=7zNd4(<^8dZewQCGzvXzJH}QhK)WLVPqqW)E$76W;siOc zu_FK?fqL7>;Yms2=I}?KeBi6@3qv>Ak2%wx&BlcH_!)pfkfcSg-}9CU{ksRBCYLHi zn%@qyD~XrTAZ551fLUGXY}ej%8VwI;-guXimO zS$7?)80H>A9^BybzAass&N!ip<=f1Yu0@d+5?Va#My2##e-La|w|g`7RPQ1U#%QVF z0~f1*U7X#|7)QQGMYAb{waw&Cy!z$krl4HP)us((!c}uHCQ5__O%Pq6Gkv<)ZrYRw zF5{FEio<+&EE4^7oMmj>M>Xf{nszDVVVzbX$J_1Y_)jCpbXr}D{;D)q(dY6^@7cAe zO&ttYowqalSVSV5JrC%(C(TPN))#{TbV<{AQah1Z`l+gIXd#fX69#z-#qcA zACOfk+^^K&ChJjG9p3)Se@$QfH7sh;K=EsKIX$`bxBv2AM^}^s#TuCytN&>uPLf=6 zIESGzqoL8p=i?o1;vX(avIM;BD|wYZB}xlbUd0Bv$RD&U{mItW+1yxDMNdN`$T1ZJ%ybgW zr#?JrU)R1%v6%_j2YSXK>z@f(KeV6Wqb6D3AZ~odx$%0*4Hb`YV_$N=xDjGRQ-1bo zoeoxR%m>=|>WX>5WVr{FiiUSAO{D_!wIg2#7z~3z2bY7-X(zS=?@BPGOZ6CTi;0Ol zq=94j31}8qXSnXS>=Yb2;a$)Mpp%v!`uNjlW@k6J_K{(k^3 z>qA^*N3sw^g`l&;^xJLk8@UiIYB@JR(w&U{?uw2_aEQcmP;uZ%G(TD#cRiXEcCgjB zu#}?k8g!6jx^i1)1=4waCx*U3NFnl`hRxupZg+Ni=8(pnJ}4qzQg8igXQ)Pm7=CV{ zZta&eVp~(5(avg{%XZWeI&wb$o@nD;`F46ftqj}In4%gvut>z<`V%u-ToYhbOb-YU z!#lET4uh2LZZydtA{mLeh_QY$wCiu+x5Vw|%Qc0t&Ls1w5zF&Bj5;$#tqo}Hv<0m< zobDKrxzuu&gr{0a|I^h=H_W^h#WMXcGc8G>wytkAzi}gqgN?7uJ>AkU?HH$Teph7b z5#m#VdyIK1p$V}_p!<9*Pn;=Vpad8iu7SbP?dvWe zo;9Tbxo#&O*Db3g0q{z^teSAgQX!*Qusuu#%G^T0l{^Y&tnjS^m@{d7DB|B~kNCd? z;-8Nu=1I6u9X*j0l5|qyA-BU^33VGwq6&MFO=+lhGNjas(!38(2pi3?c4gS6XE_zy z=0@%~`~JSzm-djC;2tzg1npyUe`I`w7=EZAeCG zyf7JujAnAV4cOjot4YroM^q3}xB9ciWR)5jO@|b(>ql9aPPEjeyUq+dBAMP(qM5KG ze*WeWM@?@CP2Gifm4q&S`a6{IY|S~-3ez~l-E@V4r{GjiGTx$~wGO!ic&_b%GfCls z-)pZ)D`?V`V^ywHSuFERx-4q)aB!M+pcnK=IkvKaHc3@my}0MB*pOc27iWD)^j`O= zHL0dbg!yJL>N}Cr*u?06DQrn3ty7nTw{nqD8fvNT<(gOFTrhvu zCts8z(Xqr@mhhlV(-O# z`lr>1)gnnJx4^HzGM6Zy^iRR+*hz=+Ik!LY?t|ythB11hjnduxH*~>Vq%CrAH#s4h zMMQqqpwMTB_=}O=DDtIZ z9v#H(*wAS-&hn{@2_u=Bj}9yM0R)aVNDawRW<-*WrI5p|8f!xo5GQ6+GWsDy9i@O9 z(Jm`3^JvN=N1?dg%LKi{ zx%u2;MCfJIK5mS(zgsko*G2K5uk5rxL_7g zwigr-51ShlF+|vy^`k%8?OO~y$}X=l#8Mu}X___7mkQBJ-JOX5F6~*YLYPzqo)9Ll zX=l=!jOGC507395x1~6Y!5yP$TO!<>tq|^>43yGlGp?SHIBLj)sxKyRc~VPLjZGK0 zs9_`e6wF%!mTL4bfFmEb%?f@r#P6s@`WbPLmO5xD&k^l_esP3GkVy-6+^9)rY;fN( z%klkx?7exE+*x+l+3sfW0zI4q24*-uXM%E@%BohRa+k6iG1!48K>YW;+SmvxSt(ZeAh!sA>NZZ0M&NpqTeceUv52uYX z|I}9#ZbN1Kt8{6hTtw0dn`MdwfK$2B+9C<(wfZDsx}pZPpnvkxvMn$+(VN*gjPJ3j znMY!yAE|Hj_&!$^&Z97QHHruQetMYS(!}dhJ_oh!j zNved8PH^yD5}Sl&e>jBk$nw)HjzWgRXF9(@7W%{Pp#NKmGMJk>u31jOhti!mqW(l6 z)0|yj|GRf+>m!L zU0PSn06YZON3h{k309*InK88I^r893)|G#xk*@qO-e7ckaLl8vUXNJW=-okIW)C0P zjIt>cLKIuOc`bM}sfbd9G>&u`m`TP4W~IoIwK?R{%n9z>Od5$HUX}ZQvVo&sQFc|h zL(*5KovRZL3NcMcHB)J7!IV&BOhN^*s>IRrw}%{cyFIuii>;V!6d`4Y)AFbk?yWup zXW$yu5ostJ^}N`E?6i|gkFmA0t@rNQ$uu|nucC3eACmDc5GS8#R$MYKNbehZNN+v| zu!ft!ZI}tX3N)7it!$1fpVCqtd6f}XhTGFo48YIWxox%!CetyV32YXfuC(}a=&4P5 zs1R&?(98KI!5=0!II`p!o8=G~Y7^>jb71tBV-i^3S2#4{+jwQz@uFRicfY&!x(r9t zHoZUMhT|7892-yrr%0z0E2|eIWJnz@j1J`kCuvS*a>X|9ntHZICgw6EW`|y*C;cQI zl~0uf0iq%YrfiFpyfIZf(~&SFcuz7k(}=4cGf;c>&9bpkODI0PVgibuMX7j%{Kj#1 z1fI9xx+7N6LmCA|#EMl{Pv&778!^l2cDHNEQuhSkIP+*clyE*g1V_(=@2Tg=LeRcl z?cW=+NMGF4BHc(9=~K<}=PgQz{BT7mDq>+1O#iqTgwkWz@k z9ecF)u8o;p{s`yg%BE?&oYu%@go9^kvpKd2`;sOm?Ea6hDb}TBu$T>hKA(|g!|Yfd z?8e7b+*XQ1e<-8cBzC!vz{A^&P)mUgwxJG(gL8dvQmiZJ)7Slo)MRzoj%&d0H0)ET zQ7OHqeSTl!O!8wFu?k0Jg7IDF*j|3A$RQm z8mo1Os#x>uGao$Bf`ccb|C>9RU)ofp-~FbO{Y#zfAKQSy6%zl5#Uc{o2Rb6w5F6(r zsXgk!$%hOSKtZd@BQ#k~Gh39>y4zwfgUMf(Ytsu=FC91WSuMwxvoA|Tj)}2T2je{L zLo*kj$f!x&t3%)jufYnq7s3`s?nLcD29L7$Q2wwGDkk~94RbPI=6i4_rz8XMuMwI) zU@Vkf5@2B>Cfqjr?CJiff_?HvmN%i~Aw-2VrLcK^DJ(ekw6UsHBr2w!nG>nlKk5|i zjh&hE+v{iM%rCAynhwqR9q-hkInPG4Iq@I|Jg5!M{u+Pptvy#~{QeL1mwWPJ6X5j7 zZ%#P}r#Rnc+MzMi{$70b)92TRdsrPSaxP9qnZOPZl@ezzSCqe&-?OUY=zO{(#?oO= zeF}hwNyKuNhOZ?wEEbksat$`4u6>g|Ksx?5Pz(LYp| z6J6Hhk!ls+{1MLMNilx@n|?_p;pB><&^(UHs;e5Rk-@ThTUPDf5B=hv z7dk(n`HfEqJo>;Zh$uk}d`s%xV?Rd{B}hSPgV4(Qne!Y6{826$2~15IA+`@h*jq^w z?VvphhaKSL?K8NT=EldymYV(`qBtiM$ieic{hQt=8&vyAf5+7(&sa1|c}9yk7fTov z&>9;FG^x~E-Yt<}oHXw>WSq@v zP=Ih?vW85>iN%>Lo?=n5Z8{lq)~CDkP%5K*(g**3&oz{ZQ07|F9TypPb{(;LsrGfz z#XyEd=YQ=3uwV}4Yj0rj(jmB>GUyHVAWF)cAyMShJY68Run7U)edD3nBqsB;mVc?} zZWm!0p+miH7b?H_)?DiU`Sk>Wuu&e0?T)A6o^M4$~U zLP4LAY(+t!8l~>l$n|Od;$H3^7C*f}iHC3$!m+(pZ zc}Pyt@ozsV0L;SE|Cyg*Z}D<(>1#ha)0^cu(rL%P{ZWe>U;I;6-LU+K_v3oEU5e2O zsjI#l_f;d4VhOf1HPMRn`+X}T958OAh#^z3sT}#^k5?Y|0SBNZRI##Vj;qxzGF)l$ z)MuUUmK;=FBucz&RO0ih{xqr<4Etsyy=w#imu)kHbzA^XmRd zGwc45udM)83{=+`o7}1^d*e1OX``H>l>N6%qCT?^s>hB=Fd+OvIy$c6+kM?G>A(QAARztg`TqpeQ9Trx9s_o|oCqdkT22a*-|9KG zqnivwek#aMJQhi5hk8)2P2v*`6L9sA0h+2GB#u_{UV6#OXL_`xob;qBr-MWg58I$G z)~uPOL@*8tcV372%f4X~Ln0Q4x`V705D~34=BuI^(AwKGAx#JgZrjTLm3z@X8?APDQQnIUnNP z_0z?_=+Ru%%FtayC)z%Ei+t63?*5>AH)82zVtLfcl}MQ0QQ(D!FnhXBhO(CAi;T~s zJno}j#7>Df!y@45yuw#<!B=W8Jp|gW8o>sw}Zz+pk-cVdQi@ zMeWsRR1upW)VukQa!N;EEq^`F*JQej()x%S?fCcg>COhd||yTk@N z_>?ikVB%&&G<|Oym@guTE~%P9VoaFz@7L8)>C5B3Ivel{X53@FjKL1SYSeCx_IUjI z5j`GZ#J;MD5xf6AKm}Bb1vg5>X){;hW6Ibu!z~qQ(K>jsz`+hs)|!e9fjB(ahP_w- z<$^#)-|>lZaoaw0SL@`c4hE?P2m#+G@g7hsDV@&dCZo1_!Dli#o?jzmI=J1WSMeP% z$5(kY@?EI_tn;waD!4;>{ArI}KVF!sv7mI@xb5}FSJ`*k!()o`!?TwL&~3ZunWN*2 zsTYbzH~0T*wz+>SHup1+s>5%39e#-Y`y@$>&5dONSg{tB>HNF=lZL5yY{;Fg7-)gJ|Ap&V3%H5S=9r? z&%M^l;$rb)X)e9sG59XeG&F_4pYOF!FIVsC_3~W)_`TNr>O%FdzPt9ytyvp_%Z=}~ zmKJ8`SMmqA*6ecnJl~z0UCr0d-@UM-`XJw3Se`8|ey_DSyF4G4(u<|M0(<6-!ELOe zzt4A1oSt7fF~97W=i?`qmlsc*I<=&SS~#(=vV3B3$w;F6UUK%ZFH;-7M7cKIiH{er zSzhQX`^Y`z9e?|8e#pGzefJ$-ioBzz8~w24=y=i;>1}juJ1dnN^mg|+!s~WAuKfVW zWN~IUNBadQxg+4L#Agh*s?mvJrsvl zaAVy9m6sAcL?`L7NnyY&E~SUQKQrv&GKg6$>0lRxA($rxF*mz+bO|dBD~XaX!2~c^ zh9*BhXs1{*-_bD*9uXM1bcK#=6b@B-1fa~jw@4PuI49Z-;(@qrdUQ@l(|2GX9sN1u zoM(Tuwz_;Ziq&hX=gM=-JCUg2v#wW=j${JRYn(|EhOvBf5jbsFqBP3SBataeE+!s} z5+G$UaiK0U>^HGyD8*4{0>8VViTUGA{D&96mLtovW%+$s-{g`EkdI8 zj#Fm~2q+KmnybzU7w%lr3f2zxjw(d4DpicYCSNc zzTYJwc0lT0>B0bDTfv$;k~Wp`e*BWI}lOWF7S6m~BQeqY`vx?UV<{sXc6| zE!R_K_P`Yku0Cz@sf|k)+m=sAvO)-Ct&=eX@O}N;DDBG%mYLlve;w*(P;2(_A@T+dZd+UE5l@1syY%TbY)OgJ>PD7Ob$A4ePNb+{ zosnKK3t|&Ry;JA_HMPMLlr--^OP-1xf+cskoEQ$jsJ}Vf=2RFYGhuoGGxdfvw(tpS zno>$rIT>*v$Nh;#v}GAjY;M0Lz$PshQ-O6kL`(4<<@b0DuCy@s1&RseiF%$e(Z?Gv zb9R|!8GM<=cYq(g0eF7dy1J2R%< zEcVJ1_G4_WJ%>M~dPt@lM>vbfHB=fQiH$af2XeVNzS;SjFgu@hlXHg@g-nGQf8Knn zcX+sW@WjcJckbMoy^|Ex>|p=a$z~O-uko1VCn_apI_)NVskSo|t?NQmz6H7XUw1dR zc|-cpa%vRC2X{oAyXupY)j-w_931rs3M$b}V|4&E{L4~oZ+C8x4DbjlA3%;kGB`v7 zOf=X4p05ryjVaewWN`r+>^(4;IjX+(wL$1+CBfBZ1pQhk=$}LJNHsJYZM}L_El{lG zWk3#H+V9h_g_>7$;7Gc2a#=9<;>zr!G}xG^4j!LNzpjyU^q0wSMpPlo)!C8>IZTo8n(rM6!4xgK z;X43|SEe=0fY~Y1P?Y%!5IeW@cgCOyPzX}MF3 z!46pa;B)7m#3Jr11zz1XYvU?`x8Efu*|x{UyI~S?|DY#RW~a7mar;C3d)-4e$S#HP zV%!HN4N;@|rw?avzixYDd$0-EIGIn_iSJ>gkS_k!ux0*r_umySR|mh);atS z`nO_D9zqy-5EU{X0(@9d13|KFBA!wtln=O@Dcoe<(@y8dkSUHMnP%MmQxrt4J??1A z5C_al-MfR`_HefkIa+Rx%rU5JQlf`!c;2RPG`d?>v)Y7(@Zij8?6e9tX?1Px%1$Rv z60MO<^AcM_W?hiG(+;|=9%ZB86Ixt(LKH3A0)Guao!}51wB{PR5MSpm#Bbn2tXEm4 zN+6+`50AyGNpe0@NNE!RB}!GSaexvl^Nt~xaPL&fRJ7bjCdL+@gurA2d=IkEx+OX# zl|xi@f|b~^5HJ@-5iLuitF63~neTOJJb3h6DR9!<;}X_A+?;(Zg5RY3vUrFWEA~nF zp;)2c7kIPx7z6LDbt#9N7inJE$s#?A;6a@dzJj$vw;kofu_R)d2lwh&1hN6M^X z_-~+oP6A?^poo16-nQ95riC?G2+x0q$Tdw6Gl9s#RsylXai)>sThT=#UqS+<*1E2321t13(!z4< z`qI)%cEcAsyJXZlTB%*lEI5E~KTD5O-|rH+y*oaI^6?YY<;81$IJYQH1>Lp}bJ=K^ zm3qj74s21_wT61~>s?Pi%ch*w^ys`JsTIGyHZ;Pp#`C!ymm?n5&I6YSgdQQ*T^wFh zT0!T$1M;!$0&0LaN?XTx+oErKSS-1y8RHnTVy<+f366R&Zg-ukthb?Brk|@ElM`?my8|`URBG;95#vIJ91YuLTM8H>&2wz$-QrAE=wm} zmd*>z8Q$XrQK|`miG@b3p@{6LOiN*;rFtl7(xIG+C2AciYMxM>G@ZAm6pSlt&uu(= z1&&{Kj<<*6X~_GnkmkEuo7>FGxPC;M0cOq^RsYn{kS**%=71ka$t8I$>P*Yb~H&tAC z%aFQNJ}lTBjs+N?IKS(7qSAAZy|Al^xMbMUVYrEuV}!0#6=&GV@5FQwP2X+Twjrmt zOX?rr?tZj6`>#--!IZf23^mi;3JE~-M~+w1xU5nve<~XoSFGOlOf(?mBV9= zH|7we-Zew8H8hSNbuI82u-Q0|$^Rs4LFi>C2jMnkwb<@tn_0kml3p;z%i47U=h=ya z)hPdG$IX4h?f!(96E_XO-Sqn+@{Pa+wh)NoxMDD zo^VjHtHlt`#A72IMoWRSSOe~=);xi!!bBJw9ken7p?SqQcE00e)=6Ab2iYB8pM7JK zIO4@$$I@I#?x3Tr1LejDA^aVBB!o*gHD-7n&i@d^Iw5MLD-`@BUp}ijOT`ap26FY# zk(RpI=S7TMu;f8|aI=k+(5*pR_OlynUVj~}2Xa`;4P{cpA2Y{6vi1BOoavh#O2&6l z3@2JEbNsi+e=6^x4Z}`f!d&gYw{?Aa;U!~Pjv1hqmX%G?!4c(!YvILbg*OMi!8UEn z%Efe;NsHlQ{Le=%C(v4fTOfe>WV0wG!Gn-aJT!PDB|7EwYxB`7wEu7+l{OB$o4ws= z^H80S$2-MSE0l}$@+ST~$r!`#hO1iOkIG=qZkW>>n$mR((Hq{FW!Fv~baoa1G_1~@ zj4f-ZgTB#q&~Jl3HVEJ}Qk7MVbHkC05QZo3f4OTqWTxC&5i_<+!9|wUP*zn^koCFx z_8qDAN!$ei=4Myk1KJ+O%&|_5xrq+g1<=(_W!*O@?YlQ5nYgK%bV?ejz}i5H6&m|*;wTym6I2G>|&2qH})oEc&tk|HW;y0YkLhq(phQ)SL-eHnty4(4c& zY)@zc&ruejLs!sFvQo9SrCZaMHGxg)461K7*}wm7NwzB-Bxe0!$Yb`A&f;ku;4=Nb zR2}vQloRxnIwBKp-$i-X2&3`u3DL$hGTb)eZ95HT-=Gt6_a5sJXO3I9%Q^F}4Ne zCdDSmTt_k$ZlZaMFIhqseTN!}ZzOSN%w)UxQ+ie@l=;)Mb6=n*E%MjWlc{b!8xd0L z-8pT7{9Es+Bc=1r4)O<3Dk_DdCH4t3rEyqhUHzk}Z5koGSmlyasDQYPfU8k;3u8aR^zydjy?G&__o+?5IpZO^4obCEHvm$+jtbG*+&a~e_ zF=&sY-GrKTMsp1Dv>u1%(tlWhM9fHzUQx z`1urX0Lrxi@#rgkcHe5u!7s#DNs3hfqL-JR*6daR2H-F^D>X|$B?WF2F(Me-d8{YH zxhCLyEFql;0gZ`%t3JBanqq{J@=|?LU$(7g0FL%LZ9{4&VuR!=B_#u$7#|#qE89|7M=@jU&--A$<3;znYeD4VGI2(&cMz^LkZ%3Y-UL8 z?2IM!6R}P@h{HB#lp8cQn<5r`o;J;e)#rdZA0!2J=2l z@N*6XTYjQu%6+p^7s^(j1??-qOBs`pH>EKF!ewEzC=%^%P(58kE=`VAkXdh0F}r;O zIklCex@pmE+v{X!ywtsa+o(ibO`ItrQCjWp%bVXiRu1`FUBf6sh*dk^GTrcx}tH(f1U0ibL@-Uf75sl)?5%xVxwa1;wo5^RWoq_9B=?Mf7so`43sH@W|dp`UHhI^%wL{O#GQhg%SjzS>H1W zj%0IycwIP|Bk%KOLb#869 zdW5A}T3YN!k1+A)-nfHqw@eG+OT1pqtF+fVLeVi~cTH5X7pLM@yr}4 zxPH`(st1Jd^CKHEKk^7m_4nC`v~iGVwOY6yAuZ+skKnHT+Ig=p*(y)XrgiAStUalE zLS8Q{mLK5tazXn=`jg_*_B@$B)2WajA*zquLM_bIk6x$U)nCWib75gN@d|G))nAlU z@R|Y{j8tG(CP#WG)r{hxY2y)=GkN`yDzfnirwS@8tmf5dBc?n;J?gSc za*klJ6R=~&*Y^J6V!p7yUdcjhkC14{M$mD_NA&Z6NAQiX3Q>Gk?3i{?-)%wY+9NG3 zW?I|(OEtZ)P*4FzO?&u&NAN;~-`)Oi3#sXah12;$eoGqWsxKgV6;*h#kV&K-y}XBd z1SOoweEJ}lbOp3y9O9P#!m7Ds(sq8!rTQ&b=Ic~gDK}zSNB#K^Ts2>9g!<&Z|6%*& z{)Brt|B3ooJgA5Ac_Hq?klfJOOEjF2-`Fmb8#qGv&p2cmcygkQ#66MeSqEb7QcP0* zgDZGS%M&_Ndh)>H75K@jC&_P+F_RvE5ToawkRn>B;3x78OPdjKqt!)lg{%!XV^?L& zKJmrhU^XFPeosC*9~jPC1#%<%dzNi5=QCWjDpHu70nAQ3!C_3`k)uE6HP&P2oaPt> zXC$V}@o>kPuCV;(AEVS)tKMEEoGOor>W}zv^ee`U$)hN9RK63&p2>%>dl-+FU+~S+ zH2Zx!KmpiKl{r(Dfr5{LVLcbBn$Ir9WcO0D>w6+s8NE)(o~vR+bZt{hVAA;&c5Pu! ze!31Jqp;lC8xUTZ)4U^48v8Y+W%;NSXgIas)--DRdXFDgo@iZ30F(rFEJBA45IGun z49QT#2dIV0N)6NfbgQip~m623P9N&GlM_uDkI2B7w#Wq=e z!CJe>Iv8Fy!DGuP-nlda-rO%5SWurLF;ibz)m>U~MhXRsk5=IyUm)sCLkAEsag|e^ zycYcq35qv8f<7w1`S!*E&gn-}`}+40Sx)rfTcspoGI*V07rlrULCj8$M)EJCf2zGM zUKD1t$|@J`?ZOJSF1^M#I2|web=l{Jj(a&_nE22&7@+fp^KfI^P;SnD6Ou8wRanO9b7>BJbNC9H~)$lYY|3L8h! zM2kMr(rWz@wpgU88bQIZ9hvw@eJ8_Rim;j1!tIrTt-GLi`(2VUg{DVC)7-^U3teIP z&6tiBj%~%8x@NiaN%yGCW0qU00HG23*qx-~dPpuN3h+H@`USCQqo*fVA*)#zl9ZGtg@#SC7j%s!|Oq{aoK2UH{At&&nk*!yrUbL}-imD}Qx?#qvjTkCA6CD|B}HB}cxM=g;eV=^5eqY~@;K8R%u_oFntr(rP!Z zAEJjNwrO>8y_beQ#E4P249-jaNHC`=9OO4n;Wo~m4m6KKt3qwLgJ12rJ8pb046)9} zV|BLH)ZCNK=CdjN-@*Y$^US&cnxZ^rQDhQ}F*y^_q1IA~gj^1xLLt*Oc0TA^HFQ~P zK(pSij}3O5@2!XlCOMu_+>0^vJfiC8hmd}FoXTA5P&4qE~H7$yevz?9VlPAUK* z3NeiJ^-RzqNd_XJ5i4pI;;-{_ac&8m5M|Su2gpZ~3ZhD~^sWMhCfH(Bq4NH1t`}_Y zc+fgq*ID`v*t73!8qqu!GZ`raouzP7jUe+9aYe6&)!gs&K;z5OWsAw5Dz;4W)nz$H z?{=a>6d21CaFbM(f|*OLl&op?w5B@)-#cxXVmJfe6(PV69`qi+fBWPMgKb7U9h_W$ z_3%<>^W<~;gO@=a=rz^GyC=^)`|LAUI=4=C7rGx%5&8ovJP!{~QvZ@EIO)x?{;{?5 zA9&&7xicSFm|Ix+fY5ktx^)BS5t#^X|+V@9Kwpy8gG{TL`_^-b< z&3|q8d@5iy6Hxf2@A6&w*Be*>#pQrK3~69}CtCw3iQzWiPyVoa z5;g~QGI5GErfr*9twM?-H&LYuK{JAQ7zu{HfPGrAF(8QMCU6OQkM%eXxvP5G0pX=~ zcX_nr6{c_ZQNG`IH}d^H(|y17mO$e*i$+UI`N^|ze;?R4+3-ptR!>0HKocM zww`lQAIh>sjX@V-^T=E~3oZ#1kXRHw*}5thrGDa=F{KXl@{*b!S2xSK+Hd|;QGEzM zJXQbq;7S}hk+%3yk%n`ihg!!|*1+QcEVL#-6pxX5;ImuM;nZ+J79qt8OmztdMeHF= zfeXx}<#m8>P%l>zy`Ze8Tgonuyc7bSOmwHRJxg_Mz}Q16l7jfkJ)!uq-Eb~X$h<4s zNrto*mkxk?H=6FKqHFR}Q#Nb1b=e(Z06Sswt5`2t{q*6uIZt6Ge0ed={Bp)n%0=yz zutajpqq82|j|{rmsXQo5ht#COxOzy}tg$JM9|{k`Iv=x#Z(Vy(g9+_7Tl^nEUub>& zn`?{qJbXh-@ZIidy={`G)pR2(7cjO|X4RQp+~R8+lcR@V`huTvV{vJY^20#6Ox^Q( zXI-^f&SGOyKAq8Kd^Ev?-3^woEqTcSKJ2(L^q=~!Jz+z$hx??K7WBzJ(y~6ku%JOO4MGm7Tn{j=06##xzYHQx6jWt zivj+mTf^_HSwlPY(?romZYHdv9|)TcWSE~jY6^?=rB7kOK1qlI4~JSN%L@K!_ZD_P zY$!Gab>{=YQ99h6mI5rV{0k9H1E3qC>c1&`mZ<}ve}}41VLEVpExXbPU;j;xum8Ln zzJ5Voyv7!I_$$^>0ckv;AThNZP7;T#a0Er{M!$=JvddTtYbkB}ra+^UmzbeB8R~C! zh6KXXlOBoav*b6No$;M%V*DtNk7DlM0S4wlnETIh{MPq0@A6z8dDjgXGcb$-3tt<0k*vZ789rg6J+~HV)%!BeivMvvsp4J^0?@KppON8!}T1w z#CDNF(fqA?3|GuaNXC%jkY?uc)mza*6fVa46>}RVqdb%2p9YfH$oG+0P`w8pE0{Rd zdJk+ON{T6ksaCk-Iu36_Kw^rYGN?f!*5YXhbb+tcjgY5Tga36KfK8wunRM3BGJcO+ z#sRx16%-ieN}?KeO~jrgzLk@WWA8nxu@{m~pZ-6#t6D|sy3nRN32gBrn=(!Zd6<}w zk&$nS@>VU1d{KhXg{9_524%AOI=L2gdAWMf{5?k7dEc#zSXJfmNjBBKr64k)6vrPg z`wF^IeSgMaZw=-0PlsF{JyzrX*N`Dzs|gSZm|{@o10)D;6jz!UDPRblY1v{=9K$T8 zYO79iOJgw7QIyP8xqOwTb4~uVo5Y`58xwv_2oKfZsjpgqQ)9Y`TA{Wk?JesP36edC z6Khz;$mvoxsIs;yTo)g;j6(8}Jh~Fin66JoRWQc0;qLyK=DT~y?%p{$PzA#~?bffT z7;Mq5+rlHICm8%p=Kv%=8jq##&|eUu(4s%F+t$INWRv}zv4(2p&-fnx;0DxvWaJqi zNeqL7i&<6UDNyb)1!v5pwWNm`Sxj=5Q}j;U!x|!&vs(Zo(rtCHcUfMeZM9pIOPG~?5Oox?u#<@-Z%k(CMEN7rc@!Td>^Se zt3iF^<8Mc^^D}nD-skszU+)Wgb6?k6xr`z@^^8(8f7W;HOV0HVqIQs63cRVwPnmWB z8`i0Yn1vwmwENN#HumqKp8L4E@y|8iiB9Z9P7T+$BLA6A9fB05smht~8LBDy%ckXX z@Su8?F@2bM0)Nhle%ts!dpv$;yD==%?7qx5Kov#KxSGMm-*&uUbbLnt-sa@}=1Mv3 z^@>wt>r_T{)!t3So)s+jpbH-h9OilTk@IFLBUsje5eP6V5{+?C1zIG$q4Uoq@x0jX zwzqUnhN40G%bJB{-|L&Qmp29Kd8N2mN_tpLVbCME4A&pCVw&`9u#7+6#HTwhQGs?G0tkcYsl#HzXL!Ukhf1Dx4 z1;AKWlWUm#I{BY|Z*Z{*3~tW?M!Jq}K0WJzY7o<@yC7XHIaYQl`}X2o{oA0;65QFZ zp5WOmgHtQ)i|K0F7RTibuU!Lsv+~-rE-$1@w3b)nt#q|fYiIoj^_9)XxBV$v%ku#U zXQc_>pRP8d{n!P%D^im|T3JHa`|DG&a;}yiQxLSSGC~h?2=n)w<+PxGnD(h%2e^1je8xy_(!W-ng8CA;3XK zR>+s8oQD!kpZ8!l3GpZb+FW3H7h29EiO(JpPRsxZ_`l%-7!tV1-q*4bTk6H+@s+Te z*#g}U9^qC^RUn!?o3U-N;*5aiJp^QxvVKv^)Eq_kKkVijxM~gUIr=sWrYCpP2Xd#D zXiB9v$94IVV!9$+o5ITz**QJo-cY!ttiV$#;>qf7?x5uqoxsveN+-32nPnAv8t&BH z7K|tzD5e#oi`+Xf$4^0Zl~1x=04AK$yM*voo3La=&bV3LN5oAfN6#1Njzz&QMK{we z#?*RkSd1SCi~eA&-v9d!7ZXoz27hJDoo`!}hkWKd@tebrV3DfqR7eh49POlat%kSL z2h@=`x5!9|nOtzFMq2nrKrJOB#A3{d(6d@jIi$SGgpI0)v75quN}TEMBN>piQ5CSnZ=Iz! z-MLf44k=H(%YGt3>}MMnsMms7xJQw}%#^N(sWNP2<@7K~b5%R5jkVbt@wgAvU)#*O zuqUZa0ZGw)MlDJm0dO3qGb>I1z(`w$NhCe2frEZjs%V@t7RJ~jSGK&dOR7ApC|cHB zrQA3Q#nJY8bUst;hO{vY(KxUc0)g@M(fTo&t(n#z@UpU1L&-MphH*i&7Wr(E45IdR zK#n6V#_*euIHXe3(stXPzVEhS|hT9A7lV46R}N26;33lQMG23!ZXV9b@psM!&qGcacZsR=;(1WN9$=O zux8p-5qY9w%G$^IiQtk^Z5C}$W~ksJTczj8GDq?>GSOjnP*>AT#^^x^dbladF)1SP znv!@3CW<2#8!S`D2~6VIVC~K;gT9@ypc_7zc@_H{41n8e&WJ@)@?pZX9p9Y&V3@Op zHSYOlto?%?Cf?ofWu?)3$fFdRMh>CGV;;{)jeFi}+gaH^ z+MTgs$EU{+H4WJRO+cdP#yV@Yyi^gw@a*+GV@rvOvn**6+@@S*y;ZxKpWs7E!yWQO ze4sL0GrY7R>|aRRoQ`j}VdcNB)RV3uKJ#yMC~XwSF@X3HpQ9?$;dt>4``nEiWM!Ro z;w+8D*_HM7qCU(Q4_b?@6~K`Rh zs*zWzjf7G?5vL7EJ|3}!KOzpg*=I(PYfE%n2mD|r>y03w?gI_oZ&K_~nqKl$d>eKu z)FgA@0gk9b=p~W~l-E-@_0xVy2^gGF8^fVX!m4cAR9#uFv=u49(O%F3f$dd2LRP#w zgN=QN2%$TBYxV@^W@>{TlWxXS*5G>ftY*(nT2b3_T;!MMl{qvFfcq?(HD@Wi= z7Z#QtEpVn^KP^a|j5Gc7u66$Jn%0pb!MkH13~UaO#Xiz3XqD`!j6h5a(2Q#o($TP4 zi8bZ0DRZxnMw((0bFp4+$*FjinS}?^WKl7l;MlUyz!OwRcl{>bbxcojvJ!nq7EX#g ztdQP4zRLUIMiI?>eEQyn44%N^TacK*6JE}{(lv!e7=h%C)SYvT;~)?=0%Hp316g>6 zF>|0NWGW>j60|WTfk4X-8@(@}jW{^E6T*pyoUiQB3Z&+`;DNKHxe&LfgIW8aN#Q6aVcxA}l07Se1sGS3TA{Dj6;b%(C$cI_X@{gc zX4d^#>~t}}n<{S{!kFj!6l*n55Ax`u7dt9}9;%w6zyaFIJOwsJG1lcFQ^xJ%6F$Ph zNr{@em@B)aQeBs($f3%@gyEUIIfY{>kS$mmwEIzK9HVo@^zKgFV=Yk;<17 zIj_c@2ZL1^(-=@n7BXXs%|I+AxR#Kr>O+Hb=qGP(VUwEz3d>PU^uk^|Ku>S;>VL@j?Y>Z7@NPNN8ZO zR5h%gW=&=a*xJVY z1zU(H;~Y^PqjEGO9Jk*27n*wJzZ}|@T3WpV)xrzz+}_eWS9Y=@s3J(xlY)ma_nZ|{ zK<*9pm=7WX`>&E6p9SP+w$j$hX;e2j77wMB4177}!cM)H4Jk`Px=POK>P^pWo9JPN zq(a!E(aY-3Y4$}!LHY|WNPo0)%uf|99j>fO-?yR+W(0Z|xUQYY0Y?fMHZG^E6m+A9 z@JPb(8OMu^Qe-5-?`9^)3&~WE5w}LnFq0CC*bUK9XWzv(p(Evf*(q&_n8FVEQ0EFytPj^ zj|CcqtQ%^3KoiwI8)A-)=}Eqwa=OuWAg?T`Mjh_b#be;?iXQG-mq^>~l|&68s~(1| ztb*{$1H!zKYu>i`&gF_YbVg>HW7*8Y9uj)%0JfXkxV^67a`T9Ez0S|}nn)B_WXiN! zUBpWe<|kqaU)F>lx`tIqkvu2Yic>ESImTcg+U}=>u|9!&I0==X6T->0vSc`4m~46u zy2L(^XuBzr`!BhY@1W$<))r2A_^wuRDfdS4RU(Xh5c3>jPec-Sl;Aj9!Mvw2*j9XX zEOI6yo}hY1L2;$7zwHo=}1CC(AGt|bUVa&0cW zuvJqRoA5Q~BWc)loaU)o5e#rs!eg#i!!s~{#O=o~l=KMhr>H!IDj5F(M&Xq zh*wav#D9V@q}VtIr-jP*83>d8Hp16yYnNLa>o0DUDOPZqjGgdw8<9-zL^H1}HjI;N zudH43uX>L)LxfGf;f?M-i7mMZs%Eo+koEVU`~xIe_QmCdBg$lwz2%<=!2<;kh+TDWY9`Nq7NzKEyW81Kxs$9wxmbl5ws{cMp#`J6pmoQoO4EIz zsV;5s>|gm5xU{E_a%oR5JX*N4zw&S{?O$<~^xxQggN7>VN1Ljs_a=k!L>R$F)@h1R zr3_y~eek2cgWv7ex4QAo>1Oc(5}j_2M847mv0imXmFk2^OVV*DUNl?S2&EXUM@>!& zRSFqn1UFIU_(Jz%p8}y1@gIZ{u0BW3AOntwH<=)tJ73&f5(#r-+bQt0Xv2K+hE zx{{{5xfMNMo!@NUOUwoJfD5;b%=uv-(~`fI-mu0; zx#UE34sJt)vcY?t)3VQ#c#WhV;XIB@l>^}B56Nk39LuXbh{GQ%ZqqKNo+X@W^;>a5 zr1QA?{kr=ECE_DPk`eEWuu{|?kI6_8AlDg5NfA|Vrt=YxM^P*I$DXxdo|46yFw%6J zG&Ly}I_<|B>9kM4S;WOv)ROaEr)wGQDh8~w*11b^TE=TMx1W+7o`Oyqu}G>o>BuX` z!M$RvtV~kN6jg+lgBcm5crL3A=jSK;+scB0I7~U4lHz;&L$Y7s)P!N@%1p6R`B*tg zKi*pqaNDx0+}i6DM4LLuS+Z88vh1r?sjh&1xcZ1W6NlnB<@v=W*aIbK9!tO%2GDTiwu-k6o7)jrAb&Aq=Ozrx8dlf<_nhc-5J?_G1j;q;;MYxDu8*s zXy$;HWzV#;*zW4Pz#r>{vp7RuF|qY1H=8XJIHf-ouItp&Xv~s zi_fiJxo~Oy^2Swd+-E#!D!Nx{*P zKA-nlG;lrO7~L?kKiSC0zE0q9L3Rbzv)6%MmOEBvSN?7$lYo}A@~CX8Q?qUiv1JVI zf|&Y9>w=D!gGl-CH3mrtWvRIZ4zR)U*g$W<9bjbX@!_PlWIheVQ>Nxsf72<~+7jGq z3bkQsEZ1zA?sQ#tHW3svc7~yVXvKk5Wi@&RLzBh`#-k%E(Q9J2C0@KKNU1DYc%LRB zm7dME-Q$a_pL54s+HjtBY@QSZGL0yxS>`H)xROAzUZLv8g)a|IOkgbK&;9K8>XF^P ziMbU&g_TWxRur$?bGSJaS#5{!Fy>K+)NK`kpp+7Rln9hrP4tXCw9L2eog1m;Lq-=0 z&ZYpin4dTt?nLW$M&SU`HjJDNmgKQ?k8O%R?1^hS*51JWOI`n@+y6gN*nind=SmoF z!anOM!?NQ5jIri8JA%AX)}>-->D9!FVQn)%!*>oPMkn|Bd(z8xc&KgXgEWBU8j^-B znC^i)SSy&0GlWi9H-VAc+v@by-2|HxC2kXaj_fY`RqkeNq@Mc?Z{=8}tf8v=i9Yrk`cjSw_s*TxUPHjON4 zDD$5<%98%pQ?0YlUOs#Ay;moSFViYxqK zcWb|Ur}Y#=ni-LMVFyU?5QDj~KimQA=MKbK{PF{)aSKFn<>MclCCAM1bpUs3V=G(h zyP7bf$C25%Y9q#-aOWd|2W78ThV_Mhmskz2<|)B}2k64CPDwo{&3v(QTk+j0^Tt7{-Mw*oRE52-azFXcjOMo&b9y1Kx`@a2Ze`LDThelKK{tmzWyNtGF49iwKe z3%s54zALk593~Ad&@%rI3RpUVDEi{XO8}A?vO^oOW}sDtE<9&Fi3r1)dkW%cZ zANou;(~twAJeg0+*?#*bp$@H&s?ZUTcx$#y-#+MBJ|_d9YMT$!m5_vOp|fcSckHy? zyV~pTSwGOEMvsOv@Yfs5!2O@QzVK3O?KTa)wApt0CtC0Cey~4my$@Eu)_<+1_J#ME zAjD3x$xFbvyW2P099sB9>mos>Nj&=z=|CKf;8%W=S~#mlb-Z5K&xZs0*CRo!z5)D{ z3!;?IjKs#C#Xa-R8X*<(O&EOUfm%3(GZ)TYyz*G9A;120=hwq%zcjbE^~jsMmPa@W z6*>mvBU;ewF>_|=oBZhD$~zBG`O)u!CsBTjZq4g#+A%CwVVC zLG?2j`L?;0J7p+chT7{4kYXk*#Piy}Z%n*x4V=C|nrZ3734ol1vTxh6l;&23V&k|L3D}9($0r%3Z0&gm|Op4YZ{NBClvuE-bruPA!oBU^=i(90(l z7UvlVGrv4PAGWBWO#cm+>Cd-(jw>bQKnYDo<%`Uf;2a%ayZUVU%Fw zGIC4{uS;5DIj&z5vD6$5JE!p{VwReiWxY5;D$DR%BF-g2OqkhRo0dgkf^o?T!D0@| zlqiHz7mJCN4K2#gG-tt|zrKV^)f=J&&&Z%WgF)GCokd}tXuUY>zN}ST>|2 zxOsVBclQP_&cj7l`!_&`VtM#37ddC<=Q;4B@zJZj{>%Mtym)%J+u9g0P|LHe=kIiP znSRrLWg8W++1s@_DR3MkV5c$Q@*Kz0F0SIk$QfF0(h#d?<7b=!KR2A9bmJE;j@`I5 z6Re)^WaeSHZXSr_x9~BQviD7E*G)nS?|2_x)qxhB9pYVkm8otbT@t=ZcNxHlQUl}G z?IaMqkIr7_h7d=VwG>~4(z5|8RrW$UjY4WwU4WxgDwC}%>a}YZlACsXj{A6Xj{CXm z%P&zbVrCsSez`gX z+DzJ%@eq-n!?8cW0~NO#NSIOcbZ8>RS2U7?lLu&}uNaP0PRXEz~$!{=TmO0$QD9je8TuK8?_M%ajkwT<#Ut1P!xC|_B| za{>Woo?mqVLFZu8$QbZlbki|gl~ZCm2iT=h$uC4!@G`(b}>pCP@smHhV3c6%+G#Piv^ zv*x~YpfYalwyvr?$=SY2ADa8*5heoI)Lj`6~%@!0c!xxJSE356rh0}|( zt={3`-oXM0d00qNCH<{;oOJlJ3;wsc+=ubqX^SMXCCO$SFV= z5!>vkNR6ciUaJHtzfe?-h}2Rd-M#6`Wx-LwQ5ToQQ%73Tk`Bn3bs^+hZcx&@3Sr5* z&3gmB^UpOF#rwa0{S;;dKjoGS68apeL$F>(G9`f5hP}=}eb{&=*M^;4y+Q)*W!L^f zo}3zy?_#$vu}(6H;UEz-#BQ7!GDYXG-N7+;r?jt=1#kq)wZ>nw0? zTbL(pxZWz}9_S_aiN;;u+*HI;_DS!%_$Ba#YWkIC&?NzEZ5vnk*U72MVB4ARmPcb` zY6qT41suE&uZTk~!Af(T(zG5oB>G4SptU#T1kr;YGKW3U!yKs%k8cb*V!)OzTMuI{ie0L;Z=zWd9+>6SS8xgp3m-m>8gRV#hks_>Q)F zn~eU!W^XVcuQ@rCox`MISe94KwPUDHGgJ0AUDD(c=>AC1+~^G+dH9EXL}7wlQzKzY z$Yw)$P^=qvfrm7Ft({7=BZ?UDqeKg@SV~p2lJ$s*0M@Z6C<^MECPFkBV(1(mXcC3s zlBqJjU_<=V#M2>+>qk7sP$U+ZkHVU2~OSX z-_c)(vJ1o3lN~}@1*#UdKGo?{Hn@dFuyFJozwhwjcqyt7WRP58P)Dyb-0A_4GS(xV zx<(?q{UmiH91D%;MoVEPnUU##GAH;d?mCm(dR_6PcU6-l6=&O6qnsj@_Si6GF_J8u zXe-vvUQ*D5T#=$mrr8Pzoa*h7@DlFZe0!m(z4%+s#h+bq@ltqCkCe-NM2?I5VhTsx zQOjGnJCv&BZ*f@ zzwGo?*ix`M;^*MFxZ5L7N8I{izcaWihCb&31+F_RF2B>}pOLK*U3x=S+fGCl1c3ul zJ35G#*2AdCkWff94GSiWNYEcBa5%XWY|eDfoQEGHNobt8(onztymRKSR-6g$OVF3r zBeAfFOgZ|rqnX7x&kG*#Iuu+BZ3qsGG;-!S90OFOkAZp+ZBV7*0B8Fj=UOJtGv`Fk zz91U~`G>^OxCsaVZwaAf&Q8?Fcqi_PrcHujNilN%=;v5`a;^Bb+<26L zoNTt{R3V-^O_uzVm*BWXl3iU9PsuYUoJ#FdmoaaWY&l^%X>E+MCM{EZmPvleR316L zi}JUdOWZ%bK2P!Z=?*fbbP|#Kx$cb)IVb5;N&{pfo_&oM7xoVZjBUC$RMt{vL^5)T zv89LPYnXG1AAzmM3|v~ogR?~YB|}pZX+rB9SIX_aqmskj!H|)^vceG4vL9{wapkcv zyd*n;l{tn{rnxFh^JJlxR+qg3ywucH`P(i^zrPZtq~ssBv&M-~A9ue4mi7`bN)oFi zPcsT9{@@eVhPY ziQ>_spGR9H_eIQJRMh0{$n}PU9i=uRCHhL+CdF0aAip|4k61s_Zf_(V|96^m>A$=_ zPlfjdMv0Q*l`|bs1T+Rj;qUh6^_z#iyE}bllkh!v_~3J$?LF)mpE=(pO+#Ejns}>o zTRyj_^9<1sHu&lx2N&(iJ5PS}8r8!homdq9w5woK6?Me{ciP|^eMcbS2H}jHwE#`K zIY=;TbFWVox- ztG38(rYNk+Cs}}7aF1!UO|-0RBg_~_vOC369+J-&h0$ahk7O+k-}8o)ka;UB7J4_( z{IaTB{aav?JX8*S&N5Wu%>lD%^&PQ=;F{y;2u(|q2p1rEHW{cSt#POxF*1h~YL&TO z@jxpho~fc*1A=OoE1SjOPt+GA)8zPEgLBIVsv|PRf`sC1DG z(hdg-xfmFY@v+is8mh%1dOqJ_l|m*B@M%~o`@4;0^To>wHs-0=p6^M6xdRfvQFixbp-@4?^l2i>Lcf6*OU62SR#WD0etg`lG0lZRl?tOmGIju^R+x0X)9=sy-1WmZd1Tgk%Kj0i_!Yw>}my+ zzgRHDHuX@CC_-4=$Fed5pYlR^PJU+U)o1|n!F?$+oE1d_$mzxs6bL&n@iYpvEdqLl z$|mCh+*^LCBskIe=8&-zJT}ExiO}&~r(bBy`1gP5`aDJA=ag3K?!kc22$p~5E=jD5 z_)!;LqjW`X9hBj#D6z@#M# z>)k%+cC9-`ey@jYl6pr?qdNfqlf1P=Sd|`AfPihAoaqr(Zfj6s@MqMlm9b~3lqGhwK zUZ7+_qFxYAPb2A%^kFgJ7=}^-0La|&ndeV#h-iyaD?`|uR;3E9Dpx(KKW z13(|3aMlw(^9*fwaM}yZWI^3XJ7Ub7rPfiA9dcSdrU63j4r3CHvj~7u2^P69t4o}d zQ&lGJM0|IJAB0z`@;ajDj?6R`S_F15w>r0+LfVEZ?C-e>`v_i5Bn!b_<~p#gKJnF< z=RNr`eHLhTW$^xYt2kOcAv8_hTapm9@tP@|RB{MJJs%f z8V3*ZR%qdbTEn-mBCL^k2A8RfXiPg=djlKl#-~i(BJqjf2t*FGjxX$gzqzpgAJ^xp znxE?kRnS_elBPTckPGIVVJ5nF%xEabMW%Le02)cS?yc>vEQ&aU94z9$Mq1;Q4#D^q zeRBTU>`pA4uwku0>OSAJU^NUo`b;qW51F)^X|F4yJ{k~;IYwUTKGT*4jBfSp)V%}3rxzQQJR*~9 z+c89S+jhYkd6Es26q=xq0Pp1OYOVtOhCOk~0Myd)<6^2*XY4Prh-3r1Yj%{(Tot`J zVCeW_@(-Ge$**3Yr>K2xxJ!`kh!TD$wTl-nK*{diq5t(6)cmUkAEDl@qBmfYA=VR< zcy0J9NIu-NYr^93FP~5qU7rZDRM>BY%TWs|A#y7=)m+Yl z(wkddJrxrf!a(pmeo=wf@2)kfldWdmCj?!5xC{AfC+fj>wyN9 zcq5r!S*xtcE2Eh$YQ1BjD2SJ;`(TLjAwN?GJFAuP5Dtea3kTA5-F9d5wjAcs3Sg1I zHrrWYQAh2YNrhIikKHEQ_XY#$f7qPO|K#;~%Ej*o(hP2Dh+@AeUKT!sDh8YjRs#!g zP1&tsYmN6MzcK->r@(PI+me92s5&od>j}z#)`O#uJxPU)njC(lU@;TbSYp<0+aS&4 ztW0Zj8)2IlmZ%3e%T@hDXVWi$P1CbD*h1G!F^H8c%4}xljLDE@XVHprx$C zMqz~^_3#J}nrEYhn;7j_T! zNI-%gLRGgn$oc>@1vAC$K9uJ~Rg$<+m9-LCzeJEazjS)hBaFt*#6NOgd>&p*4_X3$ zj$pbGcFT5s(v}`PYH6W19I^u^*(%|{9V$?pd71^ywtIM7WE~G^LENnqtl~eyhJ;<{ zs6bV*aSVJ)Z5ftoVn^JAwVWb+nKP7pm7Xj$O~*p{O&ge$w9aQjFLY?j(OClZM1%Pf zf{T!8;ZqbIIA=i{2jELN)8q5)KW@&qUv+(fg78L1O@~k69Mj*{zth?7$VL-$GG2DC zze!3&r;11_RX?Hi@wRniO(@9D&*Mv(c9$3{Uj*&SF0J=jD)xOOY5_{z;Bcws`BUxX zg{I}%f9(9WEfehzogbME*E2`8mS;$LIA6onyoTpk!xh$`y-KxILp4a{;J|s@$0?fW zgJ7;Sr1r3<2~Na+%7@>gTeX_kj3JUr!hKvF6 zW5Zzz{Z-9@tiZy6NuFh7R;p$WcwfUQ{Fr-f2`po`RRZ3I$TGL%IeGt?1;{q>^aP2&8X=c8=`$E?wOFq>#O@%*?Eb2u^>45PB*mTuPa_7{_!^Uy{ z#6{sVAzSh6g(omgyFUDr%hV^GCS!kuT6bT{dG+ot%@=OW z68TModV<8;34-UttEjRSxYH^W*wGDI)A70VpEl;w``>$gflBE$9A{bcr-os$;aBkY z*=S!;bPp5kcZOB8qO|BF%GDEu5SkOGrlQ=YGZD#v)#arG$7<+H{!?e7KP3C@Yq>ZK z$5hRCsdj zTNMOL3`AtJ-yG1H~tsB`+G0<9=Y86{AXfp$}c*-dcSzkd%X9~zJw%!T;YxDao|DAmC z*M9HY-gd8beSx}dt99?e!gqCeJ7eNV6QZt$t*7pgXmJmXtop6iS$yz)f(?mtp{>UH z%sbL!6FFu)lx*{8|3&`X`<#32_{qPdKm7N9-w*{LEnG`sSX^tqX_&L5m6I)h7<1Oz zz(rK}LZVzbpI6Buf}tVtBP9r+hW=5S*CVqCerEmRMw@=*%^p4@^(x1q>0c5{Y3863 zI{55MEG$#Gnp-+OciId! zUG%N((=FPj>XBad zPX#Qwz!s3A+XLAL2tZknPp+sw0gQt zzGW8XQ*lNhe)5qDmQlLz$G;~N1UWz})BY~9GMfRiqN(q2B_kYl(k?R^FLnve*E#^Z z6oPNwCR=`H@G@aKn+AiQ8{XwVXx!ewfmi6x#m@1+5&!et+Qny{Xr1#YkVj96bC{be z;~!bsTH?aty`)sab6DGcjpzWVBpH))pyo-h%AXu+NduA zz+q>JzZmCe-%ts@YbEdM|BA@#&^v6j{wp^sWM8G%FQ#9K;y?Cm9 zdI=;AY-3@zGpZ_xiSmeT@RMlHD|`h$no5iAhmVGJMAn*hkDydR`Lsl)4xl2HDYUUN zAJx#QdO8#RTU`}dqbl4H)6*h%3S*dm`MGbUSA;YDtj?1}S$Q+cq(}V6{2fMayOy9(6uX%9y^Xr@$b{my+goq?ubGDcRBz3(r`G+d0x6k}3)OHt z*DIbCyc(l27abL%j@8xW)s@Be>WX@?AC|M7v=QhUT8!3mPFut+Dh4IK&}WjvKB~b8 za;5V!5HT1ROs_%eEduCu7&3DM(uOI+LXD4D!=${A9U_NAcdAO`YEvCCa8Iyws`YkG zdmFn1LZp5uF=Ghm`yg?nwgKI37Xc{#WMx&syQla`3x=yn=npLk<_n!P7dzSj`d*&nqxA8LN;d}^P=4_{iCZ|nagHQw4ECv8My zV`FMBs3R4Beg|4vDQ%kukOz#Xg(=TM&L@c#+Je)|dj%$`0Q!CS{Q|xcM+j$q*!iL+ zHhu-#m{D6mI!`U0Zl79Od8Cj7)3%<-hpf~?T4XmUOtYZUxrxTAoI_$U4 zGEv|F^`YTAifmJ9icG^8jnZS%JUf4CUbC*ODDmmW&Q970$AoxLSJ2M=3m^7tM%twa$K+>q$Su*iNJgc< zwbi4Wq}O`7ho5^1)D6eN@vcHMa}nrQ8tw^XOg2h!=t1X>9OBMC!)SO5D^F6#RRY~j z#KrILaKXL-cNU0@u66;ptBmq2m6Z-Yh|BbbRaKv*=(iI-6vt}rs^=OdqbRR1eMLpp zT(7mwfHI%Q<>umDj0GO=8 zw2_{@hQ{4gC}FOxR5t0DGkC#-&`i4qo!7%ap6vnZ;zORLlmlE&aRC=8AG`E49Ps|& zvR0XxcvyCOlRodHjd0AAn2-P?V8PR~bEj7qGFT7_D&_bbSVqq9Fr9mqw)lO<*bwnD z?QeAzo-7@643eu{IH;&aswjvl0+z+-;lZvVe>Cd_lCtA7>aSinfA*;hBlxnXG-||} zYQ*wfTy;(BLC)||Vb0pir{8LpWqX{oDI5d+i6`(pd;;&ma-@p&4{1E9P zu|T;!x%FayNR(=g2d+Ae_2u!4SQ~q_XO(oq!(*LmSI($mkIRnymL)`JAp!hbu=O*vy z)~gzT5m1F3iF()5tNpeH9}qAY+Q#zT?LE!~)b$J>W*Ngh0MFJUKv260pi;27 zxwxtz^y$0MxBkiQeUx((f4H~s^nd23I+AY|P{>KZAalLX@BO}!6BU2aL0ez*4shEz zQ^>VWYmN~FU<|D{>P8=tAr@s^u7RT%?uOjr5`ZZJCCau13R;oW!Y97?8&o2rJ5WuN z@?TLMQY5O^aFJX>oEQ+tAu?tg$y{(WQ?5j1G(VAY?n{;y7;Sn2f|SE(4O<40%~%}s zic=3ReUN$lIpxf(EK;Ep5)>ho17{PIt`p$ATHk_ECn7Ef$+B{nYRDA=3whHlY;uKY z0eV^!f+2y%Olwa}yW((NE#|lD7-%91h|4D3LPgn`BBEJa+oM$C+64y0Yo1SvBDVJJ zb4J)|(oHUw+ury?=gBten-Zvj`^*4jz=VS5zC%a8{w9w`%~7e}etn6I<3@jn6B}@zHigt6$K5)22QJy_x7Bjz-h>7x9~^xA z2h!^fIh($+vwVW-3;hnAPCKkUCf_{O*}1V#Ty}BDFoE~eHnUA%&|M)NF84PX?5gY} zWyvjUpePqj0zd-*j_-uMYli9jCD&h1f|K5W{>tRE>|7o!{ioZ);EsT9!^OxY?!gV4 z#EyfOM1Vg_bQ#kmfnyPH6(EY3A|Q4i44Hi-UQ3-)Ev6@_Pox^oPs$P(0QsvO9p;C7 zNd#4^$eJDz($zFXVSn!dSpBIO#CQ79ZU5pZ4C3wICJdte+@s_=*hYGQije0cjIt>e z(SIPgEC*w#{~oo?u`23xL|@X1!#~VMI97Ejg#iCG#8&uF4y*g`c*8dYFKoM?Pia5} z?)~oF4*$@y)j?BjXw)8@sIm(I6G^DqVpy0z{i$({osbj) zM92<4n@&R9r)6=Ue5zudD}83XY;iUng+X9pM5Fw1out%&5l~h|*-)NTA9)6cqfMm~ z4S-eRtDTqoH~7CUBU({YL1T1UR17_&#o>Kby~xRh$@}tejy$MkyAGQImSS# zCKP}+EF4pJ^+FSAEASCC0#bvub1wjo5y#8SdbvSCm_p|099Sb<#+aE7*EJmbXRmQ4 zF7kYI4ZsQqX|}&kZ=7!n0qBGz?JtzJ4_Xv3#m;wGCz2$4Ccc_q1&%dGdXKqqxZ>P5 z7xY^1>*JiA>5?cRJRI6NK{giaNvwM78tDA5z! zYTbt^`fYHXz$f(?okrZg(QTKf8?+feev|vO@9I7j7)VazIdr$4kZoS%d`b+e922^;SIjr`bK6kfikQ z!G|SwY`P`_wKKmGbNz(cOoO`CBrP4nqKm_=fs#^(u$c?>WmPTkJ{f9C5^M8zVse{* zb8#?yMe>Iez=<4NT|fbN3|{Myuqzx9N@bTCsRge)J50>9fp~bf9PD{W%208tx`7W` zt1*Lme$~b9ErJC)AxYrhYk}d5EGXuMITyImDrXSX7-m(jGcc$w2nqNWdNHitPW2?$ zY#<+D2vLmSuJlz7T2t-X0YAb333T=3@HXeK$(-^1S|;@pY0`c5KZ4{%xwYdMjid@9 z!N*aR_*>Zk83qVVL$NWAHkrEpbF1WNPA`7)43QI(bp1V{paS)4reRc;DQ>I{_E>5) z=^6uKz|qK?ZEx@70q1zlr2egMOy0LNcUJV-B+Ggm6zA-Pb64IHP4>yt2Tn*b$oH(& z7A#4UG9CYSRnP<+AB2?JT6J(Ad?>z!Ee+fc1nqdI1=je|PT%9uKUF?qTRUuGG`cs# z47%J564g?+DQvFKlGPLd4(ukJ3gh`eE?wZnsyC(l?}Q{@EcXW|$As=$|5d9sLM22{ zPg9|k4A0FeFAB-KjK;V&_;`_9eOZ`Qp1NZrFJ*$(Nhdcv{{98X``6= z+>sM*M$3gd%5ZM=bkIQU9-s0bCnQ-35fYu|l+>I7rNm6zJq0<@bt?3BC>B9cqwmv$ zZB5Zt6$xrTUDSE0)ie93zt_47q21aD!ISVi$>@6}ZUnk#N=2c(kaAp${G`lzLV8Z|Xbp$jm#9)3k~Lh;MQB^C!2dnx8*0Ih?0gM-YJ1LHcEo4{^?E zh}KM%#lVq>Bhs`MFg6zHm4lH|NH;0^%ZsS2Yis75g^gHwIisZ6%xZHVqi~LM#$%im zw1DQF9<<;AD*=VSBo*4(J|G=U5zl5t9i3wh%FHB<%~LUus!&G^g{sX_u7X?p%_ zi*t^-Zg*!e*|APVakut;ItAK`RJ4}?Z;l`7&V{8SZ0bZUcWdcDv@ILp3Y4AF@u{|O zxHU^RdbF0q#;^!hIz1J8R7&h$9+eV%_MO(2yByfW(sUHY!Yo8#OJ-ZwK^Sh$z9f{) z;IgwFdc!)RMdSDAub|?Rm{_x-WziuZ3czG>(9GA)3?_dJ=ZY$%Wkavv) zJ}`ULTe`23-BM2gVFNyM0gBpSbT;YNmGH#_CY^}{Y~TkX2;E4tO^_+ccZ5Q##IPR2AW&*3J*+&*sQ)4~fMXH%z5 zfDh$8gQ&^vwbmPEjGL@W z{0m)X%&_$8LW;!ob?GiH=kFxteg4uq9Y;HDukk_q05G9q4K0uNR)&nKG8TU~muGbC z;|$U8FHW1lsErV$q(go61rgyGQ3~FvYo;23vLZW2Hptk`a$#`HUGa~7y-GD?t+P&H zXG=9w;yObW@GCD;n1%kcoGy!u!dZl_Iv z%-+|zOU)z}4(mU|=6kL{tMHaeg~9wP?6T(zw{ze1wIP{2=AKDVlxg@N9~Eanwz>-E zYGR&XrT5cqGA>dSQc96}DDha7Haoqru-Kw8*gLBhk74+nHqj4NOPzorRrfT>d{(MH zvdHUK&htiRAb75)4z55wv5*Zdx~$07p`78fgJ(m<}9Ho2ckYc*IhqHb8%O@smntT7+0kdgtkW+aS?g%rp;N z<1u{QEV@A~Q8QUNSLqZOj)s1U1DvRrN@;aCXF~D{V)g)rI!4;#UwYbOe>Ck;L%o&3 zG1CM0`dd2Z3J95O-@;GbI;fVtzw0^#~O2@yCsgk4Pi7X5v$8=O26gaTR0Ycrk|W zmBD8Y4AL`E*%8B3)6mUGJ7bK*5+!u5f|*${w}AR0cO~-d@yEMKlgA889xrfa?q6no z{+J${X@xcx(C+QlP|runNGL5Rm^rj|h7+~k32Bp?T}?b>iAwN{4r4UL7#1~rL!t3< zOi|q=&))`Qpa;=%!B2s%qySN28KrJyouy+Y$`jwtDUeZ*+MZc8U}Z{H+#8v@^WwP{^wj-e{%iG`sK6h zS0T$YpHV@D9U{C?fP~-PJN?X0_g25M_r#08$3S*~O%Eb_CXNRM=xDZ*`D>~ZGK~U; z#YdT`vhtK_pUX*NpXi*X2u#+TNhkJqIfB|U^d=lvviCn}&;t{d3!7aioI)LpfJpVc zo=vUJR=4egM*`40%E>e3B){4V#`=Buv)}eMHgYPD|Bnu-`!~Vkzezmv(P_K+`UN5Q zs%<$zIXp41F(~Oyfi+n|7fc{!aUoT-Bq~RnsTs*uvSo@)hDeO<^9XcaIp0O+sAJqR z%66y(W1iFlcC=jmCOGKdxLh4D-J@b3dmOk&_sU?#bW=T_>MLZu{S#9j*3S_42egM4 zPN4RHbX?SjDmJA4uQZ|li{}uEwOK+!k|;`-w$^ij+-Q7RGjchL!MGCuH;}R|DNOl_ zp?(kVGH<-2dG~=s(#eeUMVLC+9UVE0xa_fkI%3PGi|%ypnqKjR3(MUdfHX$cm^IUO zn^Qno6E^YD4Jhu(I?x0QNg~v=cPz#RxC1Y}f!2 z^T>%tUf>ghWz~3rbO&{^;`*#TDoyt&<0+OOeGGov)gjh)rp`@j4(QJAEeHd?vmqb- ziu2KLOd_M7>;)g&IAGR(gOO;aa!Wd7^1*f#i)k4%D{C#ZOhqbicpUrC2SFu5PFwDK z#Jl@lHp=Xr?LVR#014aw-E#j4tGPu!AsLmA$)qr8-|=m;K`UZ@D?=qjd9(?zEhOhg zRZVk+@^2fl^ebxLBEa;&lOeejeI!!thDzYydcZa>cZA8wyPP?NI-4NDcplYm z!>eM9lJ~HJeDh|XY3HeY%vO>Pb5<79rhOYFH~|zKok?VAMCVytUyc~$OkD-cEnB&^ zWsFrs2E9@8m!FY-YXCyOuo|tIbRJYeZDZbo&QAQ!w$VFu2jPfmuF&WYQXMbD59f0?jV&K8g9ui&8xritR1TV+j9etOt@kzK)w!tiNXA7Y;gRC#}Y#x`$I_WxS4VeVO zgO|V59m}Z^LhR%(`%dQw z$y9GI^l3)?y|;-@8($~O^{s~*ZCuYAI7~VeeT1In%7b1{U@3^@4wc_ z)}EF7nC5rPT-c>Q(c0MzbBtG3*r=P+W>2XVF3#5BQsQUIa_Q>W5%oh^ zs}w$vIm1lTwLD0=rLq55)2p?*_U68>w{n>P;M6mULVnG4#_ud?&Rv5aS(CS`qWx`^ z)kchyQqH#wbd88yizBgjxKJ~4lG_nV-drG}mZQii>g+&oJZ5*!c}zV7sN7fZ42!-) zG+%bvCvSr5mU0Uw&g*wxZ({RSv zxjSSh9Sa|V#O>l{G^l!>gcI2iw|&4NIOf}}cU^v0u^#E#EgE)I8`Dkne1{ZOwqb1K zb5uiOcp56jf8RtY-v6<6(+rnPbkq;sAG-Vc2m0@_ zGmku>V-_~DXeGO*FX5%i$e-xH{;sSN%!3W>bU<_?1;OEr-F=Ji+`Vvlt9f%KZ_cSo z^)pi$H3y@b&7KGFi&G}s-ZcUDhwd=s5Tgm>NbStEIQ6-^e~0FisT^};;`Bc@Q8O?8 z5F7O5eA`db!_%r@JLM@mmXNV1+I>>bc_fd^HREm2W2%L1x6<|Ui9q_mnEb(gDf}}X zQ`;5$3;(OJA(Lk|NL44xPnkfc7jm#5cIa@x{SRbCzoM1+T9>y!j9tjG6JLgq+^c`% z6JPnUDc`s^`q6u!^SJJZk9Co;2h!D^oab5#t)KZ(UH8l4-w*qXcl*6&=+u9Yr!(OR|ly0mn0tG2c6t<~zK+KUTx24Pd}Fv&dell{{Lq=&)Ls;8r>jV(Kx-Ioz(86EfZG^9&wkgbf@tZPgZ<( z;DUh?x3O*qoA%~fsoI$0(T?FC61ws}po!!Eq}_zrsD@+3Nio8r-L(b)w#U*g7<7E6 z8f@e!j^XR~5ncx-C#ZHq`o-cH70w@?45G1BLUVCF?~$UM_}#XX{~wdtBTi-?32Z)@ ztZ8fCg0IwO2|T1l{`ndL95Q|GKmHyxMmz%7te8f|sGI-1eu z!O3tdY^I@lG))GJ9CL~_1oh$C(oQGFj!SpW|9t<=(p(SM)n;g!R_;rScHZE+l6tjW zn`oAU?((4H(#@-RpCk&RiPdUJyV>+b^ghy+!2=@w1L?vaScbzxq+aNzgS@g-XHMD~ z_NYUg0`KLiO_7MEfKfr^_VeLr6bwmUS&W-~-nGT0-CA~KJ|sOo8!mRRn1?Rm_8xRj>UJfwqvfOcF)56%%n!g>jQbxSk#^B$|gfREnytDc#hgB6p2S z`x_lm-DCqQDv2Q`x~b#7@EwZ{)XUGvG^4*FdMR*ZkMan-a7-=!YO*9X=}dZm=#?wX z-GUizpTt||ae%!kTH@qK2;e{2$_*x{EMkv@_<@quhngl$J#HBO88-oCtt{-#d)U2s zpXv`Wf8UjS=$0L#8Z+%sSOJv9aG$bq8;?P2Alk1eW`iLejXHWcxmDaSWb*JbSCQ$D z!AMGWSv zpaONE|6;!pf3?PGRAeynN!h%Xzq4KxT2I&1lIxqj@wbz_QF}_nwy@94h%Q8o9tIoWJ{#Qc!6J7@g}E)$qx=JDu8kXx1H<=tLCfMxMcCKz&-UkNpPVYq z+j&%%N6UxDCr9>ciRc=QQ9mp9N@>T&&1rS^lCfc~i;mImYB!J2?HdS6wQi~&!3gI- zhoeNo7R(!MfZ9m-6Q7hK8@#+Mj-M44Yjz^0oY5v-(Yk5%PB-4b_`*h-zcu!sVy#yN z7ZSdQc%Vx*`hw1mFFCDzxOc%dFgBH61F>w)gV+w%ArqkArOd>nDw9u;n|qvkaKS#k zX&b#7+mP3#apsE(wtS%o$?U$2pu2eMTC^P4pRDSj?~og-qohTOy82Z-wAp zv(#~nzl_&mTtQ&(UXlbQE!)O%7V`r(Hyj@=y6tJo-{1%EQZk!mBdM!Ce{x&xzUs8a zBosXGj)QCsxoa?>`>^81iOjd)JzRaO!yUW{$Z=Od&H86T%?Bfz-~5nc5iG6n4iQBI z$E$xnS)2?i&L^w~PYP~K5B)3NKv*a(R^Y~UJWCgk7;md%um1&j^c(Iyw#@!3BEP@j z^7~tJM&p_m!CAQi9137lR-p7HSWigV^n{I^TPLx0^uoHmOk|Z~bau#t2p|g*x-eHy zrV+r70w-$Z`q@^Bw`VT(K)H3?KgI)_7=3*v*cB$&7i9WhE_8w?PFc3>7H&Tzf!n-U zp)6JhcE?fr_D!rTxz|W6m(q;t)UML4S5i_XHbXyUT^y8Br^korvqV;cD*}oG>dYY( zyf>I902l~UwnM$) zJNmZ|^sF%B=rBf{IPV^MXzI7QQgV1wkM`SS5-V2rFvB}A%7rIbcVLg|5Om%WGULx*u;()rG22zz8h%-pff zx94jGl}v};&Q7_B!P;9;i0+Z1o$8SqE$~Gv)45)?c>_UO;mD{QS!6jz(Jp<*tb@ew zGbN8vO~}5P2!=n;w)Vhv%*Le?vXTRkOaCN44dO?OASqCTQX)ZV+vvpX5%oTjMhR7h zbg(H34E0a@j0!%~_Kd}F%hNm+Sc8PI3EPGt;9;|><i$EjQdz+OT664W_80 z-m+do)-LZNV5KF$rqp+H@5bI9nhS5H=>Z~WV0WqK%2lgYmA35I#gbUtOPd{yO#Sz7 z-q}-WJOONK%zJ8N3VLO>(Y%%giHyJ&qk4pX#I`}W9{Fh)nnbiW$YOF_L!wnvvOC!+ zMr<>lx@#MzYHiED@EhE8fSpCf7mZHD(wM~2M!1$^zm`|)5O_I{A$vyOHA0K(y5bEQ zj{ORB#6MBOSS5(rT-|zvc$bekYCJQO2NBixisHG|CtD)Zg~>uhb*$GI?a{DD4}(Uw zN!1K{LkQJ#;ncKMDWy=g^eKcEY0#l%)(8`~`J@!<#Qxov$E){_?jvHUm~mjl>OVgs zo=QtIbRdo>lhZ@B`Z(?;r;e^m{rTo?xKPZ2^kw%`eisEZN(%IxG*EUsNvMzj5rmWY zK-#__iJWl+Z4+@5(rD7!#T1H6#LVilQD{|oEXA)u z`oR-v>myNw;8cnma!I)(Q8a{?ICre$jAkkpVTv9g5Z5#AE-5mH^g0YTbgnEW1CKP? zgf|9u8ErgKEbbTBGdVMJamZ-=brT_k1$m}@OHS6rrJS_|US)hFv79DWV`;m_|BMm9 zHpLj^li}>RPlkpJN8uhJte2Pq&Yh4O%Gtz7i$}X7JEK9AX9u0r*|lG%RxB4oWA!R^ zh?hEJRW*`Iu9eGq+;qSax%#>C^ET&!(sLWmtu(=*;u&&}y2>|qhTH``I466fvR5~% zLVmSJT`zy6K`&ROhRfB48ShP($#9m!IgUOytNIjWxt?{cd zfwPy041P@bXpa?X)v+#@UUi$Ei~GVLJsmv9bXzQcz6_($#nxL)6MwvrCVn~I<0g%f z@Q8U2v`!3|b|z+3qohE=A{cAh6xPno+J?YP$7ZqeD#8Wg<`drZWKY$2k0LHCYx>OU zZ~*p>j!PGdo#t~%YuRUYVP}2gdo)~{tE!2XJUiKt;gia>4Mj=v)t5x8P39wfbn3bFQ{i@H{IPR;hV~nrz5(#}=a2 zXL@=k#^Xn^uDNeri)P6aid)N^W>EumdUh5yT9PP< zDlI=?HfK9s~MeHj5@ za>O>sHyQG~v44ACX>xcBGo&Exe8ts}n6RA<82=Fy!l7XI0HcgR^`6yCwh_JnQ_)!) zszyyNktf2(=U6M~2yH4JTu3Xfh%#6C^)U05(Ytps|!h{XK(PG=BlHt-fvy81O8P%;BOyb+%U=d z`d4X<k>3z3Eg zzujxeNx|IqhtwKFg((!qz3B=0Y$4lwqGTNKyy5sy<+YK=@6kc(P ztQg#)@ho#xTEddplS9Ts<_?Y2QgCm-?tAuxCr)8B5{4W)b+z&WWs*;_f~dn+XS;7 z8M1D!>|7w*$iuC&8P=`-zB(At36h4t;c!sa0g`XZT&<=r7Cd?1bV~VaQ3@FiBEoDB zrznM}7qZGYc~DZg?J>?6_iMw9UDZNm$4Shkgs>D)s#<=J@i z(huW9F?{XYYaNNLxJM@I_&_g->6dZzCXU`^G+*9 zQnQ^xTL@a3|2k5B&UtEr+`g)aw%5WJnDJ7N<+qD(?_D__otL6C1%NRIdmi5G;Uc{qj&J#74Fa$8`P1G*;dk>6j{#Fd}ZsfY_#|wLJ|%N zP9As46g-IE@%^HDxSHG%(Hc}oC8bp7t$LrMougJWgw;pep~WO2)!aNuEcSRGB9pag zm~Y`}F7@<1S$xOyr%xIZ5lVawmZ#%e;<;hbY^*K-!6~1)?+uW2v1n@{>~zF)f;HJ;3|sYB+3D|t9YY%MFKbVrwk5!r7a zQaroz;z4+EdXj9mxn@YE;j(|xC#jKVgy0KRU!I)5t9HojZza7b%9!fw^X_W`2?fvb zcf+pE-^1zbUHI?RdtI?VTZ>}0$9H{w3nz!e?8b*isx=a5c%Ro_b(EW4UUqvyf)K&1 ztV7O8OPhs?K(iFgxV7G9+KqUqT9t4WT(|GV(;&^ulWiASRQM|CfvSkcZp<0Wvy_%+%$MK~dE8Dq=8jbMfE*vDheak%3t7!)o&it$ zi2Jq=utj>WgtVwKnC`6Q5b4pX<;X8$HxEVpU_o$oF6rgWSS*FRPt=tSrQUOf#wYi& z`jUC5eZ%g;=UKQA++jbROhe^o|WLSutz8OFx?>;e?|%DWj%bO)ekc*S6U{D zmXt3dV&0EW|7aXZm}Ux=VKf{Xm9w~hi{snLV!;42_fuylYsM-Bb&$Q8s2(=Y1{>A1 z4LS}+8Zb8b|4Tl-OK=MTV-zTEdO8{M|-q?k~BfSDuJE-@&FP; zHCpw5`8wNC8!ENO$F$P~$*MwJGVv3gfb?B_d5K~@o|6{6OmLOkLN@L0F`p0jeQod_ ztb|9j_R(u#^XSb;nnvuC`)3bMuh4IA2&TYIE}`q(ZOM{=0$SP+0F*|NTO^R_G2?pnQV>y0RT z${Mk3H;dA3x88m0N_XB#^eewJ<#nZ7`EEI`G5_|7Nvn@O>8AI3&7$$57KYQDgCf+Z z9n(9qol+;JRs#qw*#k64k*o)Lc zvJ)*Q-r7Oz^*~?q7@N1ze$ivmJc@)Um?*L#baSwnt7hypm9lHycla#&r4EIx zIur-yr$v{0BR6X^v&>Em`&oC0616bHmL#|an(UiAoD6MyMZM!w3`8%^N-AMbM0cIl z1^#Q_DyHT>Woqv32SSy$X*0<$l3pzjfAaU((^);p*+rdoVpY-}eKvyRYNf4VVZy+@ zhiV94%Y?-H9!gAeoX>I&(t351j<7Qpqm=8^mrU=-saq^yoeHA_n;Gt1#-}RxmUj##}6w@qLX=n%?YmjNn35xW6EhjnLg{{*mWXoXxCQwi`0|YEWsWT z)ucc;iQ1iWq|krnuaOcGwZEW^EX7E2rN6SQEo%J>8;sr2rdvIS!IyCdgJv^7fwXn^YOObN=s~ZCnBWvp~v(hS~+_EsULi<7*Pf|W54P}U179lzPc!)j|<;#6fzCs+`S>$ij=_%N;$bT;7%b81Xfndg_{wSHBPVpN2duTTqe`)E1cGKD{ z4w-f#%SsMS=T_Ff1v14Dr^SOgu)9l_TyjaNx37O-=dKL{z1#cxOSfHC+PG83iHGnO1s{bK&n_PQ8l4Cx&hDDfkMQb_rQb*1g-P4LoN%fSUHRl;KM zrc>zg`pZF1b(xDGc|hzLqhH1@utDa$@UTVHOl!$S0Gn#ADf!0Ty~*FyixBaF8`yX| zRUat2YHnxGwiny5;*+VKqKvadA(Hih_XqE_1X-To)i{VL#G%TV?U`h*(lA~_H4kjv zK9M=x^bEt))4hF45hxZ{@Tigwvs1&SPPx(!2 z8v`M7%y>ggO9vtHK~kixar{L4+OE~BysJ4a&5gwL8Q&TExJ{0|v4R;NN_4eQdpju8PH$azPa?$?YnlC273Cp+D~LuVy30QLfF+TvcL&A$Q?J-$jC6-q5W8^ zGh=^Sy$VIVC-NYfon_yaY1y0UUq=>nm<+K#~ z9bW*H&oG7l5XACTB}~VqZ{CDySZRpumSz=hh_kI|k4kfU#cC(9w)P!OM+-G=5fjUu z+s3)&9?le-rjc!1HkGs+@$lAdhnrlBTlhG>76VA@C_*vf*syCS7lsTp5y_pVtQ;#Z zQ9YO3lStov9@R+$u*#SOtkBS0a!rBxsaf>TN#OAN+$ zOW#tSx@u!gj?EQB#n2t)0t8|tLtG{&jS;@sQfg^}CPgD#maVK5V?-#D*xx%{HX|d( z!pza)KZzr>Pn(?RNDPdV;HQGWL-I-yO1vXioO1Sngr$kK4 zgo!hCm+4WwNx-u(xnqbJt*VQM%JU{IPt;6h64*UuM(OACGAa!_@~S1Mph2NJF)CEc z7q$nkj4Jz@CVOD>oCO8N!blayVLI!M^p4_jq?F_=C8A*@OJA9j;>r|M&aWw^oby9IS(!=xgMb_ZX@X>6`3O?Ei4zg`N0Qd!~9Q)WHWCh zd-qK+@?@c;B8^R6skAezRO;D7t&&>akrX7=9IsDS+LCGL);g!$hpWIJQHEopnVJ!! zQ{j!FxQkq@l*Ok%I?M-Zleb*17r7sUOM;?=*e}K&MgXpyQEJF`Y`CN@+EC_0Pa&ZC z2uMzbXh^*q;|s0vs>zY`;tsf5*XkI=7{&;vT066BjL#m`YGD3bzetqf4TRyz%G9bJ zCV4^;ERR2GZVhWQ;=#D4Bu+iREiHQlm+x2^ON?ViBdFyPnI}mxf$1u41S{OaorG(F z@?~5L!PA3F!k18+?pZ{+8~;=w9Kt*#=!LF5RGuOCLct(GShD{P5Q zkCsyix3f--7RS&T$|!|?9g^?|O=3~>WtBXNdvlt^>&84ZD#JfjdVIesDm zi(=fA2O2jW?Ncg{r*EnxJINt-HA_k;y29w)CJ|pxtw@T+kp7tWu=|7bYCjC3_ROTz^&l~C`y&*t8w_*y2Qom zXt@B{g(cPTy~Lg@9jMCfj!EE<5aH{p5Eu?;?mqR~FckrI0kg^^9NWji-IBPTW8+2dPLB8C>OL+5)I(AP)zX6* zduUi``s>i4NpEhi6UiX0!-G06P!2l3rNlFX*ciJNM?|?aZHp>|58a~=(f1%1daC59g zZQ(#(*wA%VHy*4s`DZgtZQX(uD8tI=IvB?^(m`P2)F@WoSz-LPhc~x=Z|*H|q2maY z?_xJXc<;8BgIGFGJiYk3?%oY=>-0<^bRFv72Srh64jng;DxsDP1fSI_c7^hwM6CLG z7Dkf*$7h+>U{VIu&@dqtnvhzSbnxbuX;M-y9l~*0-qzw4s4_lYRF)yybBvF7NqfX| zK0Z3c=Q}%TdZ>fz15if!{qvO!j2@%gE$D zzs^&G;6>O2@OydD6De8mB==vF%9LXV@M1nocao&Z;g~EYY}qZ7GAFPTrbr(RGt?7d zw06A^;|zm91!u8+3_ijZTM$yv@*7~8P9`oqtIO88ah0pn*ETM%SoVA?tWhc`nj5K| zJ7~mfu#mU*Zq;E0Emy1CxPH2KbNFd6lV=tu`r{v}r+9PzK=BpsZ<;;OistnRgqVka zC#viQ>>tCyg(#6*_w5+b#Irs^Gg6%kYY?pcgJoL0cV-mfoE+dK)ok?iy_6%TPqde| z@7&VU*ZZ;_gg)KNC^Hmj_N|p-V9_A9J zlAlR?oI+Fqa+6p(r#qwgrtiKm<8--$D^9n;Ekc?8E%;sT!>~Q5bk8WA-r!Ldh4v%p zm01nOjDJpy$Ad-a`&kiovz4yeNIpq&8ts{gUsppHX0wUH!BKw_QAwRiWmHE*au4hb zl~TRp>&T_E)7IJqxwi=jsev$BDRP+hot*{M78cx?)pO=hiKBp1=>g+{N7`a(5o{iH zi)n_QPEsQ3`Njx)*PU&+gjGeOJDK8ylO=8KHR?fc7|BOSHPE znwnB4KBW>n?*C#9y^Zj2Rd1VfYg5Wa^!F~En9nRu%*XFvD}lJa$_>cMkujoxjPcs* z;_gG$5TRA!5cHxOlI01AA|#$`lUE9RlUb`=Y78882%$yQ6hSDJ{^>ijxPG)lO}?C- z(gAAeU~T?+;#kJ(b!7&+V?l~y*2bA0sHkX>{~4v*AAw_Lld7MLUaGBO#3amFzT!~h z7;S?a=A~;%>L+IIPc&kON}`dwWY~slSc`B!X3rdz80a&^xP* z8(?R0$0i);OhHQ`s^ESwQrnNgfhi7v;wkY!rQk|>WUCjGn~pZX=9o@6=RB5vOwL-w zQts@u=7XVDieOF;c?i{VsYCRMboAH2}wq6-IEEJxtN$nrae|me_W= z>kBRB2p!V3%5tF?mfq7IZo-ZxB32S1NrZ?cI9Y;5Zg{Sz;F*9T6A2dSi&kMnY||fQ z9b2vjzXix|Ee*fpxZ^$G3|4n#cH)w zQt?JrZZZ`X%eL1|xfbh0Ma+x}jk5Jx`tdxsIQ<^K^NNsTgNA zg169XRYEY=SOf?8@G#R$n(Lc3-CaKI z*pj)+d5hScH>zOE`<@P3_=bybtj4XnPkrmO0wJywVh3692Oiswk1rVp(LzPl@t~d= z7{b)rWPplx{CekZ40fzs6K~@Wo+3kP%U8Iq&B@LMx?Ue z(Z>`^h-TSH!CsXWrtUmhM3_#A&KI+Q?Bt!+8BC68Q>smnm`7<(shnF39B}%ulvQq~ zY`q+$AQ=&l(L-jGnxMc?Z4tCwF>YqpwT6-aadJMZAKU71*6r7#n9cMrtRc(y#rUyS zFDwimsrsc^O8$J%_s@@%GH-Z)5g|DqXzPE+4NG5!IOJI$z42rxWbalu{Z;R_!xw>)Bn}=&nn& zK3z8t8_ws02ln9E;6@PiD%o#^5JAG~K$$1Ky}i9OMi-ib0)c7U#$3}V%!_Q)(-OPS zOA9_<1;Ft)#R+*mr(Fbr=#{<^1fdf2_+=fkQ7c%3&&I z9Bj7sXZatI8OI9be`>{q7Ng!2`-T@Jer9TG{4sInknjnERvIT1A)}pwS7VZ1iJ-kS z7mIgZ3hErx<2093nR3E9FU+ObyN`w^-JV;U+byn)@K(D~6Y1z{Sf-pak2j(K1V&AM zW^VRgV_d%?-Q^{V=?l`{%jGv$^~dqOO|^5bv6yY8YyoB2q_X(zOo>l+mv$2MIxvhL zBOA!`nL>71sND|qQ}CoPX4}QTY%O2oWo2P^(*2UospzeOI%K^UZOVCrjYf9gvMsD_V5rGL@&oS+|8%7R4457iWYV%P_{$Ja)i_TA9kngV_y0>x3+eA5BKWr@TUJP(ZaW$KIXSGe5OBC1L^mJ@n=D_ z%xcKwSN)9wOxr2UC__q8i>CKp=^11nVy?dRJ+=YWD#U^;AK^cu>AkofclXxLsGV0E zuU$~PXvHh;Id)G+?S(=Y_tnaMwM(|1>0Na`xzHk?-$PB&j!ipzD-??KY@;4;pr?0R zzt+2LwzjsfcE!*0)K#@hYM0g4)L!%pwX6C#7gujRp?1yIPuhC#*2N9hRXN0_!qM|3 zM{ZM#;Sobz;lvI}_BF;4ueHIaX?C3yhTQcOTuMa92^So)W8BTv;35h^GRaTLmII!4tO4}B01yJ^p8;NG7HEcMv9r^}k+lZ$|Ax{!>G+K>DM38RQ&=1w5qWPK)F0TnT zWVqc)E(gDSh)~bYo-N@T59k7ANe_=ZxO~1HT;@9%n91D7WF{=6%>EljsZN`seXg!) z=#O15yM}Dgy<|Zi30GwhpqQFet0Aq#&RE3W)iY}sQNT5~RJrQTmy~th5DJwyhSixC zeJq=gKH8uU7}nj?RzF@x9Ox^yI5Hzx-$(_%LF@thd8o<_Q)x`0(u*+#14$d7QIcr{ zrUa?itIYklgqo!eJC@Ayemlan*|G@a4o7p&jDeJhkPc=NW6>j&4Y zT65K)(%`xe?%8`!t$cj_pi%zFK!*?ef0bs=g*SdAW9R?u;*E50{zHsr>dNucwDUMSQlbfwUb2yGR*S!hUTTx9ap|=XXOXwk?j|zQ4=yO7k z3q2`x%E_R!g)S0m7g{6q5}_M}UMBQ%p_L zp|1*kPiPs%^JAwAoiB8;&`P1Jh1LsIgmw#!2T_<$C(2YX7gl-qwFLX%g6+*{_ep%=@g?>-y zokD*u^fyBPEc98S$ArEkbTX~<#?BJDQ0OwD)k4<^Z4tUj=r*CfLI;KJ68agTyM3Rp?zp4+(u#=o3Pp6M9_eNug6t2c0c+kx;wP8lmfiwg~MMx=m=G z(3H?Ip}U1%FLa;KgFrauA??^_%TcO~ukatWWo33aBZEkAzhG<^^U$=JN-_|-+lOLa|k5ScnN==S?P z$In4P;kO!`nH(guxO#-YOZD8^2Alw#2%H3*44eWy12`2}4x9#@4m=Y$12_|S7H}4D zHgFDbE^r?3Y~Xz0Ilyy)=K&W07XlXn&j(%rybve>7XxMB65vwcMZjf1JJ12F06Kvm z0#*WDKsRtXunJfWtO3>nR{&Q6R{>W8*8ndD)&bW7*8wj9ei*nO_z|E7SPyIfHUgV~ z&A=Am2A~(X5zv3zfC|tDYzKA#Hvv0=eqaFD1>6kW0_+A}3cL)s6}Sy}Iq;*vAaFY{ z1PlWsz#gCq>;?7#HDDAN1NH;szyV+am;??2KL$(z)4&Wc3mgIt14n?Pz#YJyz<&dd z0Y47>1n`r5f%gIL2mTEBbKoK1 zFMz)U{tEbO-~+%1fe!&620jA(4e(LmW5C}6e+T?M@NwWDfPV!33HaZ@KLeit{ss6X z@G0P5flmXU0sas0Fz|1{XMxWF{|@|L;1S^Sz!!io0$&0i1-=YC20RXY1^6oPHQ?*O zH-K*f-vXWhz72c_coO(7@IB!Bz*AeFqJ@&a+U)CuHhKe8PPDI++A4gVY+t9eRrq>_ zeVy7?;cK~loz_NmL*;b)dS)Bx!<94a>&&(aU(d3yv)U?roo!#|w2`$@IoH0 Date: Fri, 6 Mar 2026 12:48:47 +0700 Subject: [PATCH 09/11] Refactor code structure for improved readability and maintainability --- Core/Index/Graph.py | 6 + Core/configs/falkordb_config.py | 1 + Core/configs/llm_config.py | 6 +- Core/configs/rerank_config.py | 10 +- Core/configs/vlm_config.py | 6 +- Core/provider/rerank.py | 136 +- api/dependencies.py | 1 + api/main.py | 12 +- api/routers/documents.py | 9 +- api/services/chat.py | 5 +- api/services/entity_editor.py | 6 +- api/services/entity_resolution.py | 4 +- api/services/indexing.py | 5 +- config/gbc.yaml | 27 +- docs/research-behavior-detection.md | 2309 +++++++++++++++++++++++++++ 15 files changed, 2505 insertions(+), 38 deletions(-) create mode 100644 docs/research-behavior-detection.md diff --git a/Core/Index/Graph.py b/Core/Index/Graph.py index dadd216..4fa0ee9 100644 --- a/Core/Index/Graph.py +++ b/Core/Index/Graph.py @@ -315,6 +315,8 @@ def _get_fdb_graph(self): from falkordb import FalkorDB cfg = self.falkordb_cfg conn_kwargs = {"host": cfg.host, "port": cfg.port} + if cfg.username: + conn_kwargs["username"] = cfg.username if cfg.password: conn_kwargs["password"] = cfg.password client = FalkorDB(**conn_kwargs) @@ -559,6 +561,8 @@ def save_to_global_graph(self, falkordb_cfg, tenant_id: str) -> None: from falkordb import FalkorDB cfg = falkordb_cfg conn_kwargs = {"host": cfg.host, "port": cfg.port} + if cfg.username: + conn_kwargs["username"] = cfg.username if cfg.password: conn_kwargs["password"] = cfg.password client = FalkorDB(**conn_kwargs) @@ -595,6 +599,8 @@ def get_global_subgraph( from falkordb import FalkorDB cfg = falkordb_cfg conn_kwargs = {"host": cfg.host, "port": cfg.port} + if cfg.username: + conn_kwargs["username"] = cfg.username if cfg.password: conn_kwargs["password"] = cfg.password client = FalkorDB(**conn_kwargs) diff --git a/Core/configs/falkordb_config.py b/Core/configs/falkordb_config.py index 1a047ff..306fff9 100644 --- a/Core/configs/falkordb_config.py +++ b/Core/configs/falkordb_config.py @@ -7,6 +7,7 @@ class FalkorDBConfig: host: str = "localhost" port: int = 6379 + username: str = "" password: str = "" graph_prefix: str = "bookrag" diff --git a/Core/configs/llm_config.py b/Core/configs/llm_config.py index 614ab62..7aed0cb 100644 --- a/Core/configs/llm_config.py +++ b/Core/configs/llm_config.py @@ -21,11 +21,11 @@ def __post_init__(self): raise ValueError(f"Unsupported backend: {self.backend}") # Allow api_key to be resolved from environment variable if not self.api_key or self.api_key in ("env", "ENV"): - env_key = os.environ.get("DASHSCOPE_API_KEY", "") + env_key = os.environ.get("CHAT_API_KEY", "") or os.environ.get("DASHSCOPE_API_KEY", "") if env_key: self.api_key = env_key else: raise ValueError( - "LLM api_key is empty/env but DASHSCOPE_API_KEY " - "environment variable is not set." + "LLM api_key is empty/env but neither CHAT_API_KEY nor " + "DASHSCOPE_API_KEY environment variable is set." ) diff --git a/Core/configs/rerank_config.py b/Core/configs/rerank_config.py index 0d24987..5b2a700 100644 --- a/Core/configs/rerank_config.py +++ b/Core/configs/rerank_config.py @@ -16,13 +16,13 @@ class RerankerConfig: api_key: str = "" def __post_init__(self): - if self.backend not in ["local", "vllm", "jina"]: + if self.backend not in ["local", "vllm", "jina", "openai"]: raise ValueError(f"Unsupported reranker backend: {self.backend}") - # Resolve 'env' placeholder → read from JINA_API_KEY environment variable + # Resolve 'env' placeholder → read from RERANKER_API_KEY or JINA_API_KEY environment variable if self.api_key == "env": - self.api_key = os.environ.get("JINA_API_KEY", "") + self.api_key = os.environ.get("RERANKER_API_KEY", "") or os.environ.get("JINA_API_KEY", "") if not self.api_key: raise ValueError( - "RerankerConfig.api_key is 'env' but JINA_API_KEY " - "environment variable is not set." + "RerankerConfig.api_key is 'env' but neither RERANKER_API_KEY " + "nor JINA_API_KEY environment variable is set." ) diff --git a/Core/configs/vlm_config.py b/Core/configs/vlm_config.py index da8fcee..e76802c 100644 --- a/Core/configs/vlm_config.py +++ b/Core/configs/vlm_config.py @@ -17,11 +17,11 @@ class VLMConfig: def __post_init__(self): # Allow api_key to be resolved from environment variable if not self.api_key or self.api_key in ("env", "ENV"): - env_key = os.environ.get("DASHSCOPE_API_KEY", "") + env_key = os.environ.get("VL_API_KEY", "") or os.environ.get("DASHSCOPE_API_KEY", "") if env_key: self.api_key = env_key else: raise ValueError( - "VLM api_key is empty/env but DASHSCOPE_API_KEY " - "environment variable is not set." + "VLM api_key is empty/env but neither VL_API_KEY nor " + "DASHSCOPE_API_KEY environment variable is not set." ) diff --git a/Core/provider/rerank.py b/Core/provider/rerank.py index 295c302..a0a8aa8 100644 --- a/Core/provider/rerank.py +++ b/Core/provider/rerank.py @@ -114,9 +114,24 @@ def __init__( }) log.info(f"Using Jina reranker backend. Model: {self.model_name}, Endpoint: {self.rerank_url}") + # ========================================================== + # OpenAI-compatible chat completions backend (e.g., Starcore) + # Uses logprobs on yes/no tokens for scoring. + # ========================================================== + elif self.backend == "openai": + if not api_base: + raise ValueError("api_base must be provided for the 'openai' backend.") + self.chat_url = f"{api_base.rstrip('/')}/chat/completions" + self.session = requests.Session() + self.session.headers.update({ + "Content-Type": "application/json", + "Authorization": f"Bearer {self.api_key}" if self.api_key else "", + }) + log.info(f"Using OpenAI-compatible reranker backend. Model: {self.model_name}, Endpoint: {self.chat_url}") + else: raise ValueError( - f"Unsupported backend: {self.backend}. Choose 'local', 'vllm', or 'jina'." + f"Unsupported backend: {self.backend}. Choose 'local', 'vllm', 'jina', or 'openai'." ) self._define_prompt_template() @@ -149,7 +164,7 @@ def close(self) -> None: gc.collect() log.info("Local reranker resources released.") - elif self.backend in ("vllm", "jina"): + elif self.backend in ("vllm", "jina", "openai"): if hasattr(self, "session"): self.session.close() log.info(f"{self.backend} backend session closed.") @@ -179,6 +194,61 @@ def _define_prompt_template(self): self.suffix, add_special_tokens=False ) + def _extract_score_from_logprobs(self, data: dict) -> float: + """ + Extract relevance score from OpenAI chat completion logprobs. + Looks for 'yes'/'no' token probabilities and returns P(yes). + Falls back to 0.5 if logprobs are unavailable. + """ + try: + choices = data.get("choices", []) + if not choices: + return 0.5 + + logprobs_data = choices[0].get("logprobs") + if not logprobs_data: + # No logprobs; try to parse from content + content = choices[0].get("message", {}).get("content", "").lower().strip() + if "yes" in content: + return 0.9 + elif "no" in content: + return 0.1 + return 0.5 + + content_logprobs = logprobs_data.get("content", []) + if not content_logprobs: + return 0.5 + + # Search through top_logprobs for yes/no tokens + top_logprobs = content_logprobs[0].get("top_logprobs", []) + + yes_logprob = None + no_logprob = None + for entry in top_logprobs: + token = entry.get("token", "").lower().strip() + if token == "yes": + yes_logprob = entry["logprob"] + elif token == "no": + no_logprob = entry["logprob"] + + if yes_logprob is not None and no_logprob is not None: + # Compute P(yes) using softmax over yes/no logprobs + import math as _math + max_lp = max(yes_logprob, no_logprob) + yes_exp = _math.exp(yes_logprob - max_lp) + no_exp = _math.exp(no_logprob - max_lp) + return yes_exp / (yes_exp + no_exp) + elif yes_logprob is not None: + return _math.exp(yes_logprob) if yes_logprob > -5 else 0.5 + elif no_logprob is not None: + return 1.0 - (_math.exp(no_logprob) if no_logprob > -5 else 0.5) + + return 0.5 + + except Exception as e: + log.warning(f"Failed to extract score from logprobs: {e}") + return 0.5 + def _format_instruction( self, query: str, doc: str, instruction: Optional[str] ) -> str: @@ -409,6 +479,68 @@ def rerank( log.error(f"Error calling Jina reranker API: {e}") raise e + elif self.backend == "openai": + # OpenAI-compatible chat completions backend. + # Uses logprobs on yes/no tokens to compute relevance scores. + if instruction is None: + instruction = "Given a web search query, retrieve relevant passages that answer the query" + + all_scores = [] + num_docs = len(documents) + num_batches = math.ceil(num_docs / batch_size) + + try: + for i in tqdm( + range(0, num_docs, batch_size), + desc="Reranking Batches (OpenAI)", + total=num_batches, + disable=num_docs < batch_size, + ): + batch_docs = documents[i : i + batch_size] + batch_scores = [] + + for doc in batch_docs: + # Format as Qwen3-Reranker expects + prompt = ( + f": {instruction}\n" + f": {query}\n" + f": {doc}" + ) + system_msg = ( + 'Judge whether the Document meets the requirements based on ' + 'the Query and the Instruct provided. Note that the answer ' + 'can only be "yes" or "no".' + ) + + payload = { + "model": self.model_name, + "messages": [ + {"role": "system", "content": system_msg}, + {"role": "user", "content": prompt}, + ], + "max_tokens": 1, + "logprobs": True, + "top_logprobs": 20, + "temperature": 0.0, + "chat_template_kwargs": {"enable_thinking": False}, + } + + response = self.session.post(self.chat_url, json=payload) + response.raise_for_status() + data = response.json() + + # Extract score from logprobs + score = self._extract_score_from_logprobs(data) + batch_scores.append(score) + + all_scores.extend(batch_scores) + + return all_scores + + except requests.exceptions.RequestException as e: + log.error(f"Error calling OpenAI reranker API: {e}") + raise e + elif self.backend == "local": # 1. 创建所有的查询-文档对 pairs = [ diff --git a/api/dependencies.py b/api/dependencies.py index 5b338a4..a71feaf 100644 --- a/api/dependencies.py +++ b/api/dependencies.py @@ -33,6 +33,7 @@ FALKORDB_HOST = os.getenv("BOOKRAG_FALKORDB_HOST", "localhost") FALKORDB_PORT = int(os.getenv("BOOKRAG_FALKORDB_PORT", "6379")) +FALKORDB_USERNAME = os.getenv("BOOKRAG_FALKORDB_USERNAME", "") FALKORDB_PASSWORD = os.getenv("BOOKRAG_FALKORDB_PASSWORD", "") UPLOAD_DIR = os.getenv("BOOKRAG_UPLOAD_DIR", "./uploads") diff --git a/api/main.py b/api/main.py index 7ccc55f..296df1a 100644 --- a/api/main.py +++ b/api/main.py @@ -189,12 +189,14 @@ async def health(): fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") if fdb_host: try: - from api.dependencies import FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD + from api.dependencies import FALKORDB_HOST, FALKORDB_PORT, FALKORDB_USERNAME, FALKORDB_PASSWORD import falkordb - fdb = falkordb.FalkorDB( - host=FALKORDB_HOST, port=FALKORDB_PORT, - password=FALKORDB_PASSWORD or None, - ) + conn_kwargs = {"host": FALKORDB_HOST, "port": FALKORDB_PORT} + if FALKORDB_USERNAME: + conn_kwargs["username"] = FALKORDB_USERNAME + if FALKORDB_PASSWORD: + conn_kwargs["password"] = FALKORDB_PASSWORD + fdb = falkordb.FalkorDB(**conn_kwargs) fdb.connection.ping() checks["falkordb"] = "ok" except Exception as exc: diff --git a/api/routers/documents.py b/api/routers/documents.py index 679b50b..e3e5981 100644 --- a/api/routers/documents.py +++ b/api/routers/documents.py @@ -235,10 +235,15 @@ async def delete_document(doc_id: str, current_user: dict = Depends(get_current_ # Clean up FalkorDB graph (best-effort) try: - from api.dependencies import FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD + from api.dependencies import FALKORDB_HOST, FALKORDB_PORT, FALKORDB_USERNAME, FALKORDB_PASSWORD if os.getenv("BOOKRAG_FALKORDB_HOST", ""): import falkordb - fdb = falkordb.FalkorDB(host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD or None) + conn_kwargs = {"host": FALKORDB_HOST, "port": FALKORDB_PORT} + if FALKORDB_USERNAME: + conn_kwargs["username"] = FALKORDB_USERNAME + if FALKORDB_PASSWORD: + conn_kwargs["password"] = FALKORDB_PASSWORD + fdb = falkordb.FalkorDB(**conn_kwargs) graph_name = f"bookrag:{tenant_id}:doc:{doc_id}" try: g = fdb.select_graph(graph_name) diff --git a/api/services/chat.py b/api/services/chat.py index d679631..9f85dce 100644 --- a/api/services/chat.py +++ b/api/services/chat.py @@ -11,7 +11,7 @@ from api.db import mongodb as db from api.dependencies import ( MONGO_URI, MONGO_DB_PREFIX, INDEX_SAVE_DIR, - FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD, + FALKORDB_HOST, FALKORDB_PORT, FALKORDB_USERNAME, FALKORDB_PASSWORD, THREAD_POOL, ) @@ -109,7 +109,8 @@ def _get_gbc_index(tenant_id: str, doc_id: str, config_path: str): fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") if fdb_host: cfg.falkordb = FalkorDBConfig( - host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD + host=FALKORDB_HOST, port=FALKORDB_PORT, + username=FALKORDB_USERNAME, password=FALKORDB_PASSWORD, ) gbc_index = GBC.load_gbc_index(cfg) diff --git a/api/services/entity_editor.py b/api/services/entity_editor.py index 28b8221..698460e 100644 --- a/api/services/entity_editor.py +++ b/api/services/entity_editor.py @@ -18,7 +18,7 @@ from typing import Dict, List, Optional from api.dependencies import ( - FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD, + FALKORDB_HOST, FALKORDB_PORT, FALKORDB_USERNAME, FALKORDB_PASSWORD, INDEX_SAVE_DIR, MONGO_URI, MONGO_DB_PREFIX, THREAD_POOL, ) @@ -71,6 +71,7 @@ def _load_graph_sync(tenant_id: str, doc_id: str, config_path: str): falkordb_cfg = FalkorDBConfig( host=FALKORDB_HOST, port=FALKORDB_PORT, + username=FALKORDB_USERNAME, password=FALKORDB_PASSWORD, ) graph.falkordb_cfg = falkordb_cfg @@ -97,7 +98,8 @@ def _rebuild_vdb_sync(tenant_id: str, doc_id: str, config_path: str) -> None: fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") if fdb_host: cfg.falkordb = FalkorDBConfig( - host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD + host=FALKORDB_HOST, port=FALKORDB_PORT, + username=FALKORDB_USERNAME, password=FALKORDB_PASSWORD, ) gbc = GBC.load_gbc_index(cfg) diff --git a/api/services/entity_resolution.py b/api/services/entity_resolution.py index b78a2e2..b94bd84 100644 --- a/api/services/entity_resolution.py +++ b/api/services/entity_resolution.py @@ -41,7 +41,7 @@ def _resolve_entities_sync( from Core.Index.GBCIndex import GBC from Core.provider.vdb import VectorStore from api.dependencies import ( - FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD, INDEX_SAVE_DIR, + FALKORDB_HOST, FALKORDB_PORT, FALKORDB_USERNAME, FALKORDB_PASSWORD, INDEX_SAVE_DIR, ) cfg = load_system_config(config_path) @@ -52,7 +52,7 @@ def _resolve_entities_sync( fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") falkordb_cfg = None if fdb_host: - falkordb_cfg = FalkorDBConfig(host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD) + falkordb_cfg = FalkorDBConfig(host=FALKORDB_HOST, port=FALKORDB_PORT, username=FALKORDB_USERNAME, password=FALKORDB_PASSWORD) cfg.falkordb = falkordb_cfg gbc = GBC.load_gbc_index(cfg) diff --git a/api/services/indexing.py b/api/services/indexing.py index 7f3105f..7a052f2 100644 --- a/api/services/indexing.py +++ b/api/services/indexing.py @@ -34,9 +34,10 @@ def _build_index_sync( # FalkorDB will be used if BOOKRAG_FALKORDB_HOST is set fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") if fdb_host: - from api.dependencies import FALKORDB_HOST, FALKORDB_PORT, FALKORDB_PASSWORD + from api.dependencies import FALKORDB_HOST, FALKORDB_PORT, FALKORDB_USERNAME, FALKORDB_PASSWORD cfg.falkordb = FalkorDBConfig( - host=FALKORDB_HOST, port=FALKORDB_PORT, password=FALKORDB_PASSWORD + host=FALKORDB_HOST, port=FALKORDB_PORT, + username=FALKORDB_USERNAME, password=FALKORDB_PASSWORD, ) construct_GBC_index(cfg) diff --git a/config/gbc.yaml b/config/gbc.yaml index 439a422..aeb4b80 100644 --- a/config/gbc.yaml +++ b/config/gbc.yaml @@ -5,9 +5,9 @@ save_path: TODO parser: docling llm: - model_name: qwen3.5-35b-a3b + model_name: qwen3.5 api_key: env - api_base: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 + api_base: https://starcore-llm.starcore.co.id/v1/gpt backend: openai max_tokens: 8000 temperature: 0.1 @@ -17,9 +17,9 @@ llm: vlm: - model_name: qwen3.5-35b-a3b + model_name: /home/user/qwen-model/Qwen2-VL-2B-Instruct api_key: env - api_base: https://dashscope-intl.aliyuncs.com/compatible-mode/v1 + api_base: https://starcore-llm.starcore.co.id/v1/vl temperature: 0.1 max_tokens: 6000 backend: gpt @@ -52,11 +52,11 @@ graph: device: "cpu" api_base: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1" reranker_config: - model_name: jina-reranker-v3 + model_name: /home/user/qwen-model/Qwen3-Reranker-4B max_length: 4096 device: "cpu" - backend: jina - api_base: "https://api.jina.ai/v1/rerank" + backend: openai + api_base: "https://starcore-llm.starcore.co.id/v1/reranker/v1" api_key: env @@ -68,6 +68,13 @@ vdb: model_name: Alibaba-NLP/gme-Qwen2-VL-2B-Instruct device: "cuda:1" +falkordb: + host: "r-6jissuruar.instance-yc6en3ndn.hc-dx5io0svq.asia-south1.gcp.f2e0a955bb84.cloud" + port: 60480 + username: "falkordb" + password: "3YJ36xM3piI3" + graph_prefix: "bookrag" + rag_force_reprocess: True rag: @@ -78,11 +85,11 @@ rag: select_depth: 2 max_retry: 2 reranker_config: - model_name: jina-reranker-v3 + model_name: /home/user/qwen-model/Qwen3-Reranker-4B max_length: 4096 device: "cpu" - backend: jina - api_base: "https://api.jina.ai/v1/rerank" + backend: openai + api_base: "https://starcore-llm.starcore.co.id/v1/reranker/v1" api_key: env mm_reranker_config: model_name: Alibaba-NLP/gme-Qwen2-VL-2B-Instruct diff --git a/docs/research-behavior-detection.md b/docs/research-behavior-detection.md new file mode 100644 index 0000000..8dad528 --- /dev/null +++ b/docs/research-behavior-detection.md @@ -0,0 +1,2309 @@ +# Video-Based Behavior Detection System — Research Documentation + +## Research Overview + +**Project:** Real-Time Surveillance Behavior Analysis System +**Target Behaviors:** Fighting (*berkelahi*), Stealing (*mencuri*), Mass Brawls (*tawuran*) +**Date:** March 2026 +**Hardware Target:** NVIDIA RTX 3060 (12 GB VRAM) + +--- + +## 1. Problem Statement + +Traditional CCTV surveillance relies on human operators monitoring multiple feeds — an approach that is error-prone, expensive, and unable to scale. This research evaluates state-of-the-art real-time object detection and pose estimation models for automated detection of three critical behaviors: + +| Behavior | Indonesian Term | Detection Challenge | Typical Duration | +|----------|----------------|---------------------|------------------| +| Fighting | *Berkelahi* | Aggressive body movements between 2+ persons | 5–30 seconds | +| Stealing | *Mencuri* | Subtle hand–object interactions, concealment | 10–60 seconds | +| Mass Brawls | *Tawuran* | Dense crowds, many overlapping persons, weapons | 1–10 minutes | + +### Requirements + +- **Real-time processing:** ≥5 FPS per camera stream (acceptable for surveillance) +- **Deterministic latency:** Consistent inference time regardless of crowd density +- **Single-GPU deployment:** All models must fit within 12 GB VRAM (RTX 3060) +- **Multi-camera support:** Target 1–2 simultaneous camera streams + +--- + +## 2. Models Evaluated + +### 2.1 YOLOv26 (Ultralytics — September 2025) + +YOLOv26 is a CNN-based, NMS-free, end-to-end real-time object detector developed by Ultralytics. It represents the latest evolution of the YOLO (You Only Look Once) family. + +#### Key Architectural Innovations + +| Innovation | Description | Impact | +|-----------|-------------|--------| +| **NMS-Free End-to-End** | Removes Non-Maximum Suppression post-processing entirely | Constant latency regardless of object count — critical for *tawuran* with dozens of people | +| **DFL Removal** | Eliminates Distribution Focal Loss (Softmax-heavy coordinate prediction) | 43% faster CPU inference; cleaner INT8/FP16 quantization for edge deployment | +| **MuSGD Optimizer** | Hybrid SGD + Muon optimizer (adapted from Moonshot AI's Kimi K2 LLM) | Faster training convergence, fewer epochs for fine-tuning | +| **STAL** | Small-Target-Aware Label Assignment with dynamic IoU thresholds | Better detection of small/distant persons in wide-angle CCTV | +| **RLE Pose** | Residual Log-Likelihood Estimation for keypoint localization | High-precision pose estimation under occlusion | + +#### Model Variants + +| Variant | Purpose | Key Capability | +|---------|---------|----------------| +| `yolo26{n,s,m,l,x}.pt` | Standard object detection | 80 COCO classes, NMS-free | +| `yolo26{s,m,l,x}-pose.pt` | Pose estimation | 17 keypoints per person (COCO format) | +| `yoloe-26{s,m,l,x}.pt` | Open-vocabulary detection | Zero-shot detection via text prompts | +| `yolo26{n,s,m,l,x}-seg.pt` | Instance segmentation | Pixel-level masks | + +#### Usage + +```python +from ultralytics import YOLO + +# Standard detection +model = YOLO("yolo26s.pt") +results = model("frame.jpg") + +# Pose estimation (for fighting/tawuran) +model = YOLO("yolo26s-pose.pt") +results = model("frame.jpg") + +# Open-vocabulary (for stealing — zero-shot) +model = YOLO("yoloe-26s.pt") +model.set_classes(["person concealing object", "hand reaching into bag"]) +results = model("frame.jpg") +``` + +### 2.2 RF-DETR (Roboflow — March 2025, ICLR 2026) + +RF-DETR is a real-time transformer-based object detector developed by Roboflow. It is the first real-time model to achieve 60+ mAP on COCO and is built on a DINOv2 Vision Transformer backbone. + +#### Key Architectural Features + +| Feature | Description | Impact | +|---------|-------------|--------| +| **DINOv2 ViT Backbone** | Self-supervised Vision Transformer with global self-attention | Superior feature extraction; better understanding of spatial relationships | +| **Deformable Attention Decoder** | Attends to relevant image regions adaptively | Better handling of occluded and small objects | +| **NMS-Free** | End-to-end detection without post-processing | Deterministic latency (same benefit as YOLOv26) | +| **Neural Architecture Search** | Automated model design optimization | Optimized accuracy–latency trade-offs at every model size | +| **Fine-tuning Focused** | Designed for transfer learning on custom datasets | Proven generalization on RF100-VL (100 diverse domains) | + +#### Model Variants + +| Size | Class | COCO AP₅₀:₉₅ | Latency (ms) | Params (M) | Resolution | License | +|------|-------|--------------|--------------|------------|------------|---------| +| Nano | `RFDETRNano` | 48.4 | 2.3 | 30.5 | 384×384 | Apache 2.0 | +| Small | `RFDETRSmall` | 53.0 | 3.5 | 32.1 | 512×512 | Apache 2.0 | +| Medium | `RFDETRMedium` | 54.7 | 4.4 | 33.7 | 576×576 | Apache 2.0 | +| Large | `RFDETRLarge` | 56.5 | 6.8 | 33.9 | 704×704 | Apache 2.0 | +| XLarge | `RFDETRXLarge` | 58.6 | 11.5 | 126.4 | 700×700 | PML 1.0 | +| 2XLarge | `RFDETR2XLarge` | 60.1 | 17.2 | 126.9 | 880×880 | PML 1.0 | + +#### Usage + +```python +from rfdetr import RFDETRMedium +from rfdetr.util.coco_classes import COCO_CLASSES + +model = RFDETRMedium() +detections = model.predict(image, threshold=0.5) +``` + +--- + +## 3. Performance Benchmarks + +All benchmarks measured on **NVIDIA T4 GPU, TensorRT FP16, batch size 1**. Latency is "Total Latency" including all post-processing. + +### 3.1 Object Detection — COCO val2017 + +| Model | COCO AP₅₀ | COCO AP₅₀:₉₅ | Latency (ms) | Params (M) | Resolution | +|-------|-----------|--------------|--------------|------------|------------| +| RF-DETR-N | **67.6** | **48.4** | 2.3 | 30.5 | 384×384 | +| RF-DETR-S | **72.1** | **53.0** | 3.5 | 32.1 | 512×512 | +| RF-DETR-M | **73.6** | **54.7** | 4.4 | 33.7 | 576×576 | +| RF-DETR-L | **75.1** | **56.5** | 6.8 | 33.9 | 704×704 | +| RF-DETR-XL | **77.4** | **58.6** | 11.5 | 126.4 | 700×700 | +| RF-DETR-2XL | **78.5** | **60.1** | 17.2 | 126.9 | 880×880 | +| YOLO26-N | 55.8 | 40.3 | **1.7** | **2.6** | 640×640 | +| YOLO26-S | 64.3 | 47.7 | **2.6** | **9.4** | 640×640 | +| YOLO26-M | 69.7 | 52.5 | **4.4** | **20.1** | 640×640 | +| YOLO26-L | 71.1 | 54.1 | **5.7** | **25.3** | 640×640 | +| YOLO26-X | 74.0 | 56.9 | **9.6** | **56.9** | 640×640 | +| YOLO11-N | 52.0 | 37.4 | 2.5 | 2.6 | 640×640 | +| YOLO11-S | 59.7 | 44.4 | 3.2 | 9.4 | 640×640 | +| YOLO11-M | 64.1 | 48.6 | 5.1 | 20.1 | 640×640 | +| YOLO11-L | 64.9 | 49.9 | 6.5 | 25.3 | 640×640 | +| YOLO11-X | 66.1 | 50.9 | 10.5 | 56.9 | 640×640 | +| D-FINE-S | 67.6 | 50.6 | 3.5 | 10.2 | 640×640 | +| D-FINE-M | 72.6 | 55.0 | 5.4 | 19.2 | 640×640 | +| D-FINE-L | 74.9 | 57.2 | 7.5 | 31.0 | 640×640 | +| LW-DETR-S | 66.8 | 48.0 | 2.6 | 14.6 | 640×640 | +| LW-DETR-M | 72.0 | 52.6 | 4.4 | 28.2 | 640×640 | +| LW-DETR-L | 74.6 | 56.1 | 6.9 | 46.8 | 640×640 | + +### 3.2 Real-World Domain Adaptability — RF100-VL + +| Model | RF100-VL AP₅₀ | RF100-VL AP₅₀:₉₅ | +|-------|---------------|-------------------| +| RF-DETR-N | **85.0** | **57.7** | +| RF-DETR-S | **86.7** | **60.2** | +| RF-DETR-M | **87.4** | **61.2** | +| RF-DETR-L | **88.2** | **62.2** | +| YOLO26-S | 82.7 | 57.0 | +| YOLO26-M | 84.4 | 58.7 | +| YOLO26-L | 85.0 | 59.3 | +| YOLO26-X | 85.6 | 60.0 | +| YOLO11-N | 81.4 | 55.3 | +| YOLO11-S | 82.3 | 56.2 | +| YOLO11-M | 82.5 | 56.5 | + +### 3.3 Instance Segmentation — COCO val2017 + +| Model | COCO AP₅₀ | COCO AP₅₀:₉₅ | Latency (ms) | Params (M) | +|-------|-----------|--------------|--------------|------------| +| RF-DETR-Seg-N | **63.0** | **40.3** | 3.4 | 33.6 | +| RF-DETR-Seg-S | **66.2** | **43.1** | 4.4 | 33.7 | +| RF-DETR-Seg-M | **68.4** | **45.3** | 5.9 | 35.7 | +| YOLO26-N-Seg | 54.3 | 34.7 | **2.31** | **2.7** | +| YOLO26-S-Seg | 62.4 | 40.2 | **3.47** | **10.4** | +| YOLO26-M-Seg | 67.8 | 44.0 | **6.32** | **23.6** | +| YOLO11-N-Seg | 47.8 | 30.0 | 3.6 | 2.9 | +| YOLO11-S-Seg | 55.4 | 35.0 | 4.6 | 10.1 | +| YOLO11-M-Seg | 60.0 | 38.5 | 6.9 | 22.4 | + +### 3.4 Analysis Summary + +| Metric | Winner | Margin | +|--------|--------|--------| +| **COCO Accuracy (all sizes)** | RF-DETR | +2.2 to +8.1 mAP₅₀:₉₅ | +| **RF100-VL Domain Generalization** | RF-DETR | +1.2 to +3.2 mAP₅₀:₉₅ | +| **Inference Speed (all sizes)** | YOLOv26 | 16–26% faster | +| **Model Size / Memory** | YOLOv26 | 1.7x–12x fewer parameters | +| **Segmentation Accuracy** | RF-DETR | +0.1 to +5.6 mAP₅₀:₉₅ | +| **YOLOv26 vs YOLO11 (same arch)** | YOLOv26 | +2.9 to +6.0 mAP₅₀:₉₅, 26–43% faster | + +--- + +## 4. Behavior Detection Strategy + +### 4.1 Fighting (*Berkelahi*) — Pose-Based Detection ✅ Easiest + +**Primary Model:** YOLOv26-Pose + +Fighting detection relies on **skeletal keypoint analysis** across consecutive frames. Aggressive actions produce distinctive pose signatures. + +**Detection Signals:** +- Rapid limb acceleration (punching, kicking) +- Close proximity between two or more persons (< 1 meter) +- Asymmetric body postures (one person lunging, other retreating) +- Keypoint velocity exceeding threshold over 5–10 frame window + +**Keypoints Used (COCO 17-point format):** +- Wrists (IDs 9, 10) — punch/grab detection +- Ankles (IDs 15, 16) — kick detection +- Shoulders/Hips (IDs 5, 6, 11, 12) — body orientation and proximity + +**Why YOLOv26-Pose:** +- Built-in RLE-based keypoint estimation — no separate model needed +- NMS-free ensures consistent detection even when fighters overlap +- 2.6 ms latency allows real-time analysis at 30+ FPS +- Pre-trained AVA dataset actions (push, hit, kick, punch) available via SlowFast for confirmation + +### 4.2 Stealing (*Mencuri*) — Context-Aware Detection ⚠️ Hardest + +**Primary Model:** YOLOE-26 (zero-shot first pass) + RF-DETR (fine-tuned confirmation) + +Stealing is the most challenging behavior because it involves **subtle hand–object interactions** that are visually similar to normal activities. + +**Detection Strategy (Multi-Stage):** + +| Stage | Model | Role | +|-------|-------|------| +| 1. Object proximity | YOLOv26 | Detect persons near high-value objects (shelves, bags, displays) | +| 2. Zero-shot screening | YOLOE-26 | Text-prompted detection: `"person concealing object"`, `"hand reaching into bag"` | +| 3. Temporal analysis | SlowFast / X3D | Classify 2–4 second video clips for theft-specific motion patterns | +| 4. Fine-tuned confirmation | RF-DETR (custom) | Fine-tuned on labeled theft dataset for high-precision detection | + +**Why Multi-Stage:** +- No single model reliably detects stealing out-of-the-box +- YOLOE-26 provides zero-shot capability for rapid prototyping without labeled data +- RF-DETR excels at fine-tuning on small custom datasets (proven on RF100-VL) +- SlowFast adds temporal context that frame-level detectors cannot capture + +**Custom Dataset Requirements:** +- Minimum 500–1,000 labeled video clips showing theft behaviors +- Include diverse scenarios: shoplifting, pickpocketing, bag theft +- Negative samples: normal shopping, browsing, reaching for own items + +### 4.3 Mass Brawls (*Tawuran*) — Crowd Density Analysis ✅ Moderate + +**Primary Model:** YOLOv26 (detection + pose) + +Tawuran detection combines **crowd density analysis** with **collective motion patterns**. + +**Detection Signals:** +- Person count exceeding threshold in defined region (e.g., >15 persons in 50m²) +- Collective rapid movement in opposing directions (convergence pattern) +- Multiple aggressive pose signatures detected simultaneously +- Optional: weapon detection via YOLOE-26 text prompts (`"person with stick"`, `"person with weapon"`) + +**Why NMS-Free Architecture is Critical:** +Traditional NMS-based models (YOLO11 and earlier) suppress overlapping bounding boxes — in a crowd of 30+ people, this causes: +- **Missed detections** (valid persons suppressed as duplicates) +- **Variable latency** (NMS processing time scales with object count) + +Both YOLOv26 and RF-DETR are NMS-free, providing: +- **Constant inference time** regardless of crowd size +- **No suppression errors** — every person is detected independently + +### 4.4 Comparison: Which Model for Which Behavior? + +| Behavior | Best Model | Why | Accuracy | Speed | +|----------|-----------|-----|----------|-------| +| **Fighting** | YOLOv26-Pose | Built-in keypoint estimation; real-time pose analysis | High | Very Fast | +| **Stealing (prototype)** | YOLOE-26 | Zero-shot via text prompts; no labeled data needed | Moderate | Fast | +| **Stealing (production)** | RF-DETR (fine-tuned) | Best fine-tuning performance; highest detection accuracy | Very High | Fast | +| **Tawuran (detection)** | YOLOv26 | Lightweight; handles dense crowds; NMS-free | High | Very Fast | +| **Tawuran (confirmation)** | RF-DETR | Superior accuracy for counting persons in dense scenes | Very High | Fast | + +--- + +## 5. System Architecture + +### 5.1 Hybrid Pipeline Design + +The system uses a **two-tier architecture** where a lightweight model runs continuously (Tier 1) and a heavier model is triggered on-demand (Tier 2). + +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ CCTV Camera Feed │ +└──────────────────────────────┬──────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────┐ +│ TIER 1: Always-On (YOLOv26-Pose, ~2 ms/frame) │ +│ │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ +│ │ Person │ │ Pose │ │ Behavior Trigger │ │ +│ │ Detection │──│ Estimation │──│ • Fighting → ALERT │ │ +│ │ (bbox) │ │ (17 keypts) │ │ • Crowd density → Tier 2 │ │ +│ └──────────────┘ └──────────────┘ │ • Suspicious → Tier 2 │ │ +│ └──────────────────────────┘ │ +└──────────────────────────────┬──────────────────────────────────────┘ + │ (triggered only when needed) + ▼ +┌─────────────────────────────────────────────────────────────────────┐ +│ TIER 2: On-Demand (RF-DETR / SlowFast / YOLOE-26) │ +│ │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ +│ │ RF-DETR-M │ │ SlowFast / │ │ YOLOE-26 │ │ +│ │ (fine-tuned) │ │ X3D-S │ │ (open-vocabulary) │ │ +│ │ Stealing │ │ Temporal │ │ Text-prompted │ │ +│ │ confirmation │ │ analysis │ │ zero-shot detection │ │ +│ └──────────────┘ └──────────────┘ └──────────────────────────┘ │ +└──────────────────────────────┬──────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────┐ +│ ALERT SYSTEM │ +│ • Classification: fighting / stealing / tawuran │ +│ • Confidence score │ +│ • Bounding box / region of interest │ +│ • Video clip extraction for review │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +### 5.2 Processing Pipeline — Step by Step + +| Step | Component | Model | Runs | Latency | +|------|-----------|-------|------|---------| +| 1 | Frame capture | — | Every frame | <1 ms | +| 2 | Person detection + pose | YOLOv26-Pose-S | Every 2nd–3rd frame | ~2.6 ms | +| 3 | Person tracking | ByteTrack | Every frame | <1 ms | +| 4 | Pose analysis (fighting) | Rule-based / ML classifier | Every frame with persons | <1 ms | +| 5 | Crowd density check (tawuran) | Person count per ROI | Every frame | <1 ms | +| 6 | Suspicious activity flag | Trigger logic | On threshold breach | <1 ms | +| 7a | Stealing confirmation | RF-DETR-M (fine-tuned) | On-demand | ~4.4 ms | +| 7b | Temporal behavior analysis | SlowFast / X3D-S | On-demand (2–4s clip) | ~50–100 ms | +| 7c | Zero-shot screening | YOLOE-26 | On-demand | ~2.6 ms | +| 8 | Alert dispatch | Alert system | On confirmed detection | <1 ms | + +### 5.3 Implementation Example + +```python +from ultralytics import YOLO +import numpy as np + +# ── Tier 1: Always-on detection ────────────────────────────────────── +pose_model = YOLO("yolo26s-pose.pt") +tracker = ByteTrack() # or DeepSORT + +def process_frame(frame): + # Step 1: Detect persons + keypoints + results = pose_model(frame, conf=0.5, classes=[0]) # class 0 = person + + # Step 2: Track persons across frames + detections = results[0].boxes + keypoints = results[0].keypoints + tracked = tracker.update(detections) + + # Step 3: Analyze behaviors + alerts = [] + + # Fighting detection: check for aggressive pose patterns + for person_a, person_b in get_close_pairs(tracked, threshold_meters=1.5): + if detect_fighting_pose(person_a.keypoints, person_b.keypoints): + alerts.append({ + "type": "fighting", + "confidence": calculate_confidence(person_a, person_b), + "persons": [person_a.id, person_b.id] + }) + + # Tawuran detection: crowd density check + person_count = len(tracked) + if person_count > 15: # threshold for mass gathering + alerts.append({ + "type": "tawuran_warning", + "person_count": person_count, + "trigger": "crowd_density" + }) + + # Trigger Tier 2 for suspicious activities + for alert in alerts: + if alert["type"] in ["suspicious_proximity", "tawuran_warning"]: + trigger_tier2(frame, alert) + + return alerts + +# ── Tier 2: On-demand confirmation ────────────────────────────────── +from rfdetr import RFDETRMedium + +rfdetr_model = RFDETRMedium() # fine-tuned on stealing dataset +yoloe_model = YOLO("yoloe-26s.pt") + +def trigger_tier2(frame, alert): + if alert["type"] == "suspicious_proximity": + # Zero-shot stealing detection + yoloe_model.set_classes([ + "person concealing object", + "hand reaching into bag", + "person hiding item under clothing" + ]) + results = yoloe_model(frame) + + # High-accuracy confirmation + detections = rfdetr_model.predict(frame, threshold=0.6) + + elif alert["type"] == "tawuran_warning": + # Accurate person count with RF-DETR + detections = rfdetr_model.predict(frame, threshold=0.4) + accurate_count = len(detections) +``` + +--- + +## 6. Hardware & Deployment Recommendations + +### 6.1 VRAM Budget (RTX 3060 — 12 GB) + +| Component | VRAM Usage (FP16) | Notes | +|-----------|-------------------|-------| +| YOLOv26-S-Pose | ~0.8 GB | Always loaded | +| ByteTrack | ~0.1 GB | CPU-based, minimal GPU | +| RF-DETR-M (on-demand) | ~2.5 GB | Loaded/unloaded as needed | +| YOLOE-26-S (on-demand) | ~1.0 GB | Shares backbone with YOLOv26 | +| SlowFast / X3D-S (on-demand) | ~1.5 GB | Loaded only for temporal analysis | +| **Total (worst case)** | **~5.9 GB** | Well within 12 GB budget | + +### 6.2 Throughput Estimates (RTX 3060) + +| Configuration | FPS | Cameras | Use Case | +|--------------|-----|---------|----------| +| YOLOv26-S-Pose only | ~120 FPS | 4–6 streams at 20 FPS | Fighting + tawuran only | +| YOLOv26-S-Pose + ByteTrack | ~80 FPS | 2–4 streams at 20 FPS | Full tracking pipeline | +| Hybrid (Tier 1 + Tier 2 on-demand) | ~30–60 FPS | 1–2 streams at 15 FPS | All 3 behaviors | +| RF-DETR-M continuous | ~45 FPS | 1–2 streams at 15 FPS | Maximum accuracy mode | + +### 6.3 Optimization Techniques + +| Technique | Impact | How | +|-----------|--------|-----| +| **TensorRT export** | 2–3x speedup | `model.export(format="engine", half=True)` | +| **FP16 inference** | ~40% less VRAM | Minimal accuracy loss (<0.1 mAP) | +| **Frame skipping** | 2–3x throughput | Process every 2nd or 3rd frame; sufficient for surveillance | +| **ROI cropping** | Reduced compute | Only process regions of interest, not full frame | +| **Dynamic model loading** | Lower peak VRAM | Load RF-DETR/SlowFast only when triggered | +| **INT8 quantization** | Further speedup | YOLOv26 DFL-free design makes INT8 cleaner | + +### 6.4 Deployment Recommendations by Budget + +| Budget | Hardware | Models | Cameras | Behaviors | +|--------|----------|--------|---------|-----------| +| **Low (~$300)** | 1× RTX 3060 | YOLOv26-Pose only | 1–2 | Fighting, tawuran | +| **Medium (~$500)** | 1× RTX 3080 | YOLOv26-Pose + RF-DETR-M | 1–2 | All 3 behaviors | +| **High (~$1,600)** | 1× RTX 4090 | Full hybrid pipeline | 3–4 | All 3, high accuracy | +| **Production** | 2× RTX 3060 or Cloud T4 | Dedicated per-tier GPUs | 4+ | All 3, redundancy | + +### 6.5 Edge Deployment (Jetson / CPU) + +| Aspect | YOLOv26 | RF-DETR | +|--------|---------|---------| +| **Jetson Orin Nano** | ✅ Excellent (2.6M params, DFL-free) | ⚠️ Heavy (30M+ params, ViT) | +| **CPU-only** | ✅ 43% faster than YOLO11 on CPU | ❌ Not recommended (ViT too slow) | +| **INT8 quantization** | ✅ Clean (no DFL Softmax) | ⚠️ ViT quantization more complex | +| **ONNX/TensorRT export** | ✅ Full support | ✅ Full support | +| **CoreML (Apple)** | ✅ Supported | ⚠️ In development | + +**Edge recommendation:** Use YOLOv26-Pose exclusively on edge devices. Reserve RF-DETR for server/cloud deployment where GPU resources are available. + +--- + +## 7. Conclusions & Recommendations + +### 7.1 Model Selection Summary + +| | YOLOv26 | RF-DETR | +|--|---------|---------| +| **Architecture** | CNN (lightweight, efficient) | Transformer (accurate, heavy) | +| **Strength** | Speed, model size, pose estimation, open-vocab | Accuracy, fine-tuning, domain generalization | +| **Weakness** | Lower accuracy than RF-DETR | No pose estimation, heavier model | +| **License** | AGPL-3.0 (restrictive for commercial) | Apache 2.0 (permissive) | +| **Best role** | Always-on primary detector (Tier 1) | On-demand high-accuracy confirmer (Tier 2) | + +### 7.2 Final Recommendation + +**Use a hybrid approach:** + +1. **YOLOv26-Pose** as the always-on Tier 1 detector for fighting and tawuran — it provides built-in pose estimation, NMS-free deterministic latency, and the lightest resource footprint. + +2. **YOLOE-26** for zero-shot stealing detection during prototyping — enables rapid iteration without labeled data. + +3. **RF-DETR** (fine-tuned) as the Tier 2 high-accuracy confirmer for stealing and ambiguous cases — its superior accuracy (+2–8 mAP) and proven fine-tuning capability on custom datasets make it ideal for production-quality behavior classification. + +4. **SlowFast / X3D** for temporal behavior analysis when frame-level detection is insufficient — particularly for stealing where the action unfolds over multiple seconds. + +This hybrid approach maximizes both **speed** (YOLOv26 strengths) and **accuracy** (RF-DETR strengths) while staying within a single RTX 3060's 12 GB VRAM budget. + +### 7.3 Recommended Development Roadmap + +| Phase | Duration | Goal | Models | +|-------|----------|------|--------| +| **Phase 1: Prototype** | 2–4 weeks | Detect fighting with pre-trained models | YOLOv26-Pose | +| **Phase 2: Expand** | 2–4 weeks | Add tawuran detection; test YOLOE-26 for stealing | YOLOv26-Pose + YOLOE-26 | +| **Phase 3: Custom Data** | 4–8 weeks | Collect and label stealing dataset (500+ clips) | Data collection | +| **Phase 4: Fine-tune** | 2–4 weeks | Fine-tune RF-DETR on custom stealing dataset | RF-DETR-M | +| **Phase 5: Integration** | 2–4 weeks | Build full hybrid pipeline with alert system | All models | +| **Phase 6: Production** | 2–4 weeks | TensorRT optimization, monitoring, deployment | Optimized pipeline | + +--- + +## References + +1. **YOLOv26** — Ultralytics (September 2025). NMS-free, DFL-free real-time object detection. https://docs.ultralytics.com/models/yolo26/ +2. **RF-DETR** — Roboflow (March 2025, ICLR 2026). Real-time detection transformer with DINOv2 backbone. https://github.com/roboflow/rf-detr +3. **SlowFast Networks** — Feichtenhofer et al. (ICCV 2019). Dual-pathway temporal action recognition. https://github.com/facebookresearch/SlowFast +4. **X3D** — Feichtenhofer (CVPR 2020). Efficient video recognition networks. Part of SlowFast repository. +5. **ByteTrack** — Zhang et al. (ECCV 2022). Multi-object tracking by associating every detection box. https://github.com/ifzhang/ByteTrack +6. **DINOv2** — Oquab et al. (2023). Self-supervised Vision Transformer features. https://github.com/facebookresearch/dinov2 +7. **COCO Dataset** — Lin et al. (2014). Microsoft Common Objects in Context. https://cocodataset.org +8. **RF100-VL** — Roboflow. 100 diverse real-world detection datasets. https://github.com/roboflow/rf100-vl +9. **AVA Dataset** — Gu et al. (CVPR 2018). Atomic Visual Actions for action detection. + +--- +--- + +# Part II — Pipeline Architecture Analysis & Integration Guide + +**Date:** March 2026 +**Hardware:** 2× NVIDIA V100 32 GB +**Target:** Multi-camera CCTV surveillance with behavior detection + +--- + +## 8. Current Pipeline Review + +### 8.1 Current Architecture + +``` +Thread per CCTV stream (capture frame at 1 FPS) + → Save frame in shared memory buffer + → Pool/batch frames for YOLO detection pipeline + → Get bounding boxes (object detection) + → Crop bounding box regions and save as images + → Pool/batch cropped images for async save to MongoDB +``` + +### 8.2 Identified Bottlenecks & Issues + +| # | Issue | Severity | Impact | +|---|-------|----------|--------| +| 1 | **Thread-per-stream scaling** | 🔴 Critical | Python's GIL prevents true parallelism. At 200+ streams, thread overhead dominates. Context switching between hundreds of threads wastes CPU cycles. | +| 2 | **Synchronous RTSP decode** | 🔴 Critical | FFmpeg/OpenCV decode is CPU-bound. Each 1080p decode uses ~0.3–0.5 CPU core. 500 streams = 150–250 cores just for decode. | +| 3 | **Shared memory buffer — no backpressure** | 🟡 High | If YOLO batching falls behind capture rate, frames accumulate unbounded in memory. No drop policy = OOM risk. | +| 4 | **Single YOLO model bottleneck** | 🟡 High | All streams funnel into one YOLO instance. If batch queue stalls, all streams back up. No priority or fairness. | +| 5 | **Crop → save as image → MongoDB** | 🟡 High | JPEG encoding is CPU-bound (~2–5 ms per crop). Saving to disk then re-reading for MongoDB is redundant I/O. | +| 6 | **No tracking across frames** | 🟠 Medium | Without person tracking (ByteTrack), same person is re-detected every frame. No temporal identity = no behavior analysis possible. | +| 7 | **No behavior analysis layer** | 🟠 Medium | Pipeline ends at "save crops." No pose analysis, no temporal analysis, no alert system. | +| 8 | **No GPU decode (NVDEC)** | 🟠 Medium | CPU decode wastes cores that could process more streams. V100 NVDEC engines sit idle. | + +### 8.3 Recommended Revised Architecture + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ CAPTURE LAYER (async) │ +│ │ +│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ +│ │ Camera 1 │ │ Camera 2 │ │ Camera 3 │ ... │ Camera N │ │ +│ │ RTSP pull │ │ RTSP pull │ │ RTSP pull │ │ RTSP pull │ │ +│ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │ +│ │ │ │ │ │ +│ └──────────────┴──────┬───────┴────────────────────┘ │ +│ │ │ +│ ┌─────────▼──────────┐ │ +│ │ Ring Buffer Pool │ ← Fixed-size, per-camera │ +│ │ (drop-oldest) │ ← Backpressure: drop frames │ +│ └─────────┬──────────┘ │ +└──────────────────────────────┼──────────────────────────────────────────────┘ + │ +┌──────────────────────────────▼──────────────────────────────────────────────┐ +│ TIER 1: ALWAYS-ON (GPU 0) │ +│ │ +│ ┌──────────────────────────────────────────────────────┐ │ +│ │ Batch Assembler │ │ +│ │ • Collect frames from ring buffers │ │ +│ │ • Dynamic batch size (8–32 based on queue depth) │ │ +│ │ • Priority: cameras with recent alerts first │ │ +│ └──────────────────────┬───────────────────────────────┘ │ +│ │ │ +│ ┌──────────────────────▼───────────────────────────────┐ │ +│ │ YOLOv26-S-Pose (TensorRT FP16) │ │ +│ │ → Person bboxes + 17 keypoints per person │ │ +│ │ → ~1.5 ms/image on V100 │ │ +│ └──────────────────────┬───────────────────────────────┘ │ +│ │ │ +│ ┌──────────────────────▼───────────────────────────────┐ │ +│ │ ByteTrack (CPU) │ │ +│ │ → Track person IDs across frames │ │ +│ │ → Maintain per-person keypoint history (last 10 fr) │ │ +│ └──────────────────────┬───────────────────────────────┘ │ +│ │ │ +│ ┌──────────────────────▼───────────────────────────────┐ │ +│ │ Behavior Analyzer (CPU) │ │ +│ │ ├─ Fighting: keypoint velocity + proximity │ │ +│ │ ├─ Tawuran: crowd density + collective motion │ │ +│ │ └─ Suspicious: person-object proximity zones │ │ +│ └──────────┬────────────────────────┬──────────────────┘ │ +│ │ direct alert │ trigger Tier 2 │ +│ ▼ ▼ │ +│ ┌─────────────┐ ┌─────────────────────────┐ │ +│ │ Alert Queue │ │ Tier 2 Request Queue │ │ +│ └──────┬──────┘ └────────────┬────────────┘ │ +└─────────────┼─────────────────────────┼─────────────────────────────────────┘ + │ │ + │ ┌────────────────────▼──────────────────────────────────┐ + │ │ TIER 2: ON-DEMAND (GPU 1) │ + │ │ │ + │ │ ┌─────────────┐ ┌─────────────┐ ┌───────────────┐ │ + │ │ │ RF-DETR-M │ │ SlowFast │ │ YOLOE-26 │ │ + │ │ │ (fine-tuned)│ │ X3D-S │ │ (open-vocab) │ │ + │ │ │ Stealing │ │ Temporal │ │ Zero-shot │ │ + │ │ │ ~2.7ms V100 │ │ ~50–80ms │ │ ~1.5ms V100 │ │ + │ │ └──────┬──────┘ └──────┬──────┘ └───────┬───────┘ │ + │ │ └───────────┬────┴───────────────┘ │ + │ │ ▼ │ + │ │ ┌──────────────────┐ │ + │ │ │ Confirmation │ │ + │ │ │ Aggregator │ │ + │ │ └────────┬─────────┘ │ + │ └───────────────────┼───────────────────────────────────┘ + │ │ + ▼ ▼ +┌─────────────────────────────────────────────────────────────────────────────┐ +│ OUTPUT LAYER │ +│ │ +│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ +│ │ MongoDB │ │ Alert │ │ Video Clip │ │ +│ │ (crops+meta) │ │ Dispatcher │ │ Extractor │ │ +│ │ Async bulk │ │ WebSocket/API │ │ (evidence) │ │ +│ └───────────────┘ └───────────────┘ └───────────────┘ │ +└─────────────────────────────────────────────────────────────────────────────┘ +``` + +### 8.4 Architectural Improvements — Detail + +#### A. Replace Thread-per-Stream with Producer-Consumer + asyncio + +**Problem:** Python threads hold the GIL; 500 threads = massive context-switch overhead. + +**Solution:** Use a small **process pool** for CPU-bound decode, feeding into an **asyncio** event loop for I/O coordination. + +```python +import asyncio +import multiprocessing as mp +from concurrent.futures import ProcessPoolExecutor +from collections import deque +import cv2 +import numpy as np + +# ── Ring buffer per camera (fixed-size, drop-oldest) ────────────────── +class CameraRingBuffer: + """Lock-free-ish ring buffer. Drops oldest frame when full.""" + def __init__(self, camera_id: str, max_size: int = 3): + self.camera_id = camera_id + self.buffer = deque(maxlen=max_size) # auto-drops oldest + self.frame_count = 0 + self.dropped = 0 + + def put(self, frame: np.ndarray, timestamp: float): + if len(self.buffer) == self.buffer.maxlen: + self.dropped += 1 + self.buffer.append((frame, timestamp, self.frame_count)) + self.frame_count += 1 + + def get_latest(self): + return self.buffer[-1] if self.buffer else None + +# ── RTSP decode in separate process (bypass GIL) ───────────────────── +def decode_worker(rtsp_url: str, shared_queue: mp.Queue, camera_id: str): + """Runs in a subprocess. Decodes RTSP at 1 FPS.""" + cap = cv2.VideoCapture(rtsp_url) + while cap.isOpened(): + ret, frame = cap.read() + if ret: + try: + shared_queue.put_nowait((camera_id, frame, time.time())) + except mp.queues.Full: + pass # backpressure: drop frame silently + time.sleep(1.0) # 1 FPS capture rate + +# ── Main async coordinator ─────────────────────────────────────────── +class PipelineCoordinator: + def __init__(self, camera_urls: dict[str, str]): + self.buffers: dict[str, CameraRingBuffer] = {} + self.frame_queue = mp.Queue(maxsize=1000) + self.decode_pool = ProcessPoolExecutor(max_workers=mp.cpu_count() // 2) + + for cam_id, url in camera_urls.items(): + self.buffers[cam_id] = CameraRingBuffer(cam_id, max_size=3) + + async def run(self): + # Start decode workers as subprocesses + for cam_id, url in camera_urls.items(): + self.decode_pool.submit(decode_worker, url, self.frame_queue, cam_id) + + # Main loop: drain queue → fill ring buffers → assemble batches + while True: + batch = self._assemble_batch(max_batch_size=32) + if batch: + results = await self._run_tier1(batch) + await self._process_results(results) + await asyncio.sleep(0.001) # yield control +``` + +#### B. Backpressure Strategy + +| Scenario | Action | Implementation | +|----------|--------|----------------| +| Frame queue full | **Drop newest frame** from that camera | `put_nowait` + catch `Full` | +| GPU batch queue full | **Drop oldest batch** (stale frames) | Ring buffer with `maxlen=3` per camera | +| Tier 2 queue full | **Drop lowest-confidence requests** | Priority queue sorted by confidence | +| MongoDB write slow | **Buffer in memory, bulk write** | Async bulk insert every 5 seconds | +| Network congestion | **Reduce capture FPS temporarily** | Adaptive sleep: `1.0 → 2.0s` | + +#### C. Eliminate Redundant I/O (Crop → Disk → MongoDB) + +**Current:** Crop → encode JPEG → save to disk → read from disk → upload to MongoDB +**Improved:** Crop → encode JPEG in-memory → bulk insert to MongoDB directly + +```python +import motor.motor_asyncio # async MongoDB driver +import cv2 + +async def save_crops_batch(crops: list[tuple[str, np.ndarray, dict]]): + """Bulk save crops directly to MongoDB GridFS — no disk I/O.""" + client = motor.motor_asyncio.AsyncIOMotorClient("mongodb://localhost:27017") + db = client.surveillance + + documents = [] + for camera_id, crop_img, metadata in crops: + _, jpeg_bytes = cv2.imencode(".jpg", crop_img, [cv2.IMWRITE_JPEG_QUALITY, 85]) + documents.append({ + "camera_id": camera_id, + "image": jpeg_bytes.tobytes(), # binary, no disk round-trip + "timestamp": metadata["timestamp"], + "bbox": metadata["bbox"], + "person_id": metadata.get("track_id"), + "behavior_flags": metadata.get("flags", []), + }) + + if documents: + await db.detections.insert_many(documents) # single bulk operation +``` + +--- + +## 9. YOLOv26-Pose Integration (Fighting & Tawuran) + +### 9.1 Integration Strategy: Replace, Don't Run Alongside + +**Replace** the current YOLO detection model with YOLOv26-S-Pose. It provides: +- Everything the current YOLO does (bounding boxes, class detection) +- **Plus** 17 keypoints per person (pose estimation) +- **Plus** NMS-free deterministic latency +- **Faster** than YOLO11 equivalent (~26–43% faster) + +There is no reason to run both — YOLOv26-Pose is a strict superset. + +### 9.2 Where Pose Analysis Fits in the Data Flow + +``` +Frame from ring buffer + │ + ▼ +YOLOv26-S-Pose inference (GPU, ~1.5 ms on V100) + │ + ├── outputs: bboxes + confidence + class + 17 keypoints per person + │ + ▼ +ByteTrack (CPU, <1 ms) + │ + ├── outputs: tracked person IDs + keypoint history per track + │ + ▼ +┌─────────────────────────────────────────────────────────┐ +│ Behavior Analyzer (CPU, <1 ms total) │ +│ │ +│ ┌─────────────────────────────────────────────────┐ │ +│ │ A. Fighting Detector │ │ +│ │ • Input: keypoints of all close pairs │ │ +│ │ • Method: velocity + acceleration of wrists/ │ │ +│ │ ankles over 5-frame sliding window │ │ +│ │ • Threshold: >X px/frame limb movement │ │ +│ │ • Output: ALERT if confirmed │ │ +│ └─────────────────────────────────────────────────┘ │ +│ │ +│ ┌─────────────────────────────────────────────────┐ │ +│ │ B. Tawuran Detector │ │ +│ │ • Input: all person bboxes + keypoints │ │ +│ │ • Method 1: person_count > 15 in ROI │ │ +│ │ • Method 2: centroid convergence velocity │ │ +│ │ • Method 3: % of persons in fighting pose │ │ +│ │ • Output: ALERT if 2+ methods trigger │ │ +│ └─────────────────────────────────────────────────┘ │ +│ │ +│ ┌─────────────────────────────────────────────────┐ │ +│ │ C. Suspicious Activity Flagger │ │ +│ │ • Input: person tracks near defined zones │ │ +│ │ • Method: dwell time + hand movement pattern │ │ +│ │ • Output: TRIGGER TIER 2 for confirmation │ │ +│ └─────────────────────────────────────────────────┘ │ +└─────────────────────────────────────────────────────────┘ +``` + +### 9.3 Fighting Detection — Keypoint Velocity Algorithm + +```python +import numpy as np +from collections import defaultdict + +class FightingDetector: + """Detects fighting based on keypoint velocity analysis.""" + + WRIST_IDS = [9, 10] # left/right wrist + ANKLE_IDS = [15, 16] # left/right ankle + SHOULDER_IDS = [5, 6] # proximity reference + HIP_IDS = [11, 12] # proximity reference + + def __init__( + self, + velocity_threshold: float = 40.0, # pixels/frame + proximity_threshold: float = 150.0, # pixels (approx 1.5m at typical CCTV) + window_size: int = 5, # frames to analyze + min_aggressive_frames: int = 3, # frames exceeding threshold + ): + self.velocity_threshold = velocity_threshold + self.proximity_threshold = proximity_threshold + self.window_size = window_size + self.min_aggressive_frames = min_aggressive_frames + self.keypoint_history: dict[int, list[np.ndarray]] = defaultdict(list) + + def update(self, track_id: int, keypoints: np.ndarray): + """Store keypoints for a tracked person. keypoints shape: (17, 2).""" + history = self.keypoint_history[track_id] + history.append(keypoints.copy()) + if len(history) > self.window_size: + history.pop(0) + + def _limb_velocity(self, track_id: int) -> float: + """Compute max limb velocity over recent frames.""" + history = self.keypoint_history.get(track_id, []) + if len(history) < 2: + return 0.0 + + max_vel = 0.0 + limb_ids = self.WRIST_IDS + self.ANKLE_IDS + for i in range(1, len(history)): + for lid in limb_ids: + delta = np.linalg.norm(history[i][lid] - history[i-1][lid]) + max_vel = max(max_vel, delta) + return max_vel + + def _torso_distance(self, kp_a: np.ndarray, kp_b: np.ndarray) -> float: + """Distance between torso centers of two persons.""" + center_a = np.mean(kp_a[self.SHOULDER_IDS + self.HIP_IDS], axis=0) + center_b = np.mean(kp_b[self.SHOULDER_IDS + self.HIP_IDS], axis=0) + return np.linalg.norm(center_a - center_b) + + def check_pair(self, id_a: int, id_b: int) -> dict | None: + """Check if two tracked persons are fighting.""" + hist_a = self.keypoint_history.get(id_a, []) + hist_b = self.keypoint_history.get(id_b, []) + if not hist_a or not hist_b: + return None + + # Check proximity (must be close) + dist = self._torso_distance(hist_a[-1], hist_b[-1]) + if dist > self.proximity_threshold: + return None + + # Check velocity (both must have aggressive movement) + vel_a = self._limb_velocity(id_a) + vel_b = self._limb_velocity(id_b) + + if vel_a > self.velocity_threshold and vel_b > self.velocity_threshold: + confidence = min(1.0, (vel_a + vel_b) / (4 * self.velocity_threshold)) + return { + "type": "fighting", + "person_ids": [id_a, id_b], + "distance_px": dist, + "velocity_a": vel_a, + "velocity_b": vel_b, + "confidence": round(confidence, 3), + } + return None +``` + +### 9.4 Tawuran Detection — Crowd Density + Collective Motion + +```python +class TawuranDetector: + """Detects mass brawls via crowd density and collective aggression.""" + + def __init__( + self, + crowd_threshold: int = 15, # persons in ROI + convergence_threshold: float = 0.6, # 60% moving toward center + fighting_ratio_threshold: float = 0.3, # 30% in aggressive poses + ): + self.crowd_threshold = crowd_threshold + self.convergence_threshold = convergence_threshold + self.fighting_ratio_threshold = fighting_ratio_threshold + self.prev_centroids: dict[int, np.ndarray] = {} + + def analyze( + self, + tracked_persons: list[dict], # [{id, bbox, keypoints}, ...] + roi: tuple[int, int, int, int] | None = None, # (x1, y1, x2, y2) + fighting_detector: FightingDetector = None, + ) -> dict | None: + + # Filter to ROI + if roi: + in_roi = [p for p in tracked_persons if self._in_roi(p["bbox"], roi)] + else: + in_roi = tracked_persons + + person_count = len(in_roi) + if person_count < self.crowd_threshold: + return None + + # Check 1: Crowd density exceeded + signals = ["crowd_density"] + + # Check 2: Convergence — are people moving toward each other? + centroids = {p["id"]: self._centroid(p["bbox"]) for p in in_roi} + group_center = np.mean(list(centroids.values()), axis=0) + + converging = 0 + for pid, pos in centroids.items(): + prev = self.prev_centroids.get(pid) + if prev is not None: + prev_dist = np.linalg.norm(prev - group_center) + curr_dist = np.linalg.norm(pos - group_center) + if curr_dist < prev_dist: + converging += 1 + + self.prev_centroids = centroids + + if person_count > 0 and converging / person_count > self.convergence_threshold: + signals.append("convergence") + + # Check 3: Multiple fighting poses + if fighting_detector: + aggressive = sum( + 1 for p in in_roi + if fighting_detector._limb_velocity(p["id"]) > fighting_detector.velocity_threshold + ) + if person_count > 0 and aggressive / person_count > self.fighting_ratio_threshold: + signals.append("collective_aggression") + + if len(signals) >= 2: # at least 2 signals to confirm + return { + "type": "tawuran", + "person_count": person_count, + "signals": signals, + "confidence": min(1.0, len(signals) / 3), + } + return None + + def _in_roi(self, bbox, roi) -> bool: + cx = (bbox[0] + bbox[2]) / 2 + cy = (bbox[1] + bbox[3]) / 2 + return roi[0] <= cx <= roi[2] and roi[1] <= cy <= roi[3] + + def _centroid(self, bbox) -> np.ndarray: + return np.array([(bbox[0]+bbox[2])/2, (bbox[1]+bbox[3])/2]) +``` + +--- + +## 10. SlowFast / X3D Integration (Temporal Behavior Analysis) + +### 10.1 The Challenge: 1 FPS → Video Clips + +SlowFast and X3D expect **multi-frame video clips** (typically 8–32 frames at ≥8 FPS). Your pipeline captures at **1 FPS**. This mismatch requires a buffering strategy. + +| Approach | Clip Requirement | At 1 FPS | Clip Duration | Feasibility | +|----------|-----------------|----------|---------------|-------------| +| **SlowFast 8×8** | 8 frames, stride 8 | 8 frames = 8 seconds buffer | 8 seconds | ✅ Good — matches stealing/fighting duration | +| **SlowFast 4×16** | 4 frames, stride 16 | 4 frames = 4 seconds buffer | 4 seconds | ✅ Good — quick events | +| **X3D-S** | 13 frames, stride 6 | 13 frames = 13 seconds buffer | 13 seconds | ✅ Covers full tawuran build-up | +| **SlowFast 16×8** | 16 frames, stride 8 | 16 frames = 16 seconds | 16 seconds | ⚠️ Long buffer but better accuracy | + +> **Key insight:** At 1 FPS, the temporal resolution is low, but the clip duration is inherently long. SlowFast can still extract useful **coarse temporal patterns** (person appearing → approaching → grabbing → leaving) even at 1 FPS. For fine-grained motion (punch trajectories), the keypoint velocity from YOLOv26-Pose (Tier 1) is already covering this at per-frame level. + +### 10.2 When to Trigger SlowFast (On-Demand Only) + +SlowFast should **never** run continuously. It runs only when Tier 1 flags suspicious activity: + +| Trigger Source | Trigger Condition | SlowFast Task | Priority | +|---------------|-------------------|---------------|----------| +| Fighting detector | Fighting confidence > 0.5 but < 0.8 | Confirm/deny fight action | High | +| Suspicious activity | Person lingering near valuables > 10s | Classify stealing behavior | High | +| Tawuran detector | Crowd threshold met | Classify crowd action (running, fighting) | Medium | +| Periodic audit | Random 1% of cameras, every 60s | Background anomaly detection | Low | + +### 10.3 Per-Person Clip Buffer + +```python +from collections import deque +from dataclasses import dataclass, field +import numpy as np +import time + +@dataclass +class PersonClipBuffer: + """Maintains a rolling frame buffer per tracked person for SlowFast.""" + track_id: int + max_frames: int = 16 # 16 seconds at 1 FPS + frames: deque = field(default_factory=lambda: deque(maxlen=16)) + crops: deque = field(default_factory=lambda: deque(maxlen=16)) + timestamps: deque = field(default_factory=lambda: deque(maxlen=16)) + + # Memory estimate: 16 frames × 224×224×3 (crop) ≈ 2.4 MB per person + # 100 tracked persons ≈ 240 MB — manageable + + def add_frame(self, full_frame: np.ndarray, bbox: tuple, timestamp: float): + """Add a frame crop for this tracked person.""" + x1, y1, x2, y2 = [int(c) for c in bbox] + # Pad bbox by 20% for context + h, w = full_frame.shape[:2] + pad_x = int((x2 - x1) * 0.2) + pad_y = int((y2 - y1) * 0.2) + x1, y1 = max(0, x1 - pad_x), max(0, y1 - pad_y) + x2, y2 = min(w, x2 + pad_x), min(h, y2 + pad_y) + + crop = full_frame[y1:y2, x1:x2] + # Resize to SlowFast input size + crop_resized = cv2.resize(crop, (224, 224)) + + self.frames.append(full_frame) # keep full frame too (for RF-DETR) + self.crops.append(crop_resized) + self.timestamps.append(timestamp) + + def get_clip(self, num_frames: int = 8) -> np.ndarray | None: + """Get a clip tensor for SlowFast. Returns (T, H, W, C) array.""" + if len(self.crops) < num_frames: + return None + recent = list(self.crops)[-num_frames:] + return np.stack(recent, axis=0) # (T, 224, 224, 3) + + @property + def duration_seconds(self) -> float: + if len(self.timestamps) < 2: + return 0.0 + return self.timestamps[-1] - self.timestamps[0] + + @property + def memory_mb(self) -> float: + return len(self.crops) * 224 * 224 * 3 / (1024 * 1024) + + +class ClipBufferManager: + """Manages clip buffers for all tracked persons. Evicts stale tracks.""" + + def __init__(self, max_persons: int = 200, stale_timeout: float = 30.0): + self.buffers: dict[int, PersonClipBuffer] = {} + self.max_persons = max_persons + self.stale_timeout = stale_timeout + + def update(self, track_id: int, frame: np.ndarray, bbox: tuple, ts: float): + if track_id not in self.buffers: + if len(self.buffers) >= self.max_persons: + self._evict_oldest() + self.buffers[track_id] = PersonClipBuffer(track_id=track_id) + self.buffers[track_id].add_frame(frame, bbox, ts) + + def get_clip(self, track_id: int, num_frames: int = 8) -> np.ndarray | None: + buf = self.buffers.get(track_id) + return buf.get_clip(num_frames) if buf else None + + def _evict_oldest(self): + """Remove the track with the oldest last-seen timestamp.""" + if not self.buffers: + return + oldest_id = min(self.buffers, key=lambda k: self.buffers[k].timestamps[-1]) + del self.buffers[oldest_id] + + def cleanup_stale(self, current_time: float): + """Remove tracks not seen for stale_timeout seconds.""" + stale = [ + tid for tid, buf in self.buffers.items() + if current_time - buf.timestamps[-1] > self.stale_timeout + ] + for tid in stale: + del self.buffers[tid] + + @property + def total_memory_mb(self) -> float: + return sum(buf.memory_mb for buf in self.buffers.values()) +``` + +### 10.4 SlowFast Inference Integration + +```python +import torch +from pytorchvideo.models.hub import slowfast_r50_detection + +class SlowFastAnalyzer: + """Tier 2 temporal behavior analysis using SlowFast.""" + + # AVA action labels relevant to our use case + FIGHTING_ACTIONS = {"hit", "kick", "punch", "push", "grab", "fight"} + STEALING_ACTIONS = {"take", "pick_up", "carry", "put_down", "grab"} + + def __init__(self, device: str = "cuda:1"): + self.device = device + self.model = slowfast_r50_detection() + self.model.to(device).eval() + + @torch.no_grad() + def analyze_clip( + self, + clip: np.ndarray, # (T, 224, 224, 3) + behavior_type: str, # "fighting" or "stealing" + ) -> dict: + """Run SlowFast on a clip buffer.""" + # Preprocess: (T,H,W,C) → (C,T,H,W) normalized + clip_tensor = torch.from_numpy(clip).float().permute(3, 0, 1, 2) / 255.0 + clip_tensor = clip_tensor.unsqueeze(0).to(self.device) # (1,C,T,H,W) + + # SlowFast expects [slow_pathway, fast_pathway] + # Slow: every 8th frame, Fast: all frames + slow = clip_tensor[:, :, ::8, :, :] # temporal stride 8 + fast = clip_tensor # full temporal resolution + + preds = self.model([slow, fast]) + + # Map predictions to relevant actions + target_actions = ( + self.FIGHTING_ACTIONS if behavior_type == "fighting" + else self.STEALING_ACTIONS + ) + + action_scores = {} # action_name → confidence + for action, idx in ACTION_LABEL_MAP.items(): + if action in target_actions: + action_scores[action] = float(preds[0, idx].cpu()) + + top_action = max(action_scores, key=action_scores.get) + return { + "behavior": behavior_type, + "top_action": top_action, + "confidence": action_scores[top_action], + "all_scores": action_scores, + } +``` + +### 10.5 Where SlowFast Fits in the Hybrid Architecture + +``` +Tier 1 (GPU 0) flags suspicious activity + │ + │ trigger_type: "fighting_uncertain" or "stealing_suspicious" + │ includes: track_id, camera_id, confidence + ▼ +┌──────────────────────────────────────────────┐ +│ ClipBufferManager.get_clip(track_id, 8) │ +│ → Returns (8, 224, 224, 3) ndarray │ +│ → If clip not ready (< 8 frames), WAIT │ +│ and re-trigger when buffer fills │ +└──────────────────────┬───────────────────────┘ + │ + ▼ +┌──────────────────────────────────────────────┐ +│ SlowFastAnalyzer.analyze_clip(clip, type) │ +│ → Runs on GPU 1 (shared with RF-DETR) │ +│ → ~50–80 ms per clip │ +│ → Returns action classification + conf │ +└──────────────────────┬───────────────────────┘ + │ + ┌──────────┴──────────┐ + │ │ + confidence > 0.7 confidence ≤ 0.7 + │ │ + CONFIRM ALERT DISMISS / LOG +``` + +--- + +## 11. RF-DETR Integration (Tier 2 High-Accuracy Confirmation) + +### 11.1 GPU Assignment Strategy + +**Recommended: Dedicated GPU per tier.** + +| Component | GPU 0 (V100 #1) | GPU 1 (V100 #2) | +|-----------|-----------------|-----------------| +| YOLOv26-S-Pose | ✅ Always loaded | ❌ | +| ByteTrack | ✅ CPU-side | ✅ CPU-side | +| RF-DETR-M | ❌ | ✅ On-demand | +| SlowFast / X3D-S | ❌ | ✅ On-demand | +| YOLOE-26 | ❌ | ✅ On-demand | + +**Why separate GPUs:** +- Tier 1 must have **guaranteed latency** — no competition for CUDA streams +- Tier 2 models share GPU 1 sequentially (they're triggered sporadically, not continuously) +- If Tier 2 queue backs up, Tier 1 is unaffected + +### 11.2 Non-Blocking Routing to RF-DETR + +The key requirement: triggering RF-DETR must **never block** the main YOLO pipeline. + +```python +import asyncio +import torch +from rfdetr import RFDETRMedium +from queue import PriorityQueue +from dataclasses import dataclass, field +from typing import Any + +@dataclass(order=True) +class Tier2Request: + priority: int # lower = higher priority + timestamp: float = field(compare=False) + camera_id: str = field(compare=False) + frame: Any = field(compare=False) # np.ndarray + trigger_type: str = field(compare=False) # "stealing", "tawuran", "uncertain" + track_ids: list = field(compare=False, default_factory=list) + tier1_confidence: float = field(compare=False, default=0.0) + +class Tier2Processor: + """Runs on GPU 1. Processes RF-DETR / SlowFast requests from a priority queue.""" + + PRIORITY_MAP = {"fighting_uncertain": 1, "stealing": 2, "tawuran": 3, "audit": 10} + + def __init__(self, device: str = "cuda:1", max_queue: int = 100): + self.device = device + self.queue = PriorityQueue(maxsize=max_queue) + + # Load models on GPU 1 + self.rfdetr = RFDETRMedium() # fine-tuned weights + self.slowfast = SlowFastAnalyzer(device=device) + + # Lazy-load YOLOE only when needed + self._yoloe = None + + @property + def yoloe(self): + if self._yoloe is None: + from ultralytics import YOLO + self._yoloe = YOLO("yoloe-26s.pt").to(self.device) + return self._yoloe + + def submit(self, request: Tier2Request) -> bool: + """Non-blocking submit. Returns False if queue full (drops request).""" + try: + self.queue.put_nowait(request) + return True + except: + return False # backpressure: drop lowest-priority requests + + async def process_loop(self): + """Main Tier 2 processing loop. Runs in background.""" + while True: + if self.queue.empty(): + await asyncio.sleep(0.01) + continue + + request = self.queue.get() + result = await self._process_request(request) + + if result and result["confirmed"]: + await self._dispatch_alert(request, result) + + async def _process_request(self, req: Tier2Request) -> dict: + if req.trigger_type == "stealing": + return await self._confirm_stealing(req) + elif req.trigger_type == "fighting_uncertain": + return await self._confirm_fighting(req) + elif req.trigger_type == "tawuran": + return await self._confirm_tawuran(req) + + async def _confirm_stealing(self, req: Tier2Request) -> dict: + """Multi-model stealing confirmation.""" + # Step 1: RF-DETR high-accuracy detection + rfdetr_detections = self.rfdetr.predict(req.frame, threshold=0.5) + + # Step 2: YOLOE zero-shot screening + self.yoloe.set_classes([ + "person concealing object", + "hand reaching into bag", + "person hiding item under clothing", + "shoplifting", + ]) + yoloe_results = self.yoloe(req.frame) + + # Step 3: SlowFast temporal analysis (if clip available) + clip = clip_buffer_manager.get_clip(req.track_ids[0], num_frames=8) + slowfast_result = None + if clip is not None: + slowfast_result = self.slowfast.analyze_clip(clip, "stealing") + + # Aggregate: require at least 2/3 models to agree + votes = 0 + if len(rfdetr_detections) > 0: + votes += 1 + if len(yoloe_results[0].boxes) > 0: + votes += 1 + if slowfast_result and slowfast_result["confidence"] > 0.6: + votes += 1 + + return { + "confirmed": votes >= 2, + "votes": votes, + "rfdetr_count": len(rfdetr_detections), + "yoloe_count": len(yoloe_results[0].boxes), + "slowfast": slowfast_result, + } + + async def _confirm_tawuran(self, req: Tier2Request) -> dict: + """RF-DETR for accurate person count in dense crowd.""" + detections = self.rfdetr.predict(req.frame, threshold=0.3) + person_dets = [d for d in detections if d.class_id == 0] + + return { + "confirmed": len(person_dets) >= 15, + "accurate_count": len(person_dets), + "tier1_estimate": req.tier1_confidence, + } + + async def _dispatch_alert(self, req: Tier2Request, result: dict): + """Send confirmed alert to alert system.""" + alert = { + "type": req.trigger_type, + "camera_id": req.camera_id, + "timestamp": req.timestamp, + "result": result, + "frame_evidence": req.frame, # or save to GridFS + } + # → WebSocket push, API call, database insert, etc. + await alert_dispatcher.send(alert) +``` + +### 11.3 RF-DETR Fine-Tuning for Stealing Detection + +```python +from rfdetr import RFDETRMedium +from rfdetr.config import TrainConfig + +def fine_tune_stealing_detector(): + """Fine-tune RF-DETR-M on custom stealing dataset.""" + + model = RFDETRMedium() + + config = TrainConfig( + dataset_dir="./data/stealing_dataset", # COCO format + num_classes=4, # normal_interaction, concealing, grabbing, fleeing + epochs=50, + batch_size=8, + lr=1e-4, # lower LR for fine-tuning + grad_accum_steps=4, # effective batch 32 + resolution=576, # RF-DETR-M native resolution + augmentation="heavy", + ) + + # RF-DETR proven to generalize well on small datasets (RF100-VL benchmark) + # Minimum recommended: 500 images per class + # Optimal: 2,000+ images per class + + model.train(config) + model.save("rfdetr_m_stealing_v1.pt") +``` + +### 11.4 Dataset Requirements for Stealing Fine-Tuning + +| Class | Description | Min Images | Sources | +|-------|-------------|-----------|---------| +| `normal_interaction` | Person normally handling items | 1,000 | Existing CCTV footage | +| `concealing` | Person hiding item in clothing/bag | 500 | Staged + real footage | +| `grabbing` | Hand reaching for unattended item | 500 | Staged + retail CCTV | +| `fleeing` | Person rapidly leaving after taking | 300 | Staged scenarios | + +--- + +## 12. Hardware Specifications + +### 12.0 Design Principles + +All specifications account for: +- **NVDEC zero-copy decode** — V100's built-in NVDEC engine decodes H.264/H.265 on dedicated fixed-function hardware, consuming 0% CUDA/Tensor cores and ~0.3 GB VRAM per GPU. Frames stay in GPU memory (no CPU copy). +- **NVDEC session limit** — Each V100 has 1 NVDEC engine supporting ~24–32 concurrent decode sessions. Cameras beyond this limit fall back to CPU software decode at ~0.05 core/stream (lightweight at 1 FPS). +- **1 FPS capture rate** — At 1 frame/second, CPU decode overhead is minimal even in software fallback. +- **Async bulk MongoDB writes** — Using `motor` (async driver) with `insert_many` batches of 100–500 docs, `ordered=False`. + +### 12.1 GPU Internal Resource Allocation + +NVDEC and CUDA/Tensor cores are **physically separate silicon** inside the V100. They run in parallel with zero interference: + +``` +┌─────────────────────────────────────────────────────────────┐ +│ NVIDIA V100 32 GB │ +│ │ +│ ┌──────────────────────────────┐ ┌─────────────────────┐ │ +│ │ CUDA + Tensor Cores │ │ NVDEC Engine │ │ +│ │ (5,120 CUDA + 640 Tensor) │ │ (fixed-function) │ │ +│ │ │ │ │ │ +│ │ • YOLOv26-Pose inference │ │ • H.264 decode │ │ +│ │ • RF-DETR inference │ │ • H.265 decode │ │ +│ │ • SlowFast inference │ │ • 24–32 sessions │ │ +│ │ • Preprocessing (resize) │ │ • ~0.3 GB VRAM │ │ +│ │ │ │ │ │ +│ │ 100% available for AI │ │ Runs in PARALLEL │ │ +│ │ workloads regardless of │ │ with CUDA cores │ │ +│ │ NVDEC activity │ │ at zero cost │ │ +│ └──────────────────────────────┘ └─────────────────────┘ │ +│ │ +│ ┌──────────────────────────────────────────────────────┐ │ +│ │ HBM2 VRAM (32 GB) — shared, only contention point │ │ +│ │ NVDEC uses ~0.3 GB → 31.7 GB free for inference │ │ +│ └──────────────────────────────────────────────────────┘ │ +└─────────────────────────────────────────────────────────────┘ +``` + +**Impact:** NVDEC decode is effectively "free" — no separate decode GPU needed, no CPU core savings to calculate. The V100 handles both decode and inference simultaneously. + +### 12.2 CPU Load Breakdown (per camera at 1 FPS) + +| Task | Without NVDEC (CPU decode) | With NVDEC (GPU decode) | Notes | +|------|---------------------------|------------------------|-------| +| RTSP network I/O | 0.01 core | 0.01 core | Same — network stack is always CPU | +| H.264 frame decode | 0.30–0.50 core | **0.00 core** | Offloaded to NVDEC | +| Frame copy CPU→GPU | 0.02 core | **0.00 core** | Zero-copy: frame stays on GPU | +| ByteTrack tracking | 0.02 core | 0.02 core | CPU-side, lightweight | +| Behavior analysis | 0.01 core | 0.01 core | NumPy math on keypoint floats | +| Ring buffer management | 0.01 core | 0.01 core | deque operations | +| JPEG encode (crops) | 0.03 core | 0.03 core | CPU (or NVJPEG on GPU) | +| MongoDB async write | 0.01 core | 0.01 core | Amortized via bulk writes | +| **Total per camera** | **0.41–0.61 core** | **0.09 core** | **~78–85% reduction** | + +| Camera Count | CPU Cores (no NVDEC) | CPU Cores (with NVDEC) | Savings | +|-------------|---------------------|----------------------|---------| +| 100 | 41–61 cores | **9 cores** | 78–85% | +| 300 | 123–183 cores | **27 cores** | 78–85% | +| 500 | 205–305 cores | **45 cores** | 78–85% | +| 800 | 328–488 cores | **72 cores** | 78–85% | +| 1,000 | 410–610 cores | **90 cores** | 78–85% | + +> **Note:** Cameras 1–24 use GPU 0 NVDEC, cameras 25–48 use GPU 1 NVDEC (48 total hardware-decoded). Cameras 49+ fall back to CPU software decode at 1 FPS, which is still very light (~0.05 core/stream vs 0.3–0.5 for persistent decode). The 0.09 core/camera figure above is the blended average. + +--- + +### 12.3 Spec A — With Behavior Detection (Fighting + Stealing + Tawuran) + +#### Processing Pipeline + +``` +Camera RTSP → NVDEC (GPU decode) → GPU Memory → YOLOv26-Pose (Tensor Cores) + │ + bbox + keypoints (tiny, few KB) + │ + copy to CPU + │ + ┌───────────────┼───────────────┐ + ▼ ▼ ▼ + ByteTrack Fighting Det. Tawuran Det. + (tracking) (keypoint vel.) (crowd density) + │ │ │ + └───────┬───────┘ │ + ▼ ▼ + Suspicious? ──────────→ Tier 2 (GPU 1) + RF-DETR / SlowFast + │ + Confirmed? + │ + ▼ ▼ + Alert MongoDB +``` + +#### GPU Allocation + +| | GPU 0 (V100 #1) — Tier 1 | GPU 1 (V100 #2) — Tier 2 | +|--|--------------------------|--------------------------| +| **NVDEC** | Cameras 1–24 (H.264 decode) | Cameras 25–48 (H.264 decode) | +| **Inference** | YOLOv26-S-Pose (always-on) | RF-DETR-M + X3D-S + YOLOE-26 (on-demand) | +| **Role** | Primary detection + pose | Confirmation + temporal analysis | + +#### VRAM Budget + +| Component | GPU 0 | GPU 1 | +|-----------|-------|-------| +| NVDEC decode buffers (24 streams) | 0.3 GB | 0.3 GB | +| YOLOv26-S-Pose weights (TensorRT FP16) | 0.8 GB | — | +| RF-DETR-M weights | — | 2.5 GB | +| X3D-S weights | — | 0.8 GB | +| YOLOE-26-S weights | — | 1.0 GB | +| CUDA context + allocator | 0.8 GB | 0.8 GB | +| Inference batch buffers (batch=16) | 0.5 GB | 0.6 GB | +| Preprocessing buffers | 0.2 GB | 0.2 GB | +| **Total used** | **2.6 GB** | **6.2 GB** | +| **Free** | **29.4 GB** | **25.8 GB** | + +#### Full Bill of Materials + +| Component | Specification | Purpose | Est. Cost (USD) | +|-----------|--------------|---------|-----------------| +| **CPU** | AMD EPYC 9374F (32C/64T, 3.85 GHz) | RTSP I/O, ByteTrack, behavior analysis, overflow decode. 72 cores needed for 800 cams → 32C with HT (64T) covers it with headroom. | $2,500–3,000 | +| **Motherboard** | Supermicro H13SSL-N or equiv. (SP5 socket) | Single-socket EPYC, 2× PCIe Gen5 x16 for dual V100 | $500–700 | +| **RAM** | 128 GB DDR5-4800 ECC RDIMM (4×32 GB) | Ring buffers (~3 frames × 1080p × 800 cams ≈ 15 GB), clip buffers (~240 MB per 100 tracked persons), batch queues, OS overhead | $400–500 | +| **GPU 0** | NVIDIA V100 32 GB (already owned) | Tier 1: NVDEC decode (24 streams) + YOLOv26-S-Pose inference | — | +| **GPU 1** | NVIDIA V100 32 GB (already owned) | Tier 2: NVDEC decode (24 streams) + RF-DETR + X3D-S + YOLOE-26 | — | +| **NIC** | Mellanox ConnectX-5 25 GbE (dual-port) | 800 cameras × ~1 Mbps = 800 Mbps sustained. 25 GbE provides 3× headroom. Dual-port for redundancy. | $150–200 | +| **Network Switch** | 10/25 GbE managed switch (if cameras are IP-based) | Aggregate camera traffic. May need multiple switches for 800 cameras. | $500–2,000 (varies) | +| **Boot SSD** | 512 GB NVMe (PCIe Gen4) | OS (Ubuntu 22.04/24.04), CUDA toolkit, Python env, model weights (~5 GB total) | $50–70 | +| **Data SSD** | 2 TB NVMe (Samsung 990 Pro or Micron 7450) | MongoDB data directory (WiredTiger engine), alert clip buffer (10-sec clips per alert) | $150–200 | +| **Archive HDD** | 2× 8 TB HDD (RAID 1 mirror) | Long-term evidence storage. At 100 alerts/day × 10-sec clip × 5 MB = 500 MB/day → 8 TB lasts ~16,000 days. | $240–300 | +| **PSU** | 1,200W 80+ Platinum (redundant if rackmount) | 2× V100 (300W each) + EPYC 9374F (320W) + drives + fans = ~1,000W peak | $200–300 | +| **Chassis** | 4U rackmount server (e.g., Supermicro 4124GS-TNR) | Dual GPU cooling, sufficient airflow for V100 TDP | $300–500 | +| **UPS** | 1,500VA online UPS | Protect against power loss during inference + MongoDB writes | $300–400 | +| | | | | +| **Total (excl. V100s)** | | | **$5,300–8,200** | +| **Total (incl. V100s at ~$3,000 each used)** | | | **$11,300–14,200** | + +#### MongoDB Sizing + +| Cameras | Detections/sec (avg 5 persons/frame) | Crops/sec | Write Throughput | Daily Storage | MongoDB Config | +|---------|--------------------------------------|-----------|-----------------|---------------|---------------| +| 100 | 500 | 500 | ~5 MB/s | ~430 GB | Single node, WiredTiger, NVMe | +| 300 | 1,500 | 1,500 | ~15 MB/s | ~1.3 TB | Single node, NVMe, compression | +| 500 | 2,500 | 2,500 | ~25 MB/s | ~2.2 TB | Replica set (3 nodes) | +| 800 | 4,000 | 4,000 | ~40 MB/s | ~3.5 TB | Sharded cluster (2 shards) | + +> **Storage note:** At 800 cameras, you generate ~3.5 TB/day of crop images. Implement a **TTL index** on MongoDB to auto-delete crops older than 7–30 days, or archive to cold storage (HDD/S3). + +#### Power & Cooling + +| Component | TDP / Draw | Notes | +|-----------|-----------|-------| +| 2× V100 32 GB | 600W (300W each) | Requires active cooling, 250W sustained typical | +| EPYC 9374F | 320W | High-clock SKU, sustained ~250W under load | +| NVMe SSDs (×2) | 15W | Negligible | +| HDDs (×2) | 20W | Negligible | +| NIC + fans + misc | 45W | — | +| **Total system** | **~1,000W sustained** | Peak ~1,100W | +| **Cooling** | ~3,400 BTU/hr | Standard 4U rackmount cooling sufficient | + +--- + +### 12.4 Spec B — Without Behavior Detection (Detection + Crop + MongoDB Only) + +This configuration runs YOLOv26 for object detection and bounding box extraction only. No pose estimation, no tracking, no fighting/stealing/tawuran analysis. No Tier 2 models. + +#### Processing Pipeline (Simplified) + +``` +Camera RTSP → NVDEC (GPU decode) → GPU Memory → YOLOv26-S (Tensor Cores) + │ + bbox + class + confidence + │ + crop regions from frame + │ + JPEG encode → MongoDB +``` + +#### GPU Allocation + +| | GPU 0 (V100 #1) | GPU 1 (V100 #2) | +|--|-----------------|-----------------| +| **NVDEC** | Cameras 1–24 | Cameras 25–48 | +| **Inference** | YOLOv26-S (detection only, no pose) | YOLOv26-S (overflow / load balance) | +| **Role** | Primary detection | Overflow detection (or idle) | + +> **Option:** Run both V100s for Tier 1 detection to double throughput, or leave GPU 1 idle to save power (~300W). + +#### VRAM Budget (Single GPU Mode) + +| Component | GPU 0 | GPU 1 (idle or overflow) | +|-----------|-------|--------------------------| +| NVDEC decode buffers | 0.3 GB | 0.3 GB (if used) | +| YOLOv26-S weights (TensorRT FP16) | 0.6 GB | 0.6 GB (if used) | +| CUDA context | 0.8 GB | 0.8 GB (if used) | +| Batch buffers (batch=16) | 0.5 GB | 0.5 GB (if used) | +| **Total used** | **2.2 GB** | **2.2 GB** | +| **Free** | **29.8 GB** | **29.8 GB** | + +#### Full Bill of Materials + +| Component | Specification | Purpose | Est. Cost (USD) | +|-----------|--------------|---------|-----------------| +| **CPU** | AMD EPYC 9274F (24C/48T, 4.05 GHz) or Intel Xeon w5-2465X (16C/32T) | RTSP I/O, overflow decode, JPEG encode, MongoDB writes. No tracking or behavior analysis. | $1,500–2,000 | +| **Motherboard** | Supermicro H13SSL-N or equiv. | Single-socket, 1–2× PCIe x16 | $500–700 | +| **RAM** | 64 GB DDR5-4800 ECC RDIMM (2×32 GB) | Ring buffers only (no clip buffers, no tracking history). 800 cams × 3 frames × 6 MB ≈ 14 GB. | $200–250 | +| **GPU** | 1× NVIDIA V100 32 GB (already owned) | NVDEC decode + YOLOv26-S inference. Second V100 optional for 2× throughput. | — | +| **NIC** | Intel X710-DA2 10 GbE (dual-port) | 500 cameras × ~1 Mbps = 500 Mbps. 10 GbE sufficient. | $80–120 | +| **Boot SSD** | 512 GB NVMe | OS + model weights | $50–70 | +| **Data SSD** | 2 TB NVMe | MongoDB data directory | $150–200 | +| **Archive HDD** | 1× 8 TB HDD | Long-term crop storage (optional) | $120–150 | +| **PSU** | 850W 80+ Gold | 1× V100 (300W) + EPYC 9274F (250W) + overhead | $120–150 | +| **Chassis** | 4U rackmount or tower workstation | Single GPU cooling | $200–400 | +| **UPS** | 1,000VA online UPS | Power protection | $200–250 | +| | | | | +| **Total (excl. V100)** | | | **$3,100–5,100** | +| **Total (incl. 1× V100 at ~$3,000 used)** | | | **$6,100–8,100** | + +--- + +### 12.5 Comprehensive Comparison + +| Specification | **With Behavior Detection** | **Without Behavior Detection** | +|--------------|---------------------------|-------------------------------| +| | *Fighting + Stealing + Tawuran* | *Detection + Crop + Save only* | +| | | | +| **CPU** | EPYC 9374F (32C/64T) | EPYC 9274F (24C/48T) | +| **CPU Cores needed** | ~72 (800 cams) | ~45 (800 cams) | +| **RAM** | 128 GB DDR5 ECC | 64 GB DDR5 ECC | +| **GPUs active** | 2× V100 32 GB | 1× V100 32 GB | +| **GPU 0 role** | Tier 1: NVDEC + YOLOv26-Pose | NVDEC + YOLOv26-S | +| **GPU 1 role** | Tier 2: NVDEC + RF-DETR + X3D-S + YOLOE | Idle (or overflow) | +| **GPU VRAM used** | 2.6 GB + 6.2 GB = 8.8 GB | 2.2 GB (single GPU) | +| **GPU VRAM free** | 29.4 + 25.8 = 55.2 GB | 29.8 GB | +| **NIC** | 25 GbE | 10 GbE | +| **Data SSD** | 2 TB NVMe | 2 TB NVMe | +| **PSU** | 1,200W Platinum | 850W Gold | +| **System power** | ~1,000W sustained | ~600W sustained | +| **Cooling** | ~3,400 BTU/hr | ~2,050 BTU/hr | +| | | | +| **Max cameras (1 FPS, batch=16)** | **800–1,120** | **1,120–2,240** | +| **Bottleneck** | GPU 1 (Tier 2 at high trigger rates) | GPU 0 (Tier 1 compute) | +| | | | +| **Models loaded** | YOLOv26-Pose + RF-DETR + X3D-S + YOLOE | YOLOv26-S only | +| **Tracking** | ✅ ByteTrack (person identity across frames) | ❌ No tracking | +| **Fighting detection** | ✅ Keypoint velocity + proximity | ❌ | +| **Stealing detection** | ✅ Multi-model confirmation | ❌ | +| **Tawuran detection** | ✅ Crowd density + convergence | ❌ | +| **Temporal analysis** | ✅ X3D-S / SlowFast on video clips | ❌ | +| **Zero-shot detection** | ✅ YOLOE-26 text prompts | ❌ | +| | | | +| **Cost (excl. V100s)** | **$5,300–8,200** | **$3,100–5,100** | +| **Cost (incl. V100s)** | **$11,300–14,200** | **$6,100–8,100** | +| **Cost difference** | — | **Saves $5,200–6,100** | + +### 12.6 Scaling Guide — When to Upgrade + +| Camera Count | Config Needed | CPU | RAM | GPUs | Notes | +|-------------|--------------|-----|-----|------|-------| +| **1–100** | Minimal | 16C (Xeon w5-2445) | 32 GB | 1× V100 | Single GPU handles everything | +| **100–300** | Standard | 24C (EPYC 9274F) | 64 GB | 1× V100 | Add behavior detection with same GPU | +| **300–600** | Recommended | 32C (EPYC 9374F) | 128 GB | 2× V100 | Full hybrid pipeline | +| **600–1,000** | Full | 32C (EPYC 9374F) | 128 GB | 2× V100 | Optimize batch size, reduce trigger rate | +| **1,000–2,000** | Scale-out | 64C (EPYC 9554) | 256 GB | 4× V100 or 2× A100 | Second server or larger GPU | +| **2,000+** | Distributed | Multi-server | 256+ GB each | GPU per server | Kubernetes / distributed inference | + +### 12.7 Network Infrastructure + +| Cameras | Bandwidth (1 FPS, H.264) | NIC Required | Switch Requirement | +|---------|-------------------------|-------------|-------------------| +| 100 | ~100 Mbps | 1 GbE (sufficient) | Standard managed switch | +| 300 | ~300 Mbps | 10 GbE | 10 GbE aggregation switch | +| 500 | ~500 Mbps | 10 GbE | 10 GbE with LACP bonding | +| 800 | ~800 Mbps | 25 GbE | 25 GbE aggregation | +| 1,000+ | ~1 Gbps+ | 25 GbE (dual-port) | 25 GbE with redundancy | + +> **RTSP bandwidth note:** Each 1080p H.264 stream at 1 FPS uses ~0.5–1.5 Mbps depending on scene complexity and I-frame interval. The estimates above use ~1 Mbps average. + +### 12.8 MongoDB Storage Planning + +| Cameras | Crops/day (5 persons/frame avg) | Storage/day (50 KB avg crop) | 30-day retention | Recommended | +|---------|-------------------------------|-----------------------------|--------------------|-------------| +| 100 | 432,000 | 21 GB | 630 GB | 1 TB NVMe | +| 300 | 1,296,000 | 63 GB | 1.9 TB | 2 TB NVMe | +| 500 | 2,160,000 | 105 GB | 3.2 TB | 4 TB NVMe | +| 800 | 3,456,000 | 168 GB | 5.0 TB | 2× 4 TB NVMe (RAID 0) | + +> **Recommendation:** Set a MongoDB **TTL index** to auto-expire documents after 7–30 days. Archive flagged alerts (with behavior detections) to cold storage before expiry. + +## 13. V100 32 GB Deployment Estimate (2× GPUs, 1 FPS per Camera) + +### 13.1 Baseline Latency on V100 + +V100 delivers ~1.5–2× the FP16 throughput of T4 (125 vs 65 TFLOPS). All estimates use **TensorRT FP16**. + +| Model | T4 Benchmark | V100 Estimated | Per-inference VRAM | +|-------|-------------|----------------|-------------------| +| YOLOv26-S-Pose | 2.6 ms | **~1.5 ms** | ~0.8 GB (weights) | +| YOLOv26-M-Pose | 4.7 ms | **~2.8 ms** | ~1.5 GB | +| RF-DETR-M | 4.4 ms | **~2.7 ms** | ~2.5 GB | +| RF-DETR-L | 6.8 ms | **~4.2 ms** | ~3.2 GB | +| SlowFast R50 | 80–120 ms | **~50–80 ms** | ~1.5 GB | +| X3D-S | 40–60 ms | **~25–40 ms** | ~0.8 GB | +| YOLOE-26-S | 2.6 ms | **~1.5 ms** | ~1.0 GB | + +### 13.2 Scenario (a): YOLOv26-Pose Only (Tier 1 Always-On) + +**GPU 0 only.** GPU 1 idle. Detects: fighting, tawuran (no stealing confirmation). + +| Model | Latency/frame | GPU 0 Budget: 1000 ms | GPU utilization | +|-------|--------------|----------------------|-----------------| +| YOLOv26-S-Pose | 1.5 ms | 1000 / 1.5 = **666 frames/sec** | — | + +**VRAM Allocation (GPU 0):** + +| Component | VRAM | +|-----------|------| +| YOLOv26-S-Pose weights | 0.8 GB | +| CUDA context | 0.8 GB | +| Batch buffer (batch=32, 640×640×3×FP16) | 0.8 GB | +| **Total** | **2.4 GB** | +| **Free** | **29.6 GB** | + +| Batch Size | Throughput (frames/sec) | Practical (70% util) | **Max Cameras (1 FPS)** | +|-----------|------------------------|---------------------|------------------------| +| 1 | 666 | 466 | **466** | +| 8 | ~1,200 | 840 | **840** | +| 16 | ~1,600 | 1,120 | **1,120** | +| 32 | ~1,900 | 1,330 | **1,330** | + +> **With 2× V100 both running YOLOv26-Pose:** double all numbers → **2,240–2,660 cameras** at batch=16–32. + +### 13.3 Scenario (b): YOLOv26-Pose + RF-DETR Hybrid (10–20% Trigger) + +**GPU 0:** YOLOv26-S-Pose (always-on) +**GPU 1:** RF-DETR-M (on-demand, triggered by 10–20% of frames) + +**VRAM Allocation:** + +| | GPU 0 | GPU 1 | +|--|-------|-------| +| YOLOv26-S-Pose | 0.8 GB | — | +| RF-DETR-M | — | 2.5 GB | +| YOLOE-26-S (lazy) | — | 1.0 GB | +| CUDA context | 0.8 GB | 0.8 GB | +| Batch buffers | 0.8 GB | 0.6 GB | +| **Total** | **2.4 GB** | **4.9 GB** | +| **Free** | **29.6 GB** | **27.1 GB** | + +**Throughput Calculation:** + +GPU 0 bottleneck (Tier 1 — determines max cameras): + +| Batch | YOLOv26-S-Pose throughput | 70% util | Max cameras | +|-------|--------------------------|----------|-------------| +| 8 | 1,200 fps | 840 | **840** | +| 16 | 1,600 fps | 1,120 | **1,120** | +| 32 | 1,900 fps | 1,330 | **1,330** | + +GPU 1 bottleneck (Tier 2 — must keep up with trigger rate): + +| Cameras | Trigger Rate | Tier 2 frames/sec | RF-DETR-M capacity (370 fps) | Headroom | +|---------|-------------|-------------------|------------------------------|----------| +| 500 | 10% | 50 fps | 370 fps | ✅ 7.4× | +| 500 | 20% | 100 fps | 370 fps | ✅ 3.7× | +| 800 | 10% | 80 fps | 370 fps | ✅ 4.6× | +| 800 | 20% | 160 fps | 370 fps | ✅ 2.3× | +| 1,000 | 20% | 200 fps | 370 fps | ✅ 1.8× | +| 1,330 | 20% | 266 fps | 370 fps | ✅ 1.4× | + +> **Tier 2 is never the bottleneck** at these camera counts and trigger rates. GPU 1 has massive headroom. + +**Final capacity for Scenario (b):** + +| Batch | **Max Cameras (1 FPS)** | Bottleneck | +|-------|------------------------|------------| +| 8 | **840** | GPU 0 (Tier 1) | +| 16 | **1,120** | GPU 0 (Tier 1) | +| 32 | **1,330** | GPU 0 (Tier 1) | + +### 13.4 Scenario (c): Full Pipeline (YOLOv26-Pose + RF-DETR + SlowFast) + +**GPU 0:** YOLOv26-S-Pose (always-on) +**GPU 1:** RF-DETR-M + SlowFast R50 + YOLOE-26-S (on-demand, time-shared) + +**VRAM Allocation:** + +| | GPU 0 | GPU 1 | +|--|-------|-------| +| YOLOv26-S-Pose | 0.8 GB | — | +| RF-DETR-M | — | 2.5 GB | +| SlowFast R50 | — | 1.5 GB | +| YOLOE-26-S | — | 1.0 GB | +| CUDA context | 0.8 GB | 0.8 GB | +| Batch buffers | 0.8 GB | 1.0 GB | +| **Total** | **2.4 GB** | **6.8 GB** | +| **Free** | **29.6 GB** | **25.2 GB** | + +> VRAM is comfortable even with all 3 Tier 2 models loaded simultaneously. + +**Throughput — GPU 1 becomes the constraint when SlowFast is active:** + +SlowFast is expensive (~50–80 ms per clip). The question is how often it triggers. + +| Trigger Source | Rate | SlowFast calls/sec | Time consumed | +|---------------|------|-------------------|---------------| +| Fighting uncertain (need temporal confirm) | 2% of cameras | At 800 cams: 16/sec | 16 × 60ms = **960 ms** ⚠️ | +| Stealing suspicious | 5% of cameras | At 800 cams: 40/sec | 40 × 60ms = **2,400 ms** ❌ | + +> **SlowFast at 5% trigger rate on 800 cameras would exceed GPU 1's 1-second budget.** Solutions: + +| Solution | Effect | +|----------|--------| +| **Reduce SlowFast trigger rate** to <2% | 800 × 2% = 16 calls/sec × 60ms = 960 ms ✅ fits | +| **Use X3D-S instead of SlowFast** | 25–40 ms vs 50–80 ms → 2× more capacity | +| **Batch SlowFast clips** | Batch=4 clips → ~120 ms total vs 4×60ms = 240 ms | +| **Time-share with RF-DETR** | RF-DETR handles most triggers; SlowFast only for uncertain cases | + +**Practical capacity with mixed workload on GPU 1:** + +Assume: RF-DETR handles 15% of triggers, SlowFast handles 2%, YOLOE handles 3%. + +| Cameras | RF-DETR (15%) | SlowFast (2%) | YOLOE (3%) | Total GPU 1 time/sec | Feasible? | +|---------|-------------|--------------|------------|---------------------|-----------| +| 400 | 60 × 2.7ms = 162ms | 8 × 60ms = 480ms | 12 × 1.5ms = 18ms | **660 ms** | ✅ | +| 600 | 90 × 2.7ms = 243ms | 12 × 60ms = 720ms | 18 × 1.5ms = 27ms | **990 ms** | ✅ Tight | +| 800 | 120 × 2.7ms = 324ms | 16 × 60ms = 960ms | 24 × 1.5ms = 36ms | **1,320 ms** | ❌ Over budget | + +**With X3D-S instead of SlowFast (25ms instead of 60ms):** + +| Cameras | RF-DETR (15%) | X3D-S (2%) | YOLOE (3%) | Total GPU 1 time/sec | Feasible? | +|---------|-------------|-----------|------------|---------------------|-----------| +| 600 | 243ms | 12 × 25ms = 300ms | 27ms | **570 ms** | ✅ | +| 800 | 324ms | 16 × 25ms = 400ms | 36ms | **760 ms** | ✅ | +| 1,000 | 405ms | 20 × 25ms = 500ms | 45ms | **950 ms** | ✅ Tight | + +**Final capacity for Scenario (c):** + +| Config | Batch 16 | **Max Cameras** | Bottleneck | +|--------|---------|----------------|------------| +| SlowFast R50, mixed triggers | 16 | **~600** | GPU 1 (SlowFast) | +| X3D-S (recommended), mixed triggers | 16 | **~800–1,000** | GPU 1 (X3D-S) | +| X3D-S, conservative triggers (1%) | 16 | **~1,120** | GPU 0 (Tier 1) | + +### 13.5 Summary — Camera Capacity (2× V100 32 GB, 1 FPS) + +| Scenario | Batch=8 | Batch=16 | Batch=32 | Bottleneck | +|----------|---------|---------|---------|------------| +| **(a) YOLOv26-Pose only** | 840 | 1,120 | 1,330 | GPU 0 compute | +| **(b) + RF-DETR hybrid (20% trigger)** | 840 | 1,120 | 1,330 | GPU 0 compute | +| **(c) Full pipeline + SlowFast** | ~450 | ~600 | ~700 | GPU 1 (SlowFast) | +| **(c) Full pipeline + X3D-S** | ~650 | ~800–1,000 | ~1,100 | GPU 1 (X3D-S) | + +> **Key takeaway:** At 1 FPS, the V100 GPUs are not the bottleneck for scenarios (a) and (b). The real constraints are: +> 1. **CPU decode** (need 64+ cores for 800+ RTSP streams) +> 2. **Network bandwidth** (800 cameras × 1 Mbps = 800 Mbps → need 10–25 GbE) +> 3. **SlowFast latency** in scenario (c) — mitigated by using X3D-S instead +> 4. **MongoDB write throughput** at 2,000+ docs/sec — use async bulk writes + +--- + +## 14. Pipeline Scenario Analysis — YOLO vs RF-DETR with Behavior Detection + +### 14.1 Candidate Pipeline Scenarios + +Two base pipeline architectures are evaluated for integration with behavior detection. Both capture at **1 FPS per camera** and detect **multiple object classes** — not just persons. + +#### Target Detection Classes + +| Category | Objects | Notes | +|----------|---------|-------| +| **Person** | People (pedestrians, staff, intruders) | Primary target for behavior detection | +| **Vehicle** | Car, truck, bus, motorcycle, bicycle | Parking, traffic monitoring, suspicious vehicles | +| **Bag/Luggage** | Backpack, handbag, suitcase | Unattended bag detection, theft evidence | +| **Weapon** | Knife, gun (requires fine-tuning for many weapon types) | Critical security objects | +| **Animal** | Dog, cat, bird, horse, etc. | Stray animal detection, restricted area intrusion | +| **Other** | Umbrella, cell phone, laptop, etc. | Context-dependent objects | + +> **COCO pretrained models** (both YOLO and RF-DETR) detect **80 object classes** out of the box. Custom classes (specific weapon types, uniform types) require fine-tuning. + +#### Scenario 1 — YOLOv26-Pose Pipeline + +``` +Thread per CCTV stream (capture frame at 1 FPS) + → Save frame in shared memory buffer + → Pool/batch frames for YOLO detection pipeline + → Get bounding boxes (object detection: person, vehicle, bag, weapon, animal, etc.) + → Crop bounding box regions and save as images + → Pool/batch cropped images for async save to MongoDB +``` + +**What YOLO Pose provides per frame:** +- Bounding boxes for **all 80 COCO classes** (person, car, truck, dog, backpack, knife, etc.) +- Class labels + confidence scores for every detected object +- **17 body keypoints** (nose, eyes, shoulders, elbows, wrists, hips, knees, ankles) **for person class only** +- Keypoint confidence scores per keypoint + +> **Key point:** YOLOv26-Pose is NOT person-only. It detects all object classes like standard YOLO, but **additionally** outputs body keypoints for every detected person. The pose head adds negligible latency (~0.1 ms). + +#### Scenario 2 — RF-DETR Pipeline + +``` +Thread per CCTV stream (capture frame at 1 FPS) + → Save frame in shared memory buffer + → Pool/batch frames for RF-DETR detection pipeline + → Get bounding boxes (object detection: person, vehicle, bag, weapon, animal, etc.) + → Crop bounding box regions and save as images + → Pool/batch cropped images for async save to MongoDB +``` + +**What RF-DETR provides per frame:** +- Bounding boxes for **all 80 COCO classes** (same classes as YOLO) +- Class labels + confidence scores +- **Superior small object detection** (bags, weapons, distant animals are better detected) +- **No keypoints, no pose data** for any class + +### 14.2 Key Difference — Output Capabilities + +Both models detect the **same object classes**. The difference is what *extra* information they provide: + +| Output | YOLOv26-Pose | RF-DETR | +|--------|-------------|---------| +| **Multi-class detection** (person, vehicle, bag, weapon, animal) | ✅ 80 COCO classes | ✅ 80 COCO classes | +| Bounding boxes + confidence | ✅ | ✅ | +| **17 body keypoints** (person class only) | ✅ | ❌ | +| Keypoint confidence scores | ✅ | ❌ | +| **Small object detection** (< 32×32 px: distant bags, weapons, animals) | Good | **Superior** (+7 AP) | +| Person detection (medium-large) | >90% AP | >93% AP | +| Vehicle detection | >85% AP | >88% AP | +| Bag/weapon detection (typically small) | Moderate | **Better** (deformable attention) | +| Inference latency (V100 TensorRT FP16) | **~1.5 ms** | ~2.7 ms | + +#### Impact on Behavior Detection + +| Behavior | What's Needed | YOLOv26-Pose | RF-DETR | +|----------|--------------|-------------|---------| +| **Fighting** | Person keypoints (arm velocity, proximity) | ✅ Built-in | ❌ Needs second model | +| **Tawuran** | Person keypoints + crowd count | ✅ Built-in | ⚠️ Count only (no pose) | +| **Stealing** | Hand-to-object proximity (keypoints + bag/object bbox) | ✅ Hand keypoints + bag bbox in same pass | ⚠️ Bag bbox only, no hand position | +| **Unattended bag** | Bag bbox without nearby person bbox | ✅ | ✅ (both detect bags) | +| **Suspicious vehicle** | Vehicle bbox + loitering time | ✅ | ✅ (both detect vehicles) | +| **Animal intrusion** | Animal bbox in restricted zone | ✅ | ✅ (both detect animals) | + +**Critical implication:** For behaviors requiring **only bounding boxes** (unattended bag, vehicle loitering, animal intrusion), both models work equally well. For behaviors requiring **body keypoints** (fighting, tawuran, stealing), RF-DETR cannot do it alone — you must add YOLO Pose as a second model, doubling inference cost. + +> **This is why YOLO Pose is recommended as Tier 1:** it handles ALL detection classes AND provides keypoints for person-specific behavior analysis in a single inference pass. RF-DETR's small object advantage is best leveraged on-demand (Tier 2) to confirm small objects like weapons, bags, or distant persons that YOLO may have missed. + +--- + +### 14.3 SlowFast vs YOLO Pose for Behavior Detection at 1 FPS + +#### How SlowFast Works + +SlowFast is a **video-level temporal action recognition** model. It requires a **clip** (sequence of frames) as input: + +| Pathway | Purpose | Typical Sampling | What Happens at 1 FPS | +|---------|---------|-----------------|----------------------| +| **Slow pathway** | Spatial semantics (what is happening) | 8 frames, stride 8 → 2.1s at 30 FPS | 8 frames = **8 seconds** of context | +| **Fast pathway** | Rapid motion capture (how it moves) | 32 frames, stride 2 → 2.1s at 30 FPS | 32 frames = **32 seconds** of context | + +#### The Problem: Fast Pathway is Useless at 1 FPS + +The fast pathway is designed to capture **rapid temporal changes** — a fist swing (~0.3s), a grab (~0.5s), a sudden lunge (~0.2s). At 1 FPS, these events happen **between** frames and are never captured. The fast pathway receives what is essentially a slideshow with no useful motion signal. + +#### Comparison: SlowFast vs YOLO Pose at 1 FPS + +| Factor | YOLO Pose (Recommended) | SlowFast | +|--------|------------------------|----------| +| **Works at 1 FPS?** | ✅ Yes — single-frame keypoints | ❌ Poorly — fast pathway is blind | +| **Latency per inference** | ~1.5 ms (single frame) | ~60 ms (8–32 frame clip) | +| **Memory overhead** | Zero buffering | Must buffer 8–32 frames per tracked person (~2.4 MB/person) | +| **Fighting detection** | Keypoint proximity + inter-frame velocity | Clip-level action class (degraded accuracy at 1 FPS) | +| **Tawuran detection** | Crowd density + centroid convergence | Could classify "crowd violence" but overkill | +| **Stealing detection** | Hand-object proximity heuristic | Needs additional model regardless | +| **Pipeline complexity** | Simple — inline with detection (one model) | Complex — clip buffer, separate inference, temporal alignment | +| **Accuracy at 1 FPS** | Good — poses are spatially informative | **Degraded** — temporal signal too sparse | +| **GPU cost (always-on)** | 1.5 ms/frame | 60 ms/clip + buffering VRAM | + +#### When SlowFast Does Make Sense + +SlowFast becomes valuable only with **temporarily increased frame rate** for suspicious cameras: + +``` +Normal operation: Camera at 1 FPS → YOLO Pose → "suspicious pose detected" +Triggered mode: Camera bumps to 15 FPS for 3 seconds → SlowFast confirms/denies + (45 frames captured → proper temporal signal for both pathways) +``` + +This is a valid **Tier 2 confirmation strategy** but not a primary detector at 1 FPS. + +#### Verdict + +> **At 1 FPS, YOLO Pose is strictly superior to SlowFast for behavior detection.** SlowFast's core architectural advantage (dual-pathway temporal modeling) is neutralized by the sparse frame rate. YOLO Pose provides spatially rich keypoint data on every single frame with no buffering overhead. +> +> **Recommendation:** Use SlowFast only as an optional Tier 2 confirmer when the camera can temporarily increase to 15+ FPS upon trigger. For the always-on pipeline at 1 FPS, rely on YOLO Pose keypoint analysis. + +--- + +### 14.4 RF-DETR as On-Demand (Tier 2) — Rationale + +#### RF-DETR's Small Object Advantage + +RF-DETR uses **deformable attention** that focuses on arbitrary-scale features. This gives it a significant edge on small objects: + +| Model | AP_small (< 32×32 px) | AP_medium | AP_large | +|-------|----------------------|----------|---------| +| RF-DETR-M | **~37** | ~58 | ~71 | +| YOLOv26-S | ~22 | ~52 | ~68 | +| YOLOv26-M | ~30 | ~56 | ~70 | + +#### Why Small Object Advantage Doesn't Help for Always-On Behavior Detection + +COCO "small" = **< 32×32 pixels**. In surveillance terms: + +| Camera Setup | Person Size | COCO Category | Can Analyze Behavior? | +|-------------|------------|---------------|----------------------| +| 1080p, person at 5m | ~300×600 px | Large | ✅ Yes — full pose visible | +| 1080p, person at 15m | ~100×200 px | Medium | ✅ Yes — keypoints detectable | +| 1080p, person at 30m | ~50×100 px | Medium | ⚠️ Limited — coarse pose only | +| 1080p, person at 50m+ | ~25×50 px | **Small** | ❌ No — blurry blob, no useful pose | + +> **Key insight:** If a person is small enough that YOLO misses it but RF-DETR detects it, that person is too small for behavior analysis anyway. There aren't enough pixels to determine fighting, stealing, or tawuran. + +#### Where RF-DETR's Strength IS Valuable (On-Demand) + +RF-DETR excels when triggered to confirm specific events: + +| On-Demand Task | Why RF-DETR is Better | +|---------------|----------------------| +| **Stolen object detection** | Bags, phones, wallets are small objects — RF-DETR's sweet spot | +| **Weapon detection** | Knives, guns are small — RF-DETR detects more reliably | +| **Precise person-object interaction** | Higher AP means fewer false negatives on critical frames | +| **Distant crowd counting** | For tawuran, counting heads at distance where YOLO may miss some | + +#### Cost Analysis: Always-On vs On-Demand + +| RF-DETR Mode | Per-Frame Cost | At 800 Cameras | GPU Utilization | +|-------------|---------------|----------------|----------------| +| **Always-on (every frame)** | 2.7 ms/frame | 2,160 ms/sec (needs full GPU) | ~100% of GPU 1 | +| **On-demand (5% trigger rate)** | 2.7 ms × 5% = **0.14 ms/frame** | 108 ms/sec | **~5% of GPU 1** | +| **On-demand (20% trigger rate)** | 2.7 ms × 20% = **0.54 ms/frame** | 432 ms/sec | **~20% of GPU 1** | + +Running RF-DETR on-demand at a 5% trigger rate uses **~95% less GPU** than always-on, while still providing high-accuracy confirmation exactly when it matters. + +#### The On-Demand Trigger Flow + +``` +YOLO Pose (always-on, every frame, ~1.5 ms) + │ + ├── 95% of frames: normal activity + │ └── Crop → MongoDB (done, no Tier 2 needed) + │ + └── 5% of frames: suspicious activity detected + │ (e.g., aggressive pose, hand near another's bag, + │ abnormal crowd convergence) + │ + └── RF-DETR (on-demand, ~2.7 ms, this frame only) + │ + ├── Confirm: stolen object in hand? + ├── Confirm: weapon detected? + ├── Confirm: precise person count in crowd? + │ + └── If confirmed → Alert + Evidence saved + If denied → Suppress false alarm +``` + +> **Verdict:** RF-DETR should be **on-demand (Tier 2)**, not always-on. Its small object strength is most valuable for confirming specific detections (stolen objects, weapons), not for primary surveillance scanning. Running it always-on wastes GPU and provides no behavior detection capability without a second model. + +--- + +### 14.5 Recommended Architecture — Final Pipeline + +Based on the analysis in Sections 14.1–14.4, the recommended architecture is: + +- **Tier 1 (always-on):** YOLOv26-S-Pose — detection + pose in a single 1.5 ms pass +- **Tier 2 (on-demand):** RF-DETR-M — high-accuracy confirmation for suspicious events +- **Behavior analysis:** CPU-side keypoint math (fighting, tawuran) + RF-DETR object confirmation (stealing) +- **SlowFast:** Optional Tier 2 only if camera can temporarily increase to 15+ FPS + +#### Complete Pipeline Flowchart + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ CAPTURE LAYER │ +│ │ +│ Thread per CCTV stream (1 FPS capture) │ +│ → RTSP connection (TCP, persistent) │ +│ → NVDEC hardware decode (cameras 1–48 on GPU, rest on CPU) │ +│ → Frame saved to shared memory ring buffer (3 slots per camera) │ +│ → Backpressure: drop-oldest if buffer full │ +└──────────────────────────────┬──────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────┐ +│ TIER 1 — ALWAYS-ON (GPU 0, every frame, every camera) │ +│ │ +│ Pool/batch frames (batch_size=16) │ +│ → YOLOv26-S-Pose inference (~1.5 ms/frame, TensorRT FP16) │ +│ → Output per frame: │ +│ • Bounding boxes for ALL classes (person, vehicle, bag, animal...) │ +│ • Class labels + confidence scores for every detected object │ +│ • 17 body keypoints per PERSON (with confidence per keypoint) │ +│ │ +│ ┌─────────────────────────────────────────────────────────────────────┐ │ +│ │ OBJECT-LEVEL PROCESSING (all detected objects) │ │ +│ │ │ │ +│ │ For ALL classes: │ │ +│ │ • Crop bounding box → JPEG encode → batch for MongoDB │ │ +│ │ • Store metadata: class, confidence, bbox, camera_id, timestamp │ │ +│ │ │ │ +│ │ For VEHICLES: │ │ +│ │ • Track vehicle bbox across frames (loitering detection) │ │ +│ │ • Restricted zone violation (bbox inside forbidden region) │ │ +│ │ │ │ +│ │ For BAGS/LUGGAGE: │ │ +│ │ • Unattended bag: bag bbox with no person bbox within radius │ │ +│ │ │ │ +│ │ For ANIMALS: │ │ +│ │ • Restricted area intrusion: animal bbox in forbidden zone │ │ +│ └─────────────────────────────────────────────────────────────────────┘ │ +│ │ +│ ┌─────────────────────────────────────────────────────────────────────┐ │ +│ │ PERSON-SPECIFIC BEHAVIOR ANALYSIS (CPU, ~0.01 ms/person) │ │ +│ │ (uses keypoints — only available for person class) │ │ +│ │ │ │ +│ │ FightingDetector: │ │ +│ │ • Keypoint velocity between consecutive frames │ │ +│ │ • Inter-person proximity (wrist-to-head distance < threshold) │ │ +│ │ • Aggressive pose classification (raised arms, lunging torso) │ │ +│ │ │ │ +│ │ TawuranDetector: │ │ +│ │ • Crowd density (persons per m² exceeds threshold) │ │ +│ │ • Centroid convergence (people moving toward each other) │ │ +│ │ • Collective aggression score (% of crowd with fighting pose) │ │ +│ │ │ │ +│ │ StealingHeuristic (pre-screen): │ │ +│ │ • Hand keypoint proximity to detected bag/object bbox │ │ +│ │ • Unusual hand-to-bag/pocket trajectory │ │ +│ │ • Person-to-person hand interaction near object │ │ +│ └─────────────────────────────────────────────────────────────────────┘ │ +└──────────────┬──────────────────────────────────┬──────────────────────────┘ + │ │ + Normal (95%) Suspicious (5%) + │ │ + ▼ ▼ +┌──────────────────────────────┐ ┌──────────────────────────────────────────────┐ +│ STANDARD OUTPUT │ │ TIER 2 — ON-DEMAND (GPU 1, triggered only) │ +│ │ │ │ +│ Crop ALL detected objects │ │ RF-DETR-M inference (~2.7 ms/frame) │ +│ → JPEG encode │ │ → High-accuracy re-detection of scene │ +│ → Batch (100–500 docs) │ │ → Small object detection (bags, weapons, │ +│ → Async MongoDB write │ │ phones, knives — RF-DETR excels here) │ +│ (motor driver) │ │ → Detects objects YOLO may have missed │ +│ │ │ │ +│ Metadata saved per object: │ │ Confirmation Logic: │ +│ • camera_id │ │ • Stealing: object in hand + proximity │ +│ • timestamp │ │ • Weapon: object class = knife/gun/etc │ +│ • object_class (person, │ │ • Unattended bag: re-confirm no owner │ +│ vehicle, bag, animal...) │ │ • False alarm: RF-DETR sees no anomaly │ +│ • bbox coordinates │ │ → Suppress alert, save as normal frame │ +│ • confidence score │ │ │ +│ • person_count (per frame) │ │ If confirmed: │ +│ • vehicle_count │ │ → Alert (webhook / push notification) │ +│ • keypoints (person only) │ │ → Evidence clip saved (10-sec buffer) │ +│ │ │ → Behavior metadata → MongoDB │ +└──────────────────────────────┘ └──────────────────────────────────────────────┘ +``` + +#### Processing Timeline (single frame, single camera) + +``` +Time (ms): 0 1.5 1.51 1.52 4.22 + │ │ │ │ │ + ▼ ▼ ▼ ▼ ▼ + YOLOv26 Result Behavior Crop+Save RF-DETR + -Pose ready Analysis to MongoDB (only if + starts (CPU, (async, suspicious) + ~0.01ms) non-blocking) + +Normal frame total: ~1.52 ms (Tier 1 only) +Suspicious frame: ~4.22 ms (Tier 1 + Tier 2) +Blended average: ~1.52 + (0.05 × 2.7) = ~1.66 ms/frame +``` + +#### GPU Assignment + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ GPU 0 (V100 #1) — TIER 1: Always-On Detection + Pose │ +│ │ +│ NVDEC: cameras 1–24 (H.264 → GPU memory, zero-copy) │ +│ Model: YOLOv26-S-Pose (TensorRT FP16, 0.8 GB) │ +│ Batch: 16 frames → 16 × 1.5 ms = 24 ms → 667 cameras/sec │ +│ VRAM: 2.6 GB used / 29.4 GB free │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ GPU 1 (V100 #2) — TIER 2: On-Demand Confirmation │ +│ │ +│ NVDEC: cameras 25–48 (H.264 → GPU memory, zero-copy) │ +│ Model: RF-DETR-M (TensorRT FP16, 2.5 GB) │ +│ Load: 5% of frames → ~33–56 frames/sec (at 667–1120 cameras) │ +│ VRAM: 4.4 GB used / 27.6 GB free │ +│ │ +│ ⚡ ~95% idle — available for future models or scaling │ +└─────────────────────────────────────────────────────────────────┘ +``` + +--- + +### 14.6 Hardware Requirements — Scenario Comparison + +#### Scenario 1: YOLOv26-Pose (Tier 1) + RF-DETR On-Demand (Tier 2) — RECOMMENDED + +This is the full behavior detection pipeline with NVDEC zero-copy decode. + +| Component | Specification | Purpose | Est. Cost (USD) | +|-----------|--------------|---------|-----------------:| +| **CPU** | AMD EPYC 9374F (32C/64T, 3.85 GHz) | RTSP I/O, overflow decode (~0.09 core/cam with NVDEC), ByteTrack, behavior analysis | $2,500–3,000 | +| **Motherboard** | Supermicro H13SSL-N (SP5 socket) | Single-socket EPYC, 2× PCIe Gen5 x16 for dual V100 | $500–700 | +| **RAM** | 128 GB DDR5-4800 ECC RDIMM (4×32 GB) | Ring buffers, batch queues, tracking state, OS overhead | $400–500 | +| **GPU 0** | NVIDIA V100 32 GB *(already owned)* | Tier 1: NVDEC (24 streams) + YOLOv26-S-Pose (2.6 GB VRAM used) | — | +| **GPU 1** | NVIDIA V100 32 GB *(already owned)* | Tier 2: NVDEC (24 streams) + RF-DETR-M on-demand (4.4 GB VRAM used) | — | +| **NIC** | Mellanox ConnectX-5 25 GbE (dual-port) | 800 cameras × ~1 Mbps = 800 Mbps sustained | $150–200 | +| **Boot SSD** | 512 GB NVMe (PCIe Gen4) | OS, CUDA toolkit, Python env, model weights (~5 GB) | $50–70 | +| **Data SSD** | 2 TB NVMe (Samsung 990 Pro) | MongoDB data dir + alert clip buffer | $150–200 | +| **Archive HDD** | 2× 8 TB HDD (RAID 1) | Long-term evidence storage | $240–300 | +| **PSU** | 1,200W 80+ Platinum | 2× V100 (300W) + EPYC (320W) + overhead | $200–300 | +| **Chassis** | 4U rackmount server | Dual GPU cooling, sufficient airflow | $300–500 | +| **UPS** | 1,500VA online UPS | Power protection during writes | $300–400 | +| | | | | +| **Total (excl. V100s)** | | | **$4,800–6,200** | +| **Total (incl. V100s at ~$3K each)** | | | **$10,800–12,200** | + +**Capacity:** 800–1,120 cameras at 1 FPS with behavior detection (fighting, stealing, tawuran). + +#### Scenario 2: RF-DETR Always-On (No Behavior Detection) + +Detection + crop + save only. No pose, no behavior analysis, no Tier 2. + +| Component | Specification | Purpose | Est. Cost (USD) | +|-----------|--------------|---------|-----------------:| +| **CPU** | AMD EPYC 9274F (24C/48T, 4.05 GHz) | RTSP I/O, overflow decode, JPEG encode, MongoDB writes | $1,500–2,000 | +| **Motherboard** | Supermicro H13SSL-N (SP5 socket) | Single-socket EPYC | $500–700 | +| **RAM** | 64 GB DDR5-4800 ECC RDIMM (2×32 GB) | Ring buffers only (no clip buffers, no tracking state) | $200–250 | +| **GPU** | 1× NVIDIA V100 32 GB *(already owned)* | NVDEC (24 streams) + RF-DETR-M always-on (4.4 GB VRAM used) | — | +| **NIC** | Intel X710-DA2 10 GbE (dual-port) | 500 cameras × ~1 Mbps = sufficient | $80–120 | +| **Boot SSD** | 512 GB NVMe | OS + model weights | $50–70 | +| **Data SSD** | 2 TB NVMe | MongoDB data directory | $150–200 | +| **Archive HDD** | 1× 8 TB HDD | Crop storage (optional) | $120–150 | +| **PSU** | 850W 80+ Gold | 1× V100 (300W) + EPYC (250W) + overhead | $120–150 | +| **Chassis** | 4U rackmount or tower workstation | Single GPU cooling | $200–400 | +| **UPS** | 1,000VA online UPS | Power protection | $200–250 | +| | | | | +| **Total (excl. V100)** | | | **$3,100–4,300** | +| **Total (incl. 1× V100 at ~$3K)** | | | **$6,100–7,300** | + +**Capacity:** ~370 cameras at 1 FPS (RF-DETR-M at 2.7 ms/frame, batch=16). Detection + crop only, no behavior detection. + +> **Note on Scenario 2 throughput:** RF-DETR is 1.8× slower than YOLOv26-S per frame (2.7 ms vs 1.5 ms). If you use a single V100 with RF-DETR always-on, maximum cameras drops from ~667 (YOLO) to **~370** per GPU. Using both V100s for RF-DETR would recover to ~740, but then you have no GPU for Tier 2 confirmation. + +--- + +### 14.7 Side-by-Side Comparison + +| Specification | **Scenario 1 (Recommended)** | **Scenario 2** | +|--------------|------------------------------|----------------| +| | *YOLO Pose + RF-DETR on-demand* | *RF-DETR always-on, no behavior* | +| | | | +| **Primary model** | YOLOv26-S-Pose (1.5 ms) | RF-DETR-M (2.7 ms) | +| **Secondary model** | RF-DETR-M (on-demand, 5%) | None | +| **Detection classes** | 80 COCO (person, vehicle, bag, animal, etc.) | 80 COCO (same classes) | +| **Keypoints (person)** | ✅ 17 body keypoints per person | ❌ None | +| **Behavior analysis** | CPU keypoint math | ❌ Not available | +| | | | +| **CPU** | EPYC 9374F (32C/64T) | EPYC 9274F (24C/48T) | +| **RAM** | 128 GB DDR5 ECC | 64 GB DDR5 ECC | +| **GPUs active** | 2× V100 32 GB | 1× V100 32 GB | +| **NIC** | 25 GbE | 10 GbE | +| **PSU** | 1,200W Platinum | 850W Gold | +| **System power** | ~1,000W sustained | ~600W sustained | +| | | | +| **Max cameras (1 FPS)** | **800–1,120** | **~370** (1 GPU) / ~740 (2 GPU) | +| **Small object detection** (bags, weapons, animals at distance) | On-demand via RF-DETR (Tier 2) | ✅ Always-on | +| **Person detection AP** | ~90%+ (YOLO, sufficient) | ~93%+ (RF-DETR, higher) | +| **Vehicle detection** | ✅ (large objects, both models excel) | ✅ | +| **Bag/weapon detection** | ✅ YOLO detects + RF-DETR confirms small ones | ✅ Better for small/distant objects | +| **Animal detection** | ✅ | ✅ | +| | | | +| **Fighting detection** | ✅ Keypoint velocity + proximity | ❌ No keypoints | +| **Tawuran detection** | ✅ Crowd density + convergence | ❌ No keypoints | +| **Stealing detection** | ✅ Hand-to-bag keypoint + RF-DETR confirm | ❌ No hand position data | +| **Unattended bag** | ✅ Bag bbox + no nearby person bbox | ✅ Same logic, slightly better bag AP | +| **Vehicle loitering** | ✅ Track vehicle bbox across frames | ✅ Same capability | +| **Animal intrusion** | ✅ Animal bbox in restricted zone | ✅ Same capability | +| **Weapon detection** | ⚠️ YOLO detects + RF-DETR Tier 2 confirms | ✅ Better small weapon AP always-on | +| **False alarm suppression** | ✅ RF-DETR Tier 2 confirmation | ❌ No confirmation layer | +| | | | +| **Cost (excl. V100s)** | **$4,800–6,200** | **$3,100–4,300** | +| **Cost (incl. V100s)** | **$10,800–12,200** | **$6,100–7,300** | +| **Cost difference** | — | Saves $4,700–4,900 | +| | | | +| **Best for** | Full surveillance: multi-class detection + behavior analysis | Simple multi-class detection + crop + save | + +### 14.8 Final Recommendation + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ │ +│ ✅ RECOMMENDED: Scenario 1 — YOLOv26-Pose (Tier 1) + RF-DETR (Tier 2) │ +│ │ +│ • Detects ALL object classes (person, vehicle, bag, weapon, animal) │ +│ • ADDITIONALLY provides 17 body keypoints for every detected person │ +│ • One model handles multi-class detection + behavior analysis in ~1.5 ms │ +│ • RF-DETR confirms suspicious events on-demand (~5% of frames) │ +│ → excels at confirming small objects: bags, weapons, distant animals │ +│ • 800–1,120 cameras on 2× V100 at 1 FPS │ +│ • Full fighting, stealing, and tawuran detection │ +│ • Bbox-only behaviors (unattended bag, vehicle loitering, animal │ +│ intrusion) work with both models — no keypoints needed │ +│ • GPU 1 is ~95% idle → room for future expansion │ +│ │ +│ ❌ NOT RECOMMENDED: SlowFast at 1 FPS │ +│ • Fast pathway receives no useful temporal signal at 1 FPS │ +│ • Use only as optional Tier 2 with temporary FPS increase (15+ FPS) │ +│ │ +│ ❌ NOT RECOMMENDED: RF-DETR as always-on primary │ +│ • Detects all classes well, but NO keypoints for any class │ +│ • Cannot detect fighting/tawuran/stealing without adding YOLO Pose │ +│ • 1.8× slower → fewer cameras per GPU │ +│ • Small object advantage is valuable but better leveraged on-demand │ +│ • Best role: Tier 2 confirmer for stolen objects / weapons / small items │ +│ │ +└─────────────────────────────────────────────────────────────────────────────┘ +``` From ccdcd4b695b05d3bc344b31ec25d191b4a969c12 Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Sat, 7 Mar 2026 04:40:36 +0700 Subject: [PATCH 10/11] Add ontology-driven entity normalization --- Core/Index/GBCIndex.py | 44 +- Core/Index/Graph.py | 167 ++++-- Core/configs/ontology_config.py | 104 ++++ Core/configs/system_config.py | 18 +- Core/construct_index.py | 31 +- Core/pipelines/kg_builder.py | 123 ++-- Core/pipelines/kg_refiner.py | 165 ++++-- Core/rag/gbc_rag.py | 93 +-- Core/utils/ontology_utils.py | 158 +++++ api/services/indexing.py | 4 +- config/gbc.yaml | 14 + docs/bookrag-architecture-review.md | 883 ++++++++++++++++++++++++++++ main.py | 6 +- tests/test_ontology_integration.py | 200 +++++++ 14 files changed, 1755 insertions(+), 255 deletions(-) create mode 100644 Core/configs/ontology_config.py create mode 100644 Core/utils/ontology_utils.py create mode 100644 docs/bookrag-architecture-review.md create mode 100644 tests/test_ontology_integration.py diff --git a/Core/Index/GBCIndex.py b/Core/Index/GBCIndex.py index 24b98b4..2247f76 100644 --- a/Core/Index/GBCIndex.py +++ b/Core/Index/GBCIndex.py @@ -1,5 +1,8 @@ -from sympy import N -from Core.Index.Tree import * +import logging +import os +from typing import Optional + +from Core.Index.Tree import DocumentTree from Core.configs.system_config import SystemConfig from Core.provider.llm import LLM from Core.Index.Graph import Graph @@ -7,6 +10,9 @@ from Core.provider.vdb import VectorStore +log = logging.getLogger(__name__) + + class GBC: """ A class representing the index combining graph and tree structures. @@ -18,7 +24,7 @@ def __init__( self, config: SystemConfig, graph_index: Optional[Graph] = None, - TreeIndex: Optional[DocumentTree] = None, + tree_index: Optional[DocumentTree] = None, ): """ Initializes the TreeIndex with an optional index. @@ -28,7 +34,7 @@ def __init__( self.save_dir = config.save_path self.config = config self.llm = LLM(config.llm) - self.TreeIndex: DocumentTree = TreeIndex + self.TreeIndex: DocumentTree = tree_index self.GraphIndex: Graph = graph_index # load the vdb of entities — namespaced by tenant/doc if available @@ -43,7 +49,7 @@ def __init__( ) else: self.entity_vdb_path = os.path.join(self.save_dir, vdb_name) - + self.embedder = TextEmbeddingProvider( model_name=config.graph.embedding_config.model_name, backend=config.graph.embedding_config.backend, @@ -72,7 +78,7 @@ def save_gbc_index(self): # vdb is saved automatically when the entity_vdb is created - log.info(f"GBC index saved") + log.info("GBC index saved") def rebuild_vdb(self): """ @@ -91,12 +97,7 @@ def rebuild_vdb(self): texts.append(node) entity = self.GraphIndex.get_entity_by_node_name(node) - tmp_dict = { - "entity_name": entity.entity_name, - "entity_type": entity.entity_type, - "description": entity.description, - } - meta_datas.append(tmp_dict) + meta_datas.append(entity.to_vdb_metadata()) self.entity_vdb.add_texts(texts=texts, metadatas=meta_datas) log.info(f"Rebuilt entity VDB with {len(texts)} entries.") @@ -112,7 +113,7 @@ def load_gbc_index(cls, config: SystemConfig): tree_index = DocumentTree.load_from_file( DocumentTree.get_save_path(config.save_path) ) - + if config.graph.refine_type == "basic": variant = "basic" else: @@ -127,7 +128,7 @@ def load_gbc_index(cls, config: SystemConfig): doc_id=config.doc_id, falkordb_cfg=falkordb_cfg, ) - GBC = cls(config=config, graph_index=graph_index, TreeIndex=tree_index) + GBC = cls(config=config, graph_index=graph_index, tree_index=tree_index) log.info(f"GBC index loaded from {config.save_path}") return GBC @@ -148,12 +149,11 @@ def rebuild_global_vdb(self, global_vdb_path: str) -> None: for node in nodes: texts.append(node) entity = self.GraphIndex.get_entity_by_node_name(node) - meta_datas.append({ - "entity_name": entity.entity_name, - "entity_type": entity.entity_type, - "description": entity.description, - "doc_id": self.config.doc_id or "", - "tenant_id": self.config.tenant_id or "", - }) + metadata = entity.to_vdb_metadata() + metadata["doc_id"] = self.config.doc_id or "" + metadata["tenant_id"] = self.config.tenant_id or "" + meta_datas.append(metadata) global_vdb.add_texts(texts=texts, metadatas=meta_datas) - log.info(f"Rebuilt global VDB with {len(texts)} entries from doc '{self.config.doc_id}'.") + log.info( + f"Rebuilt global VDB with {len(texts)} entries from doc '{self.config.doc_id}'." + ) diff --git a/Core/Index/Graph.py b/Core/Index/Graph.py index 4fa0ee9..364b277 100644 --- a/Core/Index/Graph.py +++ b/Core/Index/Graph.py @@ -18,6 +18,12 @@ class Entity(BaseModel): entity_name: str # Primary key for entity entity_type: str = Field(default="") # Entity type description: str = Field(default="") # The description of this entity + entity_id: str = Field(default="") # Stable ontology/canonical identifier + canonical_id: str = Field(default="") # Points to canonical ontology identifier + entity_role: str = Field(default="provisional") # canonical / provisional + aliases: List[str] = Field(default_factory=list) # Known aliases for resolution + mapping_confidence: float = Field(default=0.0) # Ontology mapping confidence + ontology_source: str = Field(default="") # Source of ontology metadata source_ids: Set[int] = Field( default_factory=set ) # Set of source IDs from which this entity is derived @@ -39,6 +45,20 @@ def __eq__(self, other): ) return False + def to_vdb_metadata(self) -> dict: + aliases = list(dict.fromkeys(self.aliases)) + return { + "entity_name": self.entity_name, + "entity_type": self.entity_type, + "description": self.description, + "entity_id": self.entity_id, + "canonical_id": self.canonical_id, + "entity_role": self.entity_role, + "mapping_confidence": float(self.mapping_confidence or 0.0), + "ontology_source": self.ontology_source, + "aliases_json": json.dumps(aliases, ensure_ascii=False), + } + class Relationship(BaseModel): src_entity_name: str # Name of the entity on the left side of the edge @@ -125,7 +145,6 @@ def add_kg_node(self, entity: Entity) -> None: node_name = self.get_node_name_from_entity(entity) self.kg.add_node(node_name, **entity.model_dump()) - # self.name_to_nodes[entity.entity_name].add(node_name) def add_kg_edge(self, rel: Relationship, src_type: str, tgt_type: str) -> None: """Add a relation/edge between two KG entities with all its attributes.""" @@ -159,11 +178,20 @@ def add_and_link( entities = [entities] for entity in entities: node_name = self.get_node_name_from_entity(entity) - # node_name = f"{entity.entity_name} ({entity.entity_type})" if node_name not in self.kg: self.add_kg_node(entity) self.link(tree_node_id, entity.entity_name, entity.entity_type) + def _rewrite_edge_entity_names( + self, edge_data: Optional[dict], old_entity_name: str, new_entity_name: str + ) -> dict: + updated_edge_data = dict(edge_data or {}) + if updated_edge_data.get("src_entity_name") == old_entity_name: + updated_edge_data["src_entity_name"] = new_entity_name + if updated_edge_data.get("tgt_entity_name") == old_entity_name: + updated_edge_data["tgt_entity_name"] = new_entity_name + return updated_edge_data + def update_entity( self, old_entity_name: str, old_entity_type: str, new_entity: Entity ) -> None: @@ -184,9 +212,17 @@ def update_entity( if new_node_name != old_node_name: # 1. Add new node and copy all edges self.kg.add_node(new_node_name, **new_entity.model_dump()) - for neighbor in list(self.kg.neighbors(old_node_name)): + for neighbor in self.kg.neighbors(old_node_name): edge_data = self.kg.get_edge_data(old_node_name, neighbor) - self.kg.add_edge(new_node_name, neighbor, **edge_data) + self.kg.add_edge( + new_node_name, + neighbor, + **self._rewrite_edge_entity_names( + edge_data=edge_data, + old_entity_name=old_entity_name, + new_entity_name=new_entity.entity_name, + ), + ) # 2.1 update tree2kg for tree_id in new_source_ids: # If the old node is in the tree2kg, remove the old name @@ -216,7 +252,6 @@ def get_entity(self, entity_name: str, entity_type: str = "") -> Entity: node_name = self.get_node_name_from_str( entity_name=entity_name, entity_type=entity_type ) - # node_name = f"{entity_name} ({entity_type})" if node_name not in self.kg.nodes: raise KeyError(f"Entity '{node_name}' not found in knowledge graph.") return Entity(**self.kg.nodes[node_name]) @@ -236,10 +271,8 @@ def get_entity_by_node_name(self, node_name: str) -> Entity: return Entity(**self.kg.nodes[node_name]) def get_subgraph_data(self, entities: List[str]) -> dict: - # Return the subgraph entities data, excluding description and source_ids in entities - # If the relation connects two entities in the subgraph, it will be included + """Return lightweight node data for the subgraph induced by `entities`.""" subgraph = self.kg.subgraph(entities) - # data = {"nodes": [], "edges": []} data = {"nodes": []} for node in subgraph.nodes(data=True): node_data = { @@ -247,44 +280,29 @@ def get_subgraph_data(self, entities: List[str]) -> dict: "entity_type": node[1]["entity_type"], } data["nodes"].append(node_data) - # for edge in subgraph.edges(data=True): - # edge_data = { - # "src_entity_name": edge[2]["src_entity_name"], - # "tgt_entity_name": edge[2]["tgt_entity_name"], - # "relation_name": edge[2]["relation_name"], - # "weight": edge[2]["weight"], - # } - # data["edges"].append(edge_data) return data - def Entities2TreeNodes(self, entities: List[Entity]) -> List[int]: + def entities_to_tree_nodes(self, entities: List[Entity]) -> List[int]: """ Given KG node names, return all tree node IDs that link to them. """ result = set() for ent in entities: - source_ids = ent.source_ids - result.union(source_ids) - result = list(result) - return result + result.update(ent.source_ids) + return sorted(result) - def Entity2TreeNodes(self, ent: Entity) -> List[int]: + def entity_to_tree_nodes(self, ent: Entity) -> List[int]: """ Given an Entity object, return all tree node IDs that link to it. """ - res = ent.source_ids - res = list(res) - return res + return sorted(ent.source_ids) - def NodeName2TreeNodes(self, node_name: str) -> Set[int]: + def node_name_to_tree_nodes(self, node_name: str) -> List[int]: """ Given a node name (entity_name (entity_type)), return all tree node IDs that link to it. """ ent = self.get_entity_by_node_name(node_name) - res = ent.source_ids - res = list(res) - - return res + return sorted(ent.source_ids) def remove_self_loops(self) -> int: """ @@ -330,6 +348,10 @@ def _get_fdb_graph(self): def _save_to_falkordb(self) -> None: """Persist the in-memory NetworkX graph to FalkorDB.""" g = self._get_fdb_graph() + + def _esc(value) -> str: + return str(value or "").replace("\\", "\\\\").replace("'", "\\'") + # Clear existing data for idempotent saves try: g.query("MATCH (n) DETACH DELETE n") @@ -339,15 +361,27 @@ def _save_to_falkordb(self) -> None: # Write nodes for node_name, data in self.kg.nodes(data=True): source_ids_list = list(data.get("source_ids", set())) - desc = data.get("description", "").replace("'", "\\'") - ename = data.get("entity_name", "").replace("'", "\\'") - etype = data.get("entity_type", "").replace("'", "\\'") - nname = node_name.replace("\\", "\\\\").replace("'", "\\'") + desc = _esc(data.get("description", "")) + ename = _esc(data.get("entity_name", "")) + etype = _esc(data.get("entity_type", "")) + entity_id = _esc(data.get("entity_id", "")) + canonical_id = _esc(data.get("canonical_id", "")) + entity_role = _esc(data.get("entity_role", "provisional")) + ontology_source = _esc(data.get("ontology_source", "")) + aliases_json = _esc(json.dumps(data.get("aliases", []), ensure_ascii=False)) + mapping_confidence = float(data.get("mapping_confidence", 0.0) or 0.0) + nname = _esc(node_name) cypher = ( f"CREATE (n:Entity {{" f"node_name: '{nname}', " f"entity_name: '{ename}', " f"entity_type: '{etype}', " + f"entity_id: '{entity_id}', " + f"canonical_id: '{canonical_id}', " + f"entity_role: '{entity_role}', " + f"aliases_json: '{aliases_json}', " + f"mapping_confidence: {mapping_confidence}, " + f"ontology_source: '{ontology_source}', " f"description: '{desc}', " f"source_ids: {source_ids_list}" f"}})" @@ -387,9 +421,20 @@ def _load_from_falkordb(self) -> None: props = node.properties source_ids = set(props.get("source_ids", [])) node_name = props["node_name"] + aliases_json = props.get("aliases_json", "[]") + try: + aliases = json.loads(aliases_json) if isinstance(aliases_json, str) else list(aliases_json or []) + except json.JSONDecodeError: + aliases = [] self.kg.add_node(node_name, entity_name=props.get("entity_name", ""), entity_type=props.get("entity_type", ""), + entity_id=props.get("entity_id", ""), + canonical_id=props.get("canonical_id", ""), + entity_role=props.get("entity_role", "provisional"), + aliases=aliases, + mapping_confidence=float(props.get("mapping_confidence", 0.0) or 0.0), + ontology_source=props.get("ontology_source", ""), description=props.get("description", ""), source_ids=source_ids) for tid in source_ids: @@ -431,9 +476,20 @@ def _get_fdb_subgraph(self, tree_node_ids: Iterable[int]) -> nx.Graph: node = rec[0] props = node.properties node_name = props["node_name"] + aliases_json = props.get("aliases_json", "[]") + try: + aliases = json.loads(aliases_json) if isinstance(aliases_json, str) else list(aliases_json or []) + except json.JSONDecodeError: + aliases = [] subgraph.add_node(node_name, entity_name=props.get("entity_name", ""), entity_type=props.get("entity_type", ""), + entity_id=props.get("entity_id", ""), + canonical_id=props.get("canonical_id", ""), + entity_role=props.get("entity_role", "provisional"), + aliases=aliases, + mapping_confidence=float(props.get("mapping_confidence", 0.0) or 0.0), + ontology_source=props.get("ontology_source", ""), description=props.get("description", ""), source_ids=set(props.get("source_ids", []))) @@ -525,13 +581,19 @@ def load_from_dir( with open(load_path, "r", encoding="utf-8") as f: loaded_data = json.load(f) - graph_instance = cls(save_path=load_dir) + graph_instance = cls(save_path=load_dir, variant=variant) # Pass edges="links" to match the key used when saving with node_link_data(edges="links") graph_instance.kg = json_graph.node_link_graph(loaded_data["graph"], edges="links") for _, node_data in graph_instance.kg.nodes(data=True): if "source_ids" in node_data and isinstance(node_data["source_ids"], list): node_data["source_ids"] = set(node_data["source_ids"]) + node_data.setdefault("entity_id", "") + node_data.setdefault("canonical_id", "") + node_data.setdefault("entity_role", "provisional") + node_data.setdefault("aliases", []) + node_data.setdefault("mapping_confidence", 0.0) + node_data.setdefault("ontology_source", "") for _, _, edge_data in graph_instance.kg.edges(data=True): if "source_ids" in edge_data and isinstance(edge_data["source_ids"], list): @@ -571,16 +633,28 @@ def save_to_global_graph(self, falkordb_cfg, tenant_id: str) -> None: log.error(f"Failed to connect to FalkorDB global graph: {e}") raise + def _esc(value) -> str: + return str(value or "").replace("\\", "\\\\").replace("'", "\\'") + for node_name, data in self.kg.nodes(data=True): - ename = data.get("entity_name", "").replace("'", "\\'") - etype = data.get("entity_type", "").replace("'", "\\'") - desc = data.get("description", "").replace("'", "\\'") - nname = node_name.replace("\\", "\\\\").replace("'", "\\'") - doc_id_esc = self.doc_id.replace("'", "\\'") if self.doc_id else "" + ename = _esc(data.get("entity_name", "")) + etype = _esc(data.get("entity_type", "")) + desc = _esc(data.get("description", "")) + entity_id = _esc(data.get("entity_id", "")) + canonical_id = _esc(data.get("canonical_id", "")) + entity_role = _esc(data.get("entity_role", "provisional")) + ontology_source = _esc(data.get("ontology_source", "")) + aliases_json = _esc(json.dumps(data.get("aliases", []), ensure_ascii=False)) + mapping_confidence = float(data.get("mapping_confidence", 0.0) or 0.0) + nname = _esc(node_name) + doc_id_esc = _esc(self.doc_id) # MERGE canonical entity node global_graph.query( f"MERGE (n:Entity {{node_name: '{nname}'}}) " - f"ON CREATE SET n.entity_name='{ename}', n.entity_type='{etype}', n.description='{desc}' " + f"ON CREATE SET n.entity_name='{ename}', n.entity_type='{etype}', n.description='{desc}', " + f"n.entity_id='{entity_id}', n.canonical_id='{canonical_id}', n.entity_role='{entity_role}', " + f"n.aliases_json='{aliases_json}', n.mapping_confidence={mapping_confidence}, " + f"n.ontology_source='{ontology_source}' " f"CREATE (n)-[:HAS_MENTION {{doc_id: '{doc_id_esc}'}}]->(n)" ) log.info(f"Merged {self.kg.number_of_nodes()} nodes into global graph for tenant '{tenant_id}'.") @@ -620,9 +694,20 @@ def get_global_subgraph( node = rec[0] props = node.properties node_name = props["node_name"] + aliases_json = props.get("aliases_json", "[]") + try: + aliases = json.loads(aliases_json) if isinstance(aliases_json, str) else list(aliases_json or []) + except json.JSONDecodeError: + aliases = [] subgraph.add_node(node_name, entity_name=props.get("entity_name", ""), entity_type=props.get("entity_type", ""), + entity_id=props.get("entity_id", ""), + canonical_id=props.get("canonical_id", ""), + entity_role=props.get("entity_role", "provisional"), + aliases=aliases, + mapping_confidence=float(props.get("mapping_confidence", 0.0) or 0.0), + ontology_source=props.get("ontology_source", ""), description=props.get("description", "")) return subgraph diff --git a/Core/configs/ontology_config.py b/Core/configs/ontology_config.py new file mode 100644 index 0000000..4294a2c --- /dev/null +++ b/Core/configs/ontology_config.py @@ -0,0 +1,104 @@ +import json +import os +from typing import List, Optional + +import yaml +from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator + +from Core.utils.ontology_utils import normalize_entity_name, normalize_entity_type + + +class OntologyEntityConfig(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + entity_id: str = Field(alias="ontology_id") + entity_name: str = Field(alias="canonical_name") + entity_type: str + description: str = "" + aliases: List[str] = Field(default_factory=list) + keywords: List[str] = Field(default_factory=list) + status: str = "active" + ontology_source: str = "config" + + @field_validator("entity_id") + @classmethod + def _validate_entity_id(cls, value: str) -> str: + value = str(value or "").strip() + if not value: + raise ValueError("ontology_id cannot be empty") + return value + + @field_validator("entity_name") + @classmethod + def _normalize_entity_name(cls, value: str) -> str: + normalized = normalize_entity_name(value) + if not normalized: + raise ValueError("canonical_name cannot be empty") + return normalized + + @field_validator("entity_type") + @classmethod + def _normalize_entity_type(cls, value: str) -> str: + normalized = normalize_entity_type(value) + if not normalized: + raise ValueError("entity_type cannot be empty") + return normalized + + @field_validator("aliases", "keywords") + @classmethod + def _normalize_terms(cls, values: List[str]) -> List[str]: + normalized: List[str] = [] + for value in values or []: + item = normalize_entity_name(value) + if item and item not in normalized: + normalized.append(item) + return normalized + + @model_validator(mode="after") + def _ensure_canonical_alias(self) -> "OntologyEntityConfig": + if self.entity_name not in self.aliases: + self.aliases.insert(0, self.entity_name) + return self + + +class OntologyConfig(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + enabled: bool = False + path: Optional[str] = None + entities: List[OntologyEntityConfig] = Field(default_factory=list) + mapping_threshold: float = Field(default=1.0, ge=0.0, le=1.0) + allow_provisional_entities: bool = True + use_query_resolution: bool = True + + @model_validator(mode="after") + def _load_entities_from_path(self) -> "OntologyConfig": + if not self.path: + return self + + loaded_entities = self._read_entities_file(self.path) + merged = list(self.entities) + seen_ids = {entity.entity_id for entity in merged} + for entity in loaded_entities: + if entity.entity_id not in seen_ids: + merged.append(entity) + seen_ids.add(entity.entity_id) + self.entities = merged + return self + + @staticmethod + def _read_entities_file(path: str) -> List[OntologyEntityConfig]: + if not os.path.exists(path): + raise FileNotFoundError(f"Ontology file not found: {path}") + + with open(path, "r", encoding="utf-8") as handle: + if path.endswith(".json"): + payload = json.load(handle) + else: + payload = yaml.safe_load(handle) + + raw_entities = payload.get("entities", payload) if isinstance(payload, dict) else payload + if not isinstance(raw_entities, list): + raise ValueError("Ontology file must contain a list of entities or an 'entities' list") + + return [OntologyEntityConfig(**entity) for entity in raw_entities] \ No newline at end of file diff --git a/Core/configs/system_config.py b/Core/configs/system_config.py index 8e7a7fc..5322093 100644 --- a/Core/configs/system_config.py +++ b/Core/configs/system_config.py @@ -1,9 +1,12 @@ +import os + import yaml from Core.configs.mineru_config import MinerU from Core.configs.docling_config import DoclingConfig from Core.configs.llm_config import LLMConfig from Core.configs.tree_config import TreeConfig from Core.configs.graph_config import GraphConfig +from Core.configs.ontology_config import OntologyConfig from Core.configs.vlm_config import VLMConfig from Core.configs.rag_config import RAGConfig from Core.configs.vdb_config import VDBConfig @@ -33,6 +36,7 @@ class SystemConfig(BaseModel): tree: TreeConfig = Field(default_factory=TreeConfig) graph: GraphConfig = Field(default_factory=GraphConfig) vdb: VDBConfig = Field(default_factory=VDBConfig) + ontology: OntologyConfig = Field(default_factory=OntologyConfig) # Other Index selection index_type: Optional[str] = "gbc" # Options: "gbc", "tree", "vanilla", "bm25", "raptor", "pdf_vanilla" @@ -72,12 +76,6 @@ class SystemConfig(BaseModel): falkordb: Any = Field(default_factory=FalkorDBConfig) mongodb: Any = Field(default_factory=MongoDBConfig) - # # 新增: 专门用于存放评估结果的根目录 - # evaluation_output_path: Optional[str] = Field( - # default="/home/wangshu/multimodal/GBC-RAG/test/tree_index/evaluation_results", - # description="Root directory to save evaluation results." - # ) - def load_system_config(path: str = "../configs/default.yaml") -> SystemConfig: with open(path, "r") as f: @@ -87,5 +85,13 @@ def load_system_config(path: str = "../configs/default.yaml") -> SystemConfig: rag_data = raw_config["rag"] raw_config["rag"] = {"strategy_config": rag_data} + ontology_data = raw_config.get("ontology") + if isinstance(ontology_data, dict) and ontology_data.get("path"): + ontology_path = ontology_data["path"] + if not os.path.isabs(ontology_path): + ontology_data["path"] = os.path.abspath( + os.path.join(os.path.dirname(path), ontology_path) + ) + cfg = SystemConfig(**raw_config) return cfg diff --git a/Core/construct_index.py b/Core/construct_index.py index 684c62b..22812c8 100644 --- a/Core/construct_index.py +++ b/Core/construct_index.py @@ -21,7 +21,7 @@ from Core.utils.file_utils import save_indexing_stats -def construct_GBC_index(cfg: SystemConfig, tree_only: bool = False): +def construct_gbc_index(cfg: SystemConfig, tree_only: bool = False): """ Construct the GBC index from the document tree and knowledge graph. @@ -57,7 +57,7 @@ def construct_GBC_index(cfg: SystemConfig, tree_only: bool = False): graph_index = build_knowledge_graph(tree_index, cfg) # The 'kg_extraction' stage is recorded inside build_knowledge_graph - gbc_index = GBC(config=cfg, graph_index=graph_index, TreeIndex=tree_index) + gbc_index = GBC(config=cfg, graph_index=graph_index, tree_index=tree_index) gbc_index.save_gbc_index() # rebuild vdb @@ -143,32 +143,9 @@ def compute_mm_reranker(cfg: SystemConfig, group: pd.DataFrame): tree_index = build_tree_from_pdf(cfg) compute_mm_embedding(cfg, tree_index) - + compute_mm_embedding_question(cfg, group) if __name__ == "__main__": - print("test") - - # parser = argparse.ArgumentParser(description="Extract text content from PDF files.") - # parser.add_argument( - # "--config_path", - # type=str, - # default="/home/wangshu/multimodal/GBC-RAG/config/gbc.yaml", - # help="Path to the configuration file.", - # ) - - # args = parser.parse_args() - - # cfg = load_system_config(args.config_path) - - # if not os.path.exists(cfg.save_path): - # os.makedirs(cfg.save_path) - # log.info(f"Created directory: {cfg.save_path}") - # else: - # log.info(f"Directory already exists: {cfg.save_path}") - - # construct_vdb(cfg) - - # gbc_index = construct_GBC_index(cfg) - # log.info("GBC index construction completed successfully.") + print("Use main.py to run indexing workflows.") diff --git a/Core/pipelines/kg_builder.py b/Core/pipelines/kg_builder.py index 1b0d0cb..a2f615c 100644 --- a/Core/pipelines/kg_builder.py +++ b/Core/pipelines/kg_builder.py @@ -3,6 +3,7 @@ from Core.pipelines.kg_extractor import KGExtractor from Core.pipelines.kg_refiner import KGRefiner from Core.configs.system_config import SystemConfig +from Core.utils.ontology_utils import align_entities_to_ontology from Core.provider.llm import LLM from Core.provider.vlm import VLM @@ -12,28 +13,6 @@ log = logging.getLogger(__name__) -# print log for test -from rich.logging import RichHandler - -import os -import time - -# log_dir = "/home/wangshu/multimodal/GBC-RAG/test/index_qwen3/logs" -# if not os.path.exists(log_dir): -# os.makedirs(log_dir) -# log_file = os.path.join(log_dir, f"kg_builder_{time.strftime('%Y%m%d_%H%M%S')}.log") -# logging.basicConfig( -# level="INFO", -# format="%(asctime)s - %(levelname)s - %(message)s", -# datefmt="%H:%M:%S", -# handlers=[ -# RichHandler(rich_tracebacks=True), # RichHandler 会继续使用自己的漂亮格式 -# logging.FileHandler( -# log_file, encoding="utf-8" -# ), # FileHandler 会使用上面定义的 format -# ], -# ) - def build_knowledge_graph(tree: DocumentTree, cfg: SystemConfig): """ @@ -82,60 +61,38 @@ def build_knowledge_graph(tree: DocumentTree, cfg: SystemConfig): kg_extract_res = [] - batch_process = True - - if batch_process: - log.info("Batch processing is enabled for knowledge graph extraction.") - batch_nodes = [] - batch_title_nodes = [] - batch_title_paths = [] - batch_sibling_nodes = [] - for node in tree.nodes: - # for node in tree.nodes[:30]: - if node == tree.root_node: - # Skip the root node since it doesn't have any other information - continue - if node.type == NodeType.TITLE: - # For title nodes, we collect the path and sibling nodes for batch processing - title_path = tree.get_path_from_root(node.index_id) - sibling_nodes = tree.get_sibling_nodes(node.index_id) - batch_title_nodes.append(node) - batch_title_paths.append(title_path) - batch_sibling_nodes.append(sibling_nodes) - else: - # For other nodes, we collect them for batch processing - batch_nodes.append(node) - - # Process title nodes in batches - if batch_title_nodes: - log.info("Processing title nodes in batches...") - res_dict = kg_extractor.batch_extract_titles( - nodes=batch_title_nodes, - title_paths=batch_title_paths, - sibling_nodes_list=batch_sibling_nodes, - ) - kg_extract_res.extend(res_dict) - - if batch_nodes: - log.info("Processing non-title nodes in batches...------") - res_dict = kg_extractor.batch_extract_kg(nodes=batch_nodes) - kg_extract_res.extend(res_dict) - - # resort the results based on node index - kg_extract_res.sort(key=lambda x: x.get("node_idx", -1)) - else: - for node in tree.nodes[:30]: - # Extract entities and relationships from the node - if node == tree.root_node: - # Skip the root node since it doesn't have any other information - continue - if node.type == NodeType.TITLE: - title_path = tree.get_path_from_root(node.index_id) - sibling_nodes = tree.get_sibling_nodes(node.index_id) - res_dict = kg_extractor.extract_title(node, title_path, sibling_nodes) - else: - res_dict = kg_extractor.extract_kg(node) - kg_extract_res.append(res_dict) + log.info("Batch processing is enabled for knowledge graph extraction.") + batch_nodes = [] + batch_title_nodes = [] + batch_title_paths = [] + batch_sibling_nodes = [] + for node in tree.nodes: + if node == tree.root_node: + continue + if node.type == NodeType.TITLE: + title_path = tree.get_path_from_root(node.index_id) + sibling_nodes = tree.get_sibling_nodes(node.index_id) + batch_title_nodes.append(node) + batch_title_paths.append(title_path) + batch_sibling_nodes.append(sibling_nodes) + else: + batch_nodes.append(node) + + if batch_title_nodes: + log.info("Processing title nodes in batches...") + res_dict = kg_extractor.batch_extract_titles( + nodes=batch_title_nodes, + title_paths=batch_title_paths, + sibling_nodes_list=batch_sibling_nodes, + ) + kg_extract_res.extend(res_dict) + + if batch_nodes: + log.info("Processing non-title nodes in batches...------") + res_dict = kg_extractor.batch_extract_kg(nodes=batch_nodes) + kg_extract_res.extend(res_dict) + + kg_extract_res.sort(key=lambda x: x.get("node_idx", -1)) log.info("Knowledge graph extraction completed.") log.info(f"Extracted {len(kg_extract_res)} nodes from the document tree.") @@ -145,17 +102,22 @@ def build_knowledge_graph(tree: DocumentTree, cfg: SystemConfig): log.info(f"Knowledge graph extraction cost: {kg_extraction_cost}") for res in kg_extract_res: + entities, relationships = align_entities_to_ontology( + entities=res.get("entities", []), + relationships=res.get("relations", []), + ontology_cfg=cfg.ontology, + ) if cfg.graph.refine_type == "basic": log.info("Using basic KG refinement.") kg_refiner.basic_kg_refiner( - entities=res.get("entities", []), - relationships=res.get("relations", []), + entities=entities, + relationships=relationships, source_id=res.get("node_idx", -1), ) elif cfg.graph.refine_type == "advanced": kg_refiner.advanced_kg_refiner( - entities=res.get("entities", []), - relationships=res.get("relations", []), + entities=entities, + relationships=relationships, source_id=res.get("node_idx", -1), ) @@ -169,7 +131,6 @@ def build_knowledge_graph(tree: DocumentTree, cfg: SystemConfig): kg_refiner.close() return graph_index - # graph_index.save_graph() if __name__ == "__main__": diff --git a/Core/pipelines/kg_refiner.py b/Core/pipelines/kg_refiner.py index 17ac758..e0ee575 100644 --- a/Core/pipelines/kg_refiner.py +++ b/Core/pipelines/kg_refiner.py @@ -124,6 +124,51 @@ def get_latest_entity_name(self, node_name: str) -> str: # Recursively find the latest entity name return self.get_latest_entity_name(latest_node_name) + def _merge_entity_metadata( + self, + primary_entity: Entity, + secondary_entity: Entity, + description: str, + entity_name: Optional[str] = None, + entity_type: Optional[str] = None, + ) -> Entity: + merged_aliases = [] + for alias in [ + primary_entity.entity_name, + secondary_entity.entity_name, + *primary_entity.aliases, + *secondary_entity.aliases, + ]: + alias = str(alias or "").strip() + if alias and alias not in merged_aliases: + merged_aliases.append(alias) + + entity_role = primary_entity.entity_role or secondary_entity.entity_role or "provisional" + if "canonical" in {primary_entity.entity_role, secondary_entity.entity_role}: + entity_role = "canonical" + + entity_id = primary_entity.entity_id or secondary_entity.entity_id + canonical_id = ( + primary_entity.canonical_id + or secondary_entity.canonical_id + or entity_id + ) + + return Entity( + entity_name=entity_name or primary_entity.entity_name, + entity_type=entity_type or primary_entity.entity_type, + description=description, + entity_id=entity_id, + canonical_id=canonical_id, + entity_role=entity_role, + aliases=merged_aliases, + mapping_confidence=max( + primary_entity.mapping_confidence, secondary_entity.mapping_confidence + ), + ontology_source=primary_entity.ontology_source or secondary_entity.ontology_source, + source_ids=set(primary_entity.source_ids).union(secondary_entity.source_ids), + ) + def entity_merge( self, old_entity: Entity, @@ -145,28 +190,65 @@ def entity_merge( # 2. merge the two entities old_node_name = self.graph_index.get_node_name_from_entity(old_entity) new_node_name = self.graph_index.get_node_name_from_entity(new_entity) - if (old_node_name == new_node_name) or merged_to_old_entity: + canonical_entity = None + if old_entity.entity_role == "canonical": + canonical_entity = old_entity + elif new_entity.entity_role == "canonical": + canonical_entity = new_entity + + if canonical_entity is not None: + log.info("merged with canonical entity metadata preserved") + description = ( + old_entity.description + self._DESCRIPTION_SEP_ + new_entity.description + ) + primary_entity = canonical_entity + secondary_entity = new_entity if canonical_entity == old_entity else old_entity + merged_entity = self._merge_entity_metadata( + primary_entity=primary_entity, + secondary_entity=secondary_entity, + description=description, + ) + elif (old_node_name == new_node_name) or merged_to_old_entity: # 2.1 if have the same node name, or merged to old entity, # Directly merged if the entity name and type are the same log.info("merged directly") new_description = ( old_entity.description + self._DESCRIPTION_SEP_ + new_entity.description ) - merged_entity = Entity( - entity_name=old_entity.entity_name, - entity_type=old_entity.entity_type, + merged_entity = self._merge_entity_metadata( + primary_entity=old_entity, + secondary_entity=new_entity, description=new_description, - source_ids=set(old_entity.source_ids).union(new_entity.source_ids), ) else: # 2.2 if have different node name, use LLM to create new entity log.info("merged by LLM summarization") - old_entity_dict = old_entity.model_dump(exclude={"source_ids"}) + old_entity_dict = old_entity.model_dump( + exclude={ + "source_ids", + "entity_id", + "canonical_id", + "entity_role", + "aliases", + "mapping_confidence", + "ontology_source", + } + ) old_entity_dict["description"] = truncate_description( old_entity_dict["description"], max_words=200 ) - new_entity_dict = new_entity.model_dump(exclude={"source_ids"}) + new_entity_dict = new_entity.model_dump( + exclude={ + "source_ids", + "entity_id", + "canonical_id", + "entity_role", + "aliases", + "mapping_confidence", + "ontology_source", + } + ) new_entity_dict["description"] = truncate_description( new_entity_dict["description"], max_words=200 ) @@ -193,11 +275,12 @@ def entity_merge( old_entity.description + self._DESCRIPTION_SEP_ + new_entity.description ) - merged_entity = Entity( + merged_entity = self._merge_entity_metadata( + primary_entity=old_entity, + secondary_entity=new_entity, + description=description, entity_name=res_entity.entity_name, entity_type=res_entity.entity_type, - description=description, - source_ids=set(old_entity.source_ids).union(new_entity.source_ids), ) # 2.3 If the llm generated merged entity is another entity (entityC) in the graph, @@ -230,11 +313,12 @@ def entity_merge( old_entity_type=entity_c.entity_type, new_entity=old_entity, ) - merged_entity.description += ( - self._DESCRIPTION_SEP_ + entity_c.description - ) - merged_entity.source_ids = set(merged_entity.source_ids).union( - entity_c.source_ids + merged_entity = self._merge_entity_metadata( + primary_entity=merged_entity, + secondary_entity=entity_c, + description=( + merged_entity.description + self._DESCRIPTION_SEP_ + entity_c.description + ), ) # since entity_c is the same as merged_entity, no need to update alias map @@ -293,6 +377,7 @@ def basic_kg_refiner( entity.entity_name, entity.entity_type ) merged_entity = self.entity_merge(existing_entity, entity) + entity_map[entity.entity_name] = merged_entity entity_map[existing_entity.entity_name] = merged_entity add_entity_list.append(merged_entity) @@ -301,12 +386,23 @@ def basic_kg_refiner( # Update relationships for rel in relationships: - if rel.src_entity_name in entity_map: - rel.src_entity_name = entity_map[rel.src_entity_name].entity_name - src_type = entity_map[rel.src_entity_name].entity_type - if rel.tgt_entity_name in entity_map: - rel.tgt_entity_name = entity_map[rel.tgt_entity_name].entity_name - tgt_type = entity_map[rel.tgt_entity_name].entity_type + old_src_name = rel.src_entity_name + old_tgt_name = rel.tgt_entity_name + src_type = None + tgt_type = None + if old_src_name in entity_map: + mapped_src = entity_map[old_src_name] + rel.src_entity_name = mapped_src.entity_name + src_type = mapped_src.entity_type + if old_tgt_name in entity_map: + mapped_tgt = entity_map[old_tgt_name] + rel.tgt_entity_name = mapped_tgt.entity_name + tgt_type = mapped_tgt.entity_type + if src_type is None or tgt_type is None: + log.info( + f"Relationship {rel} has missing entity types. Skipping this relationship." + ) + continue self.graph_index.add_kg_edge(rel=rel, src_type=src_type, tgt_type=tgt_type) def get_vdb_meta_data(self, entity: Entity) -> dict: @@ -318,11 +414,7 @@ def get_vdb_meta_data(self, entity: Entity) -> dict: dict: The metadata dictionary without source_ids. since vdb does not support list type. """ - return { - "entity_name": entity.entity_name, - "entity_type": entity.entity_type, - "description": entity.description, - } + return entity.to_vdb_metadata() def add_entities_to_vdb(self, entities: List[Entity]) -> None: """ @@ -477,7 +569,7 @@ def metadata_str(meta_data: dict): else: break - if len(sel_entities) == ranked_results: + if len(sel_entities) == len(ranked_results): # 4.3 If all entities are selected, return empty list return [] @@ -540,23 +632,20 @@ def er_selection_by_llm( if 0 <= select_id < len(similar_entities): # Log the selection and reason - log.info( - f"LLM selected entity ID: {select_id}, " f"Reason: {res.explanation}" - ) + log.info(f"LLM selected entity ID: {select_id}, Reason: {res.explanation}") # Log the new entity and the selected similar entity log.info("New Entity Info:") log.info( f"Entity Name: {new_entity.entity_name}, Entity Type: {new_entity.entity_type}" ) - log.info(f"LLM selected Entity Info:") + log.info("LLM selected Entity Info:") log.info( f"Entity Name: {similar_entities[select_id].entity_name}, Entity Type: {similar_entities[select_id].entity_type}" ) return similar_entities[select_id] - else: - print(f"Warning: LLM returned an out-of-bounds ID: {select_id}") - return None + print(f"Warning: LLM returned an out-of-bounds ID: {select_id}") + return None def entity_resolution(self, new_entity: Entity) -> Entity: """ @@ -684,10 +773,9 @@ def process_relationships( "Skipping this relationship." ) continue - else: - self.graph_index.add_kg_edge( - rel=rel, src_type=src_type, tgt_type=tgt_type - ) + self.graph_index.add_kg_edge( + rel=rel, src_type=src_type, tgt_type=tgt_type + ) def _debug_check_num(self): num_node_graph = len(self.graph_index.kg.nodes()) @@ -872,7 +960,6 @@ def refine_entities(self): f"Refined {len(add_entities)} entities and added them to the vector database." ) self._debug_check_num() - return def refine_relation(self): # delete self loop in graph index diff --git a/Core/rag/gbc_rag.py b/Core/rag/gbc_rag.py index 7de36ad..395ad8b 100644 --- a/Core/rag/gbc_rag.py +++ b/Core/rag/gbc_rag.py @@ -1,14 +1,11 @@ from collections import defaultdict -from typing import Any, List, Tuple, Dict, Optional - -from regex import F +from typing import Any, List, Dict, Optional from Core.Index.Tree import TreeNode, NodeType from Core.rag.base_rag import BaseRAG from Core.provider.llm import LLM from Core.provider.vlm import VLM from Core.provider.rerank import TextRerankerProvider -from Core.provider.embedding import MMRerankerProvider from Core.configs.rag.gbc_config import GBCRAGConfig from Core.Index.GBCIndex import GBC from Core.prompts.gbc_prompt import ( @@ -29,6 +26,11 @@ SubStep, filter_tree_nodes, ) +from Core.utils.ontology_utils import ( + find_best_graph_ontology_node, + normalize_entity_name, + normalize_entity_type, +) import json @@ -87,7 +89,6 @@ def __init__( self.retriever = Retriever( varient=self.varient, reranker=self.reranker, - # mm_reranker=self.mm_reranker, embedder=self.embedder, alpha=self.cfg.alpha, topk_ent=self.cfg.topk_ent, @@ -99,37 +100,42 @@ def _get_entity_embed_text(self, entity: QuestionEntity) -> str: return f"Name: {entity.entity_name}\nType: {entity.entity_type}" def _entity_map( - self, entities: List[str], force_one: bool = False + self, entities: List[QuestionEntity], force_one: bool = False ) -> Dict[str, List[str]]: """ Maps entities to their corresponding IDs in the GBC index. Use vdb to find the entity in GBC index. """ entities_str = [self._get_entity_embed_text(entity) for entity in entities] - Qent_GBCent_map = defaultdict(list) + query_to_gbc_entity_map = defaultdict(list) res_list = [] for ent_str in entities_str: query_res = self.gbc_index.entity_vdb.search(query_text=ent_str, top_k=2) + if not query_res: + continue min_distance = query_res[0]["distance"] if query_res else float("inf") - retrieve_name = query_res[0]["metadata"].get("entity_name") - retrieve_type = query_res[0]["metadata"].get("entity_type") + metadata = query_res[0].get("metadata") or {} + retrieve_name = metadata.get("entity_name") + retrieve_type = metadata.get("entity_type") + if not retrieve_name: + continue node_name = self.gbc_index.GraphIndex.get_node_name_from_str( retrieve_name, retrieve_type ) if min_distance < self.threshold_e: - Qent_GBCent_map[ent_str].append(node_name) + query_to_gbc_entity_map[ent_str].append(node_name) log.info(f"Entity '{ent_str}' mapped to GBC entity: {node_name}") else: res_list.append((ent_str, node_name, min_distance)) - if force_one and len(Qent_GBCent_map) == 0 and len(res_list) > 0: + if force_one and len(query_to_gbc_entity_map) == 0 and len(res_list) > 0: # force map the closest entity if no entity is mapped res_list = sorted(res_list, key=lambda x: x[2]) ent_str, node_name, min_distance = res_list[0] - Qent_GBCent_map[ent_str].append(node_name) + query_to_gbc_entity_map[ent_str].append(node_name) log.info(f"Force map entity '{ent_str}' to GBC entity: {node_name}") - return Qent_GBCent_map + return query_to_gbc_entity_map def _get_query_entity(self, query: str) -> Dict[str, List[str]]: """ @@ -141,8 +147,11 @@ def _get_query_entity(self, query: str) -> Dict[str, List[str]]: retrieval_node_names = set() retrieval_nodes = [] for ent_info in retrieval_ents: - ent_name = ent_info["metadata"].get("entity_name") - ent_type = ent_info["metadata"].get("entity_type") + metadata = ent_info.get("metadata") or {} + ent_name = metadata.get("entity_name") + ent_type = metadata.get("entity_type") + if not ent_name: + continue node_dict = { "entity_name": ent_name, "entity_type": ent_type, @@ -180,28 +189,45 @@ def _get_query_entity(self, query: str) -> Dict[str, List[str]]: log.info("Use the question as the entity.") res_entities = [Entity(entity_name=query, entity_type="Question")] - Qent_GBCent_map = defaultdict(list) + query_to_gbc_entity_map = defaultdict(list) remain_ents = [] for res_ent in res_entities: - res_ent.entity_name = res_ent.entity_name.lower() - res_ent.entity_type = res_ent.entity_type.upper() - res_ent.entity_type = res_ent.entity_type.replace(" ", "_") + res_ent.entity_name = normalize_entity_name(res_ent.entity_name) + res_ent.entity_type = normalize_entity_type(res_ent.entity_type) + ent_str = self._get_entity_embed_text(res_ent) + + ontology_cfg = getattr(self.gbc_index.config, "ontology", None) + ontology_node_name = None + if ontology_cfg and ontology_cfg.use_query_resolution: + ontology_node_name = find_best_graph_ontology_node( + graph=self.gbc_index.GraphIndex, + entity_name=res_ent.entity_name, + entity_type=res_ent.entity_type, + threshold=ontology_cfg.mapping_threshold, + ) + if ontology_node_name: + query_to_gbc_entity_map[ent_str].append(ontology_node_name) + log.info( + f"Entity '{ent_str}' mapped to ontology-backed GBC entity: {ontology_node_name}" + ) + continue + ent_node_name = self.gbc_index.GraphIndex.get_node_name_from_entity(res_ent) if ent_node_name in retrieval_node_names: - Qent_GBCent_map[ent_node_name].append(ent_node_name) + query_to_gbc_entity_map[ent_str].append(ent_node_name) log.info( f"Entity '{ent_node_name}' mapped to GBC entity: {ent_node_name}" ) else: remain_ents.append(res_ent) - should_force_one = (len(Qent_GBCent_map) == 0) + should_force_one = len(query_to_gbc_entity_map) == 0 if remain_ents: remain_map = self._entity_map(remain_ents, force_one=should_force_one) for k, v in remain_map.items(): - Qent_GBCent_map[k].extend(v) + query_to_gbc_entity_map[k].extend(v) - return Qent_GBCent_map + return query_to_gbc_entity_map def link_tree_node(self, entities_map: Dict[str, List[str]]) -> List[dict]: """ @@ -218,7 +244,7 @@ def link_tree_node(self, entities_map: Dict[str, List[str]]) -> List[dict]: return [] for node_name in all_map_nodenames: - tree_node_set = self.gbc_index.GraphIndex.NodeName2TreeNodes(node_name) + tree_node_set = self.gbc_index.GraphIndex.node_name_to_tree_nodes(node_name) for node_id in tree_node_set: tree_node_cnt[node_id].append(node_name) @@ -270,7 +296,7 @@ def prep_SecSel_prompt( query, link_nodes: List[TreeNode] = None, remain_nodes: List[TreeNode] = None, - sec_entity_map: Dict[int, List[str]] = None, + sec_entity_map: Optional[Dict[int, List[str]]] = None, ) -> str: """ Prepare the prompt for section selection. @@ -278,7 +304,7 @@ def prep_SecSel_prompt( """ def prep_nodes_json( - nodes: List[TreeNode], sec_entity_map: Dict[int, List[str]] = None + nodes: List[TreeNode], sec_entity_map: Optional[Dict[int, List[str]]] = None ) -> str: node_infos = [] for node in nodes: @@ -433,8 +459,8 @@ def get_GBC_info(self, iter_context: SubStep) -> None: log.info(f"After skyline filtering, select {len(tree_node_ids)} TreeNodes") - Graph_data = self.gbc_index.GraphIndex.get_subgraph_data(res_entities) - iter_context.iteration_graph_nodes = Graph_data.get("nodes", []) + graph_data = self.gbc_index.GraphIndex.get_subgraph_data(res_entities) + iter_context.iteration_graph_nodes = graph_data.get("nodes", []) tree_data = self.gbc_index.TreeIndex.get_nodes_data(tree_node_ids) self._process_retrieved_nodes(tree_data, iter_context) @@ -454,10 +480,10 @@ def _retrieve( iter_context: IterationStep, Iteration context for the current step. """ - Qent_GBCent_map = self._get_query_entity(query) - iter_context.gbc_entity_map = Qent_GBCent_map + query_to_gbc_entity_map = self._get_query_entity(query) + iter_context.gbc_entity_map = query_to_gbc_entity_map - tree_nodes = self.link_tree_node(Qent_GBCent_map) + tree_nodes = self.link_tree_node(query_to_gbc_entity_map) iter_context.linked_tree_nodes = tree_nodes # 3. Use LLM to select the most relevant section or supplementary sections @@ -570,7 +596,8 @@ def process_analysis(self, context: GBCRAGContext, query_analysis: PlanResult): context.final_answer = "I'm sorry, I cannot process this query." def _create_augmented_prompt(self, query: str) -> str: - pass + """Current GBC flow builds prompts via answer agents, so return the raw query.""" + return query def generation(self, query: str, query_output_dir: str): context = GBCRAGContext(query=query) @@ -625,6 +652,4 @@ def _save_retrieval_res(self, context: GBCRAGContext, query_output_dir: str): def close(self): self.embedder.close() self.reranker.close() - # if hasattr(self, 'mm_reranker'): - # self.mm_reranker.close() return super().close() diff --git a/Core/utils/ontology_utils.py b/Core/utils/ontology_utils.py new file mode 100644 index 0000000..7ea71a9 --- /dev/null +++ b/Core/utils/ontology_utils.py @@ -0,0 +1,158 @@ +from difflib import SequenceMatcher +from typing import TYPE_CHECKING, Iterable, Optional, Tuple + +if TYPE_CHECKING: + from Core.Index.Graph import Graph + + +def normalize_entity_name(value: str) -> str: + return " ".join(str(value or "").strip().split()).lower() + + +def normalize_entity_type(value: str) -> str: + return str(value or "").strip().upper().replace(" ", "_") + + +def dedupe_terms(values: Iterable[str]) -> list[str]: + deduped: list[str] = [] + for value in values: + normalized = normalize_entity_name(value) + if normalized and normalized not in deduped: + deduped.append(normalized) + return deduped + + +def types_compatible(left: str, right: str) -> bool: + left_norm = normalize_entity_type(left) + right_norm = normalize_entity_type(right) + if not left_norm or not right_norm: + return True + if left_norm in {"QUESTION", "UNKNOWN"}: + return True + return left_norm == right_norm + + +def entity_name_similarity(left: str, right: str) -> float: + left_norm = normalize_entity_name(left) + right_norm = normalize_entity_name(right) + if not left_norm or not right_norm: + return 0.0 + if left_norm == right_norm: + return 1.0 + return SequenceMatcher(None, left_norm, right_norm).ratio() + + +def find_best_ontology_match( + entity, ontology_cfg +) -> Tuple[Optional[object], float]: + if not getattr(ontology_cfg, "enabled", False): + return None, 0.0 + + best_match = None + best_score = 0.0 + for candidate in getattr(ontology_cfg, "entities", []): + if getattr(candidate, "status", "active") == "deprecated": + continue + if not types_compatible(entity.entity_type, candidate.entity_type): + continue + candidate_terms = dedupe_terms( + [candidate.entity_name, *candidate.aliases, *getattr(candidate, "keywords", [])] + ) + score = max(entity_name_similarity(entity.entity_name, alias) for alias in candidate_terms) + if score > best_score: + best_match = candidate + best_score = score + + threshold = getattr(ontology_cfg, "mapping_threshold", 1.0) + if best_match is None or best_score < threshold: + return None, best_score + return best_match, best_score + + +def align_entities_to_ontology(entities, relationships, ontology_cfg): + if not getattr(ontology_cfg, "enabled", False) or not getattr(ontology_cfg, "entities", None): + return entities, relationships + + aligned_entities = [] + original_name_map: dict[str, str] = {} + allow_provisional_entities = getattr(ontology_cfg, "allow_provisional_entities", True) + for entity in entities: + original_name = entity.entity_name + matched_entity, confidence = find_best_ontology_match(entity, ontology_cfg) + if matched_entity is not None: + description = matched_entity.description or entity.description + if matched_entity.description and entity.description: + entity_desc = entity.description.strip() + onto_desc = matched_entity.description.strip() + if entity_desc and entity_desc not in onto_desc: + description = f"{onto_desc}\n\nMention detail: {entity_desc}" + aligned = entity.model_copy( + update={ + "entity_name": matched_entity.entity_name, + "entity_type": matched_entity.entity_type, + "description": description, + "entity_id": matched_entity.entity_id, + "canonical_id": matched_entity.entity_id, + "entity_role": "canonical", + "aliases": dedupe_terms( + [entity.entity_name, matched_entity.entity_name, *matched_entity.aliases] + ), + "mapping_confidence": confidence, + "ontology_source": matched_entity.ontology_source, + } + ) + elif allow_provisional_entities: + aligned = entity.model_copy( + update={ + "entity_name": normalize_entity_name(entity.entity_name), + "entity_type": normalize_entity_type(entity.entity_type), + "entity_role": entity.entity_role or "provisional", + "aliases": dedupe_terms([entity.entity_name, *entity.aliases]), + "mapping_confidence": entity.mapping_confidence, + } + ) + else: + continue + original_name_map[original_name] = aligned.entity_name + aligned_entities.append(aligned) + + aligned_relationships = [] + for relationship in relationships: + if ( + relationship.src_entity_name not in original_name_map + or relationship.tgt_entity_name not in original_name_map + ): + continue + aligned_relationship = relationship.model_copy(deep=True) + aligned_relationship.src_entity_name = original_name_map.get( + relationship.src_entity_name, relationship.src_entity_name + ) + aligned_relationship.tgt_entity_name = original_name_map.get( + relationship.tgt_entity_name, relationship.tgt_entity_name + ) + aligned_relationships.append(aligned_relationship) + + return aligned_entities, aligned_relationships + + +def find_best_graph_ontology_node( + graph: "Graph", entity_name: str, entity_type: str, threshold: float = 1.0 +) -> Optional[str]: + best_node_name = None + best_score = 0.0 + for node_name in graph.get_all_nodes(): + entity = graph.get_entity_by_node_name(node_name) + if entity.entity_role != "canonical" and not entity.canonical_id: + continue + if not types_compatible(entity_type, entity.entity_type): + continue + score = max( + entity_name_similarity(entity_name, alias) + for alias in dedupe_terms([entity.entity_name, *entity.aliases]) + ) + if score > best_score: + best_score = score + best_node_name = node_name + if best_score < threshold: + return None + return best_node_name \ No newline at end of file diff --git a/api/services/indexing.py b/api/services/indexing.py index 7a052f2..5acf04c 100644 --- a/api/services/indexing.py +++ b/api/services/indexing.py @@ -18,7 +18,7 @@ def _build_index_sync( """Synchronous index build — runs in a thread pool.""" from Core.configs.system_config import load_system_config from Core.configs.falkordb_config import FalkorDBConfig - from Core.pipelines.doc_tree_builder import construct_GBC_index + from Core.construct_index import construct_gbc_index cfg = load_system_config(config_path) cfg.pdf_path = pdf_path @@ -39,7 +39,7 @@ def _build_index_sync( host=FALKORDB_HOST, port=FALKORDB_PORT, username=FALKORDB_USERNAME, password=FALKORDB_PASSWORD, ) - construct_GBC_index(cfg) + construct_gbc_index(cfg) async def run_indexing( diff --git a/config/gbc.yaml b/config/gbc.yaml index aeb4b80..ee630fb 100644 --- a/config/gbc.yaml +++ b/config/gbc.yaml @@ -68,6 +68,20 @@ vdb: model_name: Alibaba-NLP/gme-Qwen2-VL-2B-Instruct device: "cuda:1" +ontology: + enabled: false + mapping_threshold: 1.0 + allow_provisional_entities: true + use_query_resolution: true + entities: + - ontology_id: "product:bookrag" + canonical_name: "bookrag" + entity_type: "PRODUCT" + description: "The BookRAG application and retrieval pipeline." + aliases: + - "book rag" + - "book-rag" + falkordb: host: "r-6jissuruar.instance-yc6en3ndn.hc-dx5io0svq.asia-south1.gcp.f2e0a955bb84.cloud" port: 60480 diff --git a/docs/bookrag-architecture-review.md b/docs/bookrag-architecture-review.md new file mode 100644 index 0000000..19ac848 --- /dev/null +++ b/docs/bookrag-architecture-review.md @@ -0,0 +1,883 @@ +# BookRAG Architecture Review and Comparison with Three-Layer Fixed Entity Architecture + +## 1. Purpose of This Document + +This document explains how the current BookRAG application is implemented, how its retrieval pipeline works end to end, and how it compares with the "Three-Layer Fixed Entity Architecture" (FEA) pattern for graph-based RAG. + +The goal is to answer three practical questions: + +1. What is BookRAG doing today? +2. How is it similar to and different from FEA? +3. Can FEA ideas improve BookRAG, and if so, where? + +## 2. Executive Summary + +BookRAG is not a pure GraphRAG system and it is not an ontology-first system. It is better described as a **hybrid hierarchical-document + knowledge-graph + vector retrieval architecture** with query planning and multimodal answer generation. + +Its strongest architectural characteristics are: + +- **Document structure first**: PDF content is converted into a hierarchical `DocumentTree`. +- **Graph derived from structure**: the knowledge graph is extracted from tree nodes, not from flat chunks alone. +- **Hybrid retrieval**: answers are grounded using tree structure, graph connectivity, and vector similarity together. +- **Query-aware orchestration**: the system classifies queries into simple, complex, and global modes. +- **Multimodal answering**: text, tables, and images can all contribute to the final answer. + +Compared with FEA, BookRAG already shares the idea that **entities bridge user questions and source evidence**. However, BookRAG does **not** currently implement a stable canonical ontology layer above extracted entities. That is the main conceptual gap. + +## 3. What the Three-Layer Fixed Entity Architecture Means + +The Three-Layer Fixed Entity Architecture is best understood as an **ontology-first graph RAG pattern** with three conceptual layers: + +It does not appear to be a mainstream standard framework in the academic GraphRAG literature. In practice, it is more useful to treat it as a **design pattern** for domain-governed graph retrieval. + +1. **Ontology / fixed entity layer** + Stable canonical entities, types, and controlled relationships. +2. **Document layer** + Source documents, passages, or chunks that contain evidence. +3. **Extracted entity / mention layer** + Mentions or extracted entities from documents, linked upward to canonical entities and downward to source evidence. + +The design goal is to reduce noisy entity duplication, improve explainability, and make graph retrieval more precise in domain-specific settings. + +## 4. High-Level BookRAG Architecture + +At a high level, BookRAG has two major operating modes: + +- **Offline indexing**: parse documents, build a structural tree, extract/refine a graph, and build vector resources. +- **Online RAG**: analyze the query, map it to graph/tree evidence, retrieve relevant substructures, and generate an answer. + +Conceptually, the pipeline is: + +`PDF -> parser -> refined PDF structure -> DocumentTree -> KG extraction/refinement -> Graph + tree-to-graph links -> vector indices -> query planning -> entity mapping -> section/subtree/subgraph retrieval -> reranking -> answer generation` + +## 5. Main Implementation Surfaces + +### 5.1 CLI entry point + +`main.py` is the main batch and single-document entry point. + +It supports: + +- `index` mode for offline construction +- `rag` mode for inference +- staged indexing via `--stage` +- dataset-driven multi-document processing +- split-based processing for parallel workers +- config snapshotting and run logging + +This makes the project operationally closer to a **pipeline system** than a demo-only chatbot. + +### 5.2 API entry point + +`api/main.py` exposes BookRAG as a FastAPI service with: + +- startup config validation +- structured JSON logging +- request ID propagation +- MongoDB lifecycle/index management +- optional FalkorDB health checking +- routers for auth, tenants, documents, chat, and entities + +This indicates the repository is designed for **multi-tenant application deployment**, not only offline experiments. + +## 6. Core Data Structures + +### 6.1 Document tree + +`Core/Index/Tree.py` defines the structural backbone: + +- `DocumentTree` +- `TreeNode` +- `NodeType` +- `MetaInfo` + +This tree stores document hierarchy such as titles, sections, text blocks, tables, and images. It also supports subtree extraction, ancestor navigation, depth-aware traversal, and retrieval-friendly node serialization. + +This is the first major difference from FEA: **BookRAG is tree-first, not ontology-first**. + +### 6.2 Knowledge graph + +`Core/Index/Graph.py` defines the graph layer: + +- `Entity` +- `Relationship` +- `Graph` + +The graph is backed by `networkx.Graph` in memory and can be saved or reconstructed through FalkorDB. A key implementation detail is the `tree2kg` mapping, which links structural document nodes to graph nodes. + +That mapping is crucial because BookRAG does not retrieve graph evidence in isolation. It uses the graph to lead back into the source document structure. + +### 6.3 Hybrid GBC index + +`Core/Index/GBCIndex.py` packages the main retrieval assets into a unified object: + +- tree index +- graph index +- entity vector database + +This confirms that the production architecture is **hybrid by design**, rather than a single-layer graph database solution. + +## 7. Offline Index Construction Flow + +The main offline orchestration entry is `Core/construct_index.py`, which coordinates tree building, KG construction, GBC index creation, and vector resource rebuilding. + +### 7.1 Tree construction + +`Core/pipelines/doc_tree_builder.py` builds the `DocumentTree`. + +Important behaviors include: + +- parser selection between **Docling** and **MinerU** +- cache-aware parsing +- PDF refinement +- outline extraction +- legal heading detection +- optional node summary generation + +This stage turns raw PDFs into a structured hierarchy that later retrieval can reason over. + +### 7.2 KG construction + +`Core/pipelines/kg_builder.py` extracts a graph from the tree. + +Important characteristics: + +- extraction is tree-node aware +- title nodes are handled differently from non-title nodes +- graph refinement supports at least `basic` and `advanced` modes +- post-processing refines both entities and relations + +The key design principle is: **the graph is derived from the document tree rather than replacing it**. + +### 7.3 Vector resources + +After tree and graph construction, the system rebuilds vector resources, especially entity-oriented lookup resources used during query-to-graph mapping. + +This gives BookRAG three retrieval surfaces at runtime: + +1. document hierarchy +2. graph connectivity +3. semantic vector similarity + +## 8. Online Retrieval and Answer Generation Flow + +### 8.1 Inference orchestration + +`Core/inference.py` prepares dependencies, creates the configured RAG agent, runs the query dataset, stores per-query outputs, and records token cost. + +This operational layer is important because it shows BookRAG is structured as a repeatable evaluation pipeline, not only a live chat handler. + +### 8.2 Main RAG implementation + +The most representative runtime path is `Core/rag/gbc_rag.py`. + +There is also a simpler `Core/rag/graph_rag.py`, but it is not the best file for understanding the full BookRAG architecture. The `GBCRAG` path is the real reference implementation for the current system design. + +Its main logic combines: + +- `TaskPlanner` +- `Retriever` +- `AnswerAgent` + +This is significantly more advanced than a basic entity-hop graph retriever. + +### 8.3 Query understanding + +`Core/rag/gbc_plan.py` classifies queries into: + +- `simple` +- `complex` +- `global` + +Complex queries can be decomposed into sub-questions, while global queries can include filtering and aggregation logic. + +This is one of BookRAG's strongest differentiators. FEA usually describes graph organization, but BookRAG also includes **query planning as a first-class runtime component**. + +### 8.4 Query entity mapping + +In `gbc_rag.py`, the system extracts or retrieves query entities, normalizes them, and maps them to graph nodes using a combination of LLM reasoning and vector retrieval. + +This is the part of the architecture that is closest in spirit to FEA: the query is translated into an entity-centered access path through the graph. + +### 8.5 Section and subtree retrieval + +BookRAG does not stop at graph hits. It maps graph nodes back to tree nodes, promotes them to relevant section ancestors, and may supplement them with LLM-based section selection. + +This is a major design choice: + +- graph nodes help identify relevant concepts +- tree structure recovers coherent document context +- subtree retrieval preserves hierarchical evidence around the hit + +This is stronger than flat chunk retrieval and also different from a pure ontology graph lookup. + +### 8.6 Graph and text reranking + +`Core/rag/gbc_retrieval.py` provides three major behaviors: + +- text reranking +- graph reranking +- skyline filtering + +The graph reranker uses query-entity similarity, graph enhancement, and personalized PageRank-style scoring. The skyline stage then combines graph and text signals instead of depending on only one scoring channel. + +An important nuance: comments referring to a "Three Layer Reranker" in retrieval code are about reranking signals, **not** the Three-Layer Fixed Entity Architecture. + +### 8.7 Answer generation + +`Core/rag/gbc_answer.py` handles final answer construction. + +It supports: + +- text evidence +- table-to-text conversion +- image-aware reasoning with VLM support +- chunked prompting under token budgets +- synthesis across partial answers +- map-reduce style answering for global questions + +This means BookRAG is not only a retriever architecture; it is also a **multimodal answer synthesis system**. + +## 9. Configuration and Storage Model + +`config/gbc.yaml` shows the default configuration shape. + +Important implementation themes are: + +- `parser: docling` +- graph refine mode set to `advanced` +- separate LLM, VLM, embedding, and reranker configuration +- vector database configuration +- FalkorDB connectivity for graph persistence +- `rag.strategy: gbc` +- `topk`, `select_depth`, and retry controls for retrieval behavior + +The configuration confirms that BookRAG is intended to run as a configurable production-style system, not as a hard-coded prototype. + +## 10. Similarities Between BookRAG and FEA + +BookRAG and FEA are similar in several important ways. + +### 10.1 Entities are the bridge between questions and evidence + +In both designs, entities are central to retrieval. The user query is interpreted in terms of entities or concepts, and those entities connect the query to evidence. + +### 10.2 Evidence remains anchored to source documents + +Neither design treats the graph as sufficient by itself. Both depend on linking graph-level concepts back to grounded document evidence. + +### 10.3 Graph structure improves over naive vector-only retrieval + +Both architectures use graph relationships to improve retrieval quality, especially for multi-hop, concept-heavy, or relationship-sensitive questions. + +### 10.4 Normalization matters + +Both approaches implicitly depend on entity normalization. BookRAG does it through extraction/refinement/vector matching; FEA emphasizes doing it through a stable canonical layer. + +## 11. Differences Between BookRAG and FEA + +### 11.0 Compact comparison matrix + +| Dimension | BookRAG | Three-Layer FEA | +|---|---|---| +| Primary organizing principle | Document hierarchy | Canonical ontology/entities | +| Source grounding | Tree nodes and sections | Documents/chunks linked to entities | +| Graph identity | Extracted/refined entities | Fixed canonical entities + mentions | +| Runtime retrieval | Hybrid tree + graph + vector | Usually graph/entity-centered | +| Query planning | Strong | Usually out of scope | +| Multimodal answering | Present | Not a defining feature | +| Best strength | Long structured document reasoning | Precision and normalization in fixed domains | + +### 11.1 BookRAG is tree-first; FEA is ontology-first + +This is the most important difference. + +- **BookRAG** starts by building a structural document tree. +- **FEA** starts by defining a fixed conceptual entity layer. + +In BookRAG, graph meaning is downstream of document structure. In FEA, document meaning is organized around canonical domain entities. + +### 11.2 BookRAG does not yet have a fixed canonical ontology layer + +BookRAG extracts entities from documents and refines them, but it does not clearly enforce a stable ontology layer containing canonical entity definitions, allowed types, and controlled relation schemas. + +This can lead to: + +- duplicate entities across documents +- inconsistent typing +- weaker cross-document consolidation +- harder governance in domain-specific deployments + +### 11.3 BookRAG is operationally richer than FEA + +FEA is mainly a graph organization pattern. BookRAG includes several runtime capabilities that go beyond that: + +- query planning and decomposition +- section-depth selection +- subtree-induced subgraph retrieval +- skyline fusion of graph and text ranking +- multimodal answer generation +- batch CLI and multi-tenant API deployment + +So FEA is narrower and more schema-centric, while BookRAG is broader and more end-to-end. + +### 11.4 BookRAG optimizes context coherence through sections + +FEA often focuses on entity-document grounding. BookRAG goes further by recovering section-level and subtree-level context from a document hierarchy. + +For long complex PDFs, this is a major advantage. + +## 12. Can FEA Improve BookRAG? + +Yes, but not as a replacement. The best use of FEA is to **strengthen BookRAG's graph and normalization layer** while preserving BookRAG's tree-first retrieval strengths. + +The right framing is: + +- **keep** BookRAG's document tree, planner, reranker, and answer synthesis +- **add** a canonical ontology/fixed-entity layer above the current extracted graph + +## 13. Recommended Improvement Areas + +### 13.1 Add a canonical entity layer above extracted entities + +Introduce a persistent canonical layer with: + +- controlled entity types +- canonical IDs +- synonym/alias tables +- relation constraints +- optional domain taxonomy + +Then map extracted entities to canonical nodes rather than treating extracted surface forms as the final graph identity. + +This would be the closest direct adoption of FEA. + +### 13.2 Separate mention nodes from canonical entity nodes + +A stronger graph pattern would be: + +- **canonical entity nodes** +- **document/tree section nodes** +- **mention or extracted instance nodes** + +This would make BookRAG more explainable and better at traceability, especially when multiple documents mention the same concept differently. + +### 13.3 Use ontology guidance during KG refinement + +The current refinement process could be improved by validating extracted entities and relationships against canonical schema rules. + +This could reduce: + +- noisy relation creation +- inconsistent labels +- entity fragmentation + +### 13.4 Improve cross-document and global retrieval + +`Graph.py` already hints at global graph support through methods for global graph save/load behavior. FEA-style canonical entities would make those global capabilities much stronger. + +This is especially valuable for: + +- multi-document reasoning +- tenant-wide knowledge consolidation +- repeated entities across books or regulations + +### 13.5 Keep the tree as the primary evidence surface + +Even after adopting FEA ideas, BookRAG should continue using the document tree as the main evidence recovery structure. + +This is important because the tree preserves: + +- section boundaries +- local context +- layout-aware structure +- multimodal content placement + +Replacing the tree with a graph-only ontology design would weaken BookRAG's long-document strengths. + +## 14. Recommended Target Architecture + +The best future architecture is a **four-part hybrid**: + +1. **Canonical ontology/entity layer** for stable domain identity +2. **Mention/extracted entity layer** for document-grounded extractions +3. **DocumentTree layer** for structural evidence recovery +4. **Hybrid runtime retriever** for graph + tree + vector + planner orchestration + +In other words, BookRAG should not become "FEA instead of GBC". It should become **GBC with an ontology-governed canonical entity layer**. + +## 15. Final Assessment + +### 15.1 What BookRAG already does well + +- Strong handling of complex document structure +- Hybrid retrieval rather than graph-only retrieval +- Query planning for different question types +- Section-aware evidence recovery +- Multimodal answer generation +- Practical CLI and API deployment surfaces + +### 15.2 What FEA contributes + +- canonical identity +- ontology governance +- cleaner cross-document consolidation +- stronger explainability for entity normalization +- better domain precision in regulated or specialized corpora + +### 15.3 Overall conclusion + +BookRAG is already architecturally more comprehensive than the Three-Layer Fixed Entity Architecture as a full application system. However, FEA offers an important improvement in one specific area: **a fixed canonical ontology/entity layer that stabilizes the graph**. + +Therefore, the recommendation is: + +- **Do not replace the current BookRAG design with FEA.** +- **Adopt FEA principles to improve entity canonicalization, ontology control, and global graph consistency.** + +That would preserve BookRAG's current strengths while addressing one of the clearest structural opportunities for improvement. + +## 16. Ontology-Driven Extension Proposal + +The user suggestion is directionally correct: **allow users to define ontology entities with descriptions, then use those entities as the base canonical layer during indexing**. + +As an architectural recommendation, this should be implemented as a **guided open-world design**, not a closed-world design. + +That means: + +- user-defined ontology entities become the preferred canonical targets +- extracted document entities are mapped onto that ontology when confidence is high +- unmatched entities are still preserved as provisional or local entities +- the ontology can be expanded over time from repeated provisional entities + +This is the safest way to improve precision without harming recall. + +### 16.1 Why this is valuable for BookRAG + +This proposal fits BookRAG especially well because the current system already has: + +- strong document grounding through `DocumentTree` +- a KG extraction and refinement pipeline +- entity vector lookup during retrieval +- multi-document and global-graph ambitions in `Graph.py` + +What it lacks most clearly is a **stable canonical identity layer** shared across document-specific mentions. + +### 16.2 Recommended design principle + +The right principle is: + +1. **Ontology entity** = stable canonical concept defined by the user +2. **Mention entity** = what the extractor found in a specific document node +3. **Evidence node** = the `DocumentTree` node that grounds the mention + +The ontology should be the **base layer**, but not the **only allowed layer**. + +### 16.2.1 Mermaid architecture sketch + +```mermaid +flowchart LR + O[User ontology\ncanonical entities] --> A[Ontology alignment] + D[DocumentTree nodes] --> E[KG extraction] + E --> A + A --> K[Canonical and provisional KG entities] + K --> V[Entity VDB] + Q[User query] --> R[Query entity extraction] + R --> F[Ontology-first resolution] + F --> K + K --> T[Linked tree evidence] + T --> S[BookRAG answer synthesis] +``` + +### 16.3 Why entity descriptions matter + +Descriptions are not optional metadata; they are part of the matching signal. + +They help disambiguate cases such as: + +- the same alias referring to different concepts +- domain-specific abbreviations +- entities with similar names but different roles + +For this reason, user-provided ontology descriptions should be used in: + +- indexing-time entity alignment +- query-time entity resolution +- ambiguity handling when multiple ontology entities are plausible + +## 17. Concrete Schema for User-Defined Ontology + +The schema should be tenant-scoped and explicitly designed for canonicalization. + +### 17.1 Core ontology entity schema + +| Field | Required | Type | Purpose | +|---|---|---|---| +| `ontology_id` | Yes | `str` | Stable canonical identifier used across documents and queries | +| `canonical_name` | Yes | `str` | Preferred human-readable entity name | +| `entity_type` | Yes | `str` | Controlled type such as `PERSON`, `ORG`, `LAW`, `PRODUCT`, `CLAUSE` | +| `description` | Yes | `str` | Meaning/definition used for disambiguation and retrieval | +| `aliases` | Yes | `list[str]` | Synonyms, abbreviations, alternate spellings | +| `keywords` | No | `list[str]` | Supporting lexical terms for retrieval and matching | +| `parent_ids` | No | `list[str]` | Optional taxonomy or hierarchical ontology support | +| `allowed_relation_types` | No | `list[str]` | Optional whitelist of relations this entity can participate in | +| `examples` | No | `list[str]` | Example mentions or phrases found in documents | +| `status` | No | `str` | `active`, `draft`, `deprecated` | +| `tenant_id` | Yes | `str` | Scope for multi-tenant isolation | +| `metadata` | No | `dict` | Domain-specific extensions | + +### 17.2 Relation rule schema + +If the ontology is meant to guide relationship refinement, add a relation policy table. + +| Field | Required | Type | Purpose | +|---|---|---|---| +| `relation_type` | Yes | `str` | Canonical relation label | +| `src_entity_type` | Yes | `str` | Allowed source type | +| `tgt_entity_type` | Yes | `str` | Allowed target type | +| `description` | No | `str` | Semantic definition of the relation | +| `directional` | No | `bool` | Whether direction matters | +| `status` | No | `str` | `active`, `draft`, `deprecated` | + +This is useful for constraining noisy KG relations extracted from documents. + +### 17.3 Mention-to-canonical mapping record + +The ontology entity itself is not enough. The system should also persist mapping decisions. + +| Field | Required | Type | Purpose | +|---|---|---|---| +| `mention_text` | Yes | `str` | Surface form found in the document | +| `mention_type` | Yes | `str` | Extracted type before canonicalization | +| `source_tree_node_id` | Yes | `int` | Tree node where the mention appeared | +| `canonical_ontology_id` | No | `str` | Resolved ontology target if matched | +| `match_method` | Yes | `str` | `alias`, `embedding`, `llm`, `rule`, `manual` | +| `match_confidence` | Yes | `float` | Confidence score for the mapping | +| `mapping_status` | Yes | `str` | `matched`, `ambiguous`, `provisional`, `rejected` | + +This record is important for explainability, debugging, and ontology curation. + +### 17.4 Minimum viable ontology payload + +At minimum, every user-provided ontology entity should include: + +- `ontology_id` +- `canonical_name` +- `entity_type` +- `description` +- `aliases` + +That is the smallest schema that is still strong enough to improve indexing quality. + +## 18. Codebase-Specific Integration Plan + +This section ties the ontology proposal to the current implementation in `Core/pipelines/kg_builder.py`, `Core/Index/Graph.py`, and `Core/rag/gbc_rag.py`. + +### 18.1 Integration into `Core/pipelines/kg_builder.py` + +Current flow in `build_knowledge_graph(tree, cfg)` is: + +1. create `Graph` +2. create `KGExtractor` +3. create `KGRefiner` +4. batch extract entities/relations from tree nodes +5. run `basic_kg_refiner(...)` or `advanced_kg_refiner(...)` +6. run `refine_entities()` and `refine_relation()` + +The ontology-aware version should become: + +1. load tenant ontology and relation rules +2. batch extract raw entities/relations from tree nodes +3. align extracted entities to ontology +4. send canonicalized entities into KG refinement +5. persist canonical, mention, and provenance links +6. refine unresolved/provisional entities separately + +#### Recommended insertion point + +The best insertion point is **between extraction and final refinement**. + +Conceptually: + +- `batch_extract_titles(...)` / `batch_extract_kg(...)` +- ontology alignment step +- `advanced_kg_refiner(...)` or `basic_kg_refiner(...)` +- `refine_entities()` / `refine_relation()` + +#### Practical behavior + +For each extracted entity, the builder should: + +1. normalize the extracted name +2. attempt exact alias match against ontology +3. attempt embedding match against ontology name + description + aliases +4. use LLM disambiguation only when multiple ontology candidates remain plausible +5. mark the result as: + - matched to canonical ontology entity, + - ambiguous, + - or provisional + +#### Minimal-change implementation path + +If minimal disruption is preferred, `kg_builder.py` can first adopt a lightweight approach: + +- replace matched extracted entity names/types with canonical ontology values before passing them into the current refiner +- keep unmatched entities in the existing extracted-entity flow +- attach mapping metadata for later use + +This gives immediate value without requiring a full graph schema redesign in the first phase. + +#### Better long-term implementation path + +The stronger design is to create explicit: + +- canonical ontology nodes +- mention nodes +- mention-to-canonical links + +That better matches the architecture implied by the user proposal. + +### 18.2 Integration into `Core/Index/Graph.py` + +`Graph.py` is the most important structural change point because the current `Entity` model only stores: + +- `entity_name` +- `entity_type` +- `description` +- `source_ids` + +That is not enough to model canonical ontology entities and document-level mentions separately. + +#### Recommended graph model extension + +The graph layer should distinguish at least three node roles: + +1. `canonical` +2. `mention` +3. `provisional` + +The simplest extension is to add metadata fields to `Entity`, for example: + +- `entity_id` +- `entity_role` +- `canonical_id` +- `aliases` +- `mapping_confidence` +- `ontology_source` +- `status` + +An even better design is to add dedicated models such as: + +- `OntologyEntity` +- `MentionEntity` +- `OntologyRelationRule` + +but the metadata-extension approach is the least disruptive to the current code. + +#### Node identity recommendation + +Today, node identity is derived from: + +- `Name: {entity_name}` +- `Type: {entity_type}` + +That is too weak if canonical nodes and mention nodes may share the same name and type. + +The safer design is to move toward explicit IDs such as: + +- canonical node name based on `ontology_id` +- mention node name based on `doc_id + tree_node_id + mention_text` + +This prevents collisions and makes provenance cleaner. + +#### New helper methods to add + +The graph layer would benefit from helpers such as: + +- `add_canonical_entity(...)` +- `add_mention_entity(...)` +- `link_mention_to_canonical(...)` +- `get_mentions_for_canonical(...)` +- `resolve_to_canonical(...)` + +#### `tree2kg` recommendation + +Currently `tree2kg` maps tree nodes directly to graph nodes. + +With ontology support, the preferred behavior is: + +- tree nodes link first to mention nodes +- mention nodes link to canonical nodes + +This preserves exact document provenance while still allowing canonical retrieval. + +#### Global graph recommendation + +`save_to_global_graph()` already contains the right intuition in its docstring, but the current implementation still creates a self-referential `HAS_MENTION` edge. + +With ontology support, global graph persistence should instead store: + +- one canonical node per ontology entity +- document-scoped mention nodes or mention records +- explicit `HAS_MENTION` or `MENTIONED_IN` links across them + +This would make tenant-wide graph consolidation much more meaningful. + +#### Phase 2 explicit mention-to-canonical node model + +Once Phase 1 normalization is stable, BookRAG should move from metadata-only canonicalization to explicit graph structure. + +Recommended node types: + +- `CanonicalEntity` +- `MentionEntity` +- `EvidenceNode` (existing `DocumentTree` node reference) + +Recommended identifiers: + +- canonical node ID = `ontology_id` +- mention node ID = `doc_id + tree_node_id + mention_text + entity_type` + +Recommended edges: + +- `MENTION_OF`: `MentionEntity -> CanonicalEntity` +- `MENTIONED_IN`: `MentionEntity -> EvidenceNode` +- `CO_OCCURS_WITH` or extracted semantic relations between mention nodes + +Recommended retrieval behavior: + +1. resolve query entity to canonical node +2. expand canonical node to mention nodes +3. collect grounded `DocumentTree` evidence from mention nodes +4. optionally project mention-level relations back into a canonical summary view + +Migration path: + +- keep current canonical metadata fields for backward compatibility +- add mention nodes during indexing without removing current canonical nodes +- update retrieval to expand canonical nodes through `MENTION_OF` +- later make global graph persistence canonical-first and mention-aware + +### 18.3 Integration into `Core/rag/gbc_rag.py` + +`gbc_rag.py` is the main query-time resolution path. + +At present: + +- `_get_query_entity(...)` retrieves candidate entities from the entity VDB and LLM extraction +- `_entity_map(...)` maps extracted query entities to current graph node names +- `link_tree_node(...)` maps graph nodes back to tree nodes +- `get_GBC_info(...)` retrieves subtree/subgraph context from those starting points + +#### Recommended query-time resolution flow + +The ontology-aware version should become: + +1. extract candidate entities from the query +2. resolve them against the ontology layer first +3. convert them into canonical node IDs +4. expand canonical nodes to mentions and linked tree nodes +5. run the existing BookRAG subtree/subgraph retrieval flow + +This means the ontology layer should become the **first resolver**, not the final retriever. + +#### Changes to `_get_query_entity(...)` + +This method should first query an ontology-aware index built from: + +- canonical names +- aliases +- descriptions + +Only if ontology resolution fails should it fall back to the current entity VDB logic. + +This preserves BookRAG's current flexibility while improving precision when ontology coverage exists. + +#### Changes to `_entity_map(...)` + +Instead of mapping only to extracted graph nodes, `_entity_map(...)` should prefer canonical node targets. + +That means the returned mapping should ideally point to: + +- canonical ontology node names first +- provisional/extracted nodes only as fallback + +#### Changes to `link_tree_node(...)` + +If canonical nodes are introduced, `link_tree_node(...)` should expand canonical nodes through mention links before counting supporting tree nodes. + +Conceptually: + +- canonical node -> mention nodes -> `tree2kg` / source tree nodes + +This keeps the evidence path explainable. + +#### Changes to `get_GBC_info(...)` + +The downstream retrieval logic can stay mostly the same. + +Once canonical start entities have been expanded into tree nodes and subgraphs, BookRAG's existing strengths remain valid: + +- section selection +- subtree retrieval +- skyline filtering +- multimodal answer synthesis + +This is why ontology should be added as a **resolution layer**, not as a replacement for the current runtime design. + +### 18.4 Supporting configuration changes + +Although the main integration points are the three files above, the design will work better if configuration eventually adds an ontology section such as: + +- `ontology.enabled` +- `ontology.store_type` +- `ontology.path` or collection name +- `ontology.mapping_threshold` +- `ontology.allow_provisional_entities` +- `ontology.use_llm_disambiguation` + +This would keep ontology behavior explicit and tenant-configurable. + +## 19. Recommended Rollout Strategy + +To reduce risk, the best rollout is phased. + +### Phase 1: Canonical normalization only + +- load ontology during indexing +- map extracted entities to canonical names/types where confidence is high +- keep current graph structure mostly unchanged + +### Phase 2: Explicit mention and canonical nodes + +- extend `Graph.py` +- preserve mention provenance separately from canonical identity +- improve global graph persistence + +### Phase 3: Ontology-first query resolution + +- resolve user query entities against ontology before standard entity VDB +- expand canonical entities into mention and tree evidence +- surface canonical reasoning in retrieval traces + +### Phase 4: Ontology-governed relation refinement + +- validate extracted relations against ontology rules +- reject or downgrade invalid relation candidates +- improve cross-document graph consistency + +## 20. Final Recommendation on the User Proposal + +As an expert recommendation, the user proposal should be adopted in this refined form: + +- allow users to define ontology entities with descriptions +- use those entities as the canonical base layer during indexing +- keep extraction open enough to preserve new or unmatched entities +- resolve both indexed entities and query entities against the ontology first when possible + +In short: + +- **yes** to user-defined ontology entities as the base layer +- **yes** to using descriptions as part of matching and retrieval +- **no** to a fully closed ontology-only extraction model + +That design is the best balance between BookRAG's existing tree-first strengths and the canonical control offered by FEA-style ontology architecture. \ No newline at end of file diff --git a/main.py b/main.py index dcd3097..c37e3aa 100644 --- a/main.py +++ b/main.py @@ -10,7 +10,7 @@ from Core.configs.system_config import load_system_config, SystemConfig from Core.configs.dataset_config import load_dataset_config, DatasetConfig from Core.construct_index import ( - construct_GBC_index, + construct_gbc_index, construct_vdb, compute_mm_reranker, rebuild_graph_vdb, @@ -128,13 +128,13 @@ def build_index(config: SystemConfig, stage: str = "all", data_df: pd.DataFrame if stage in ["tree", "all"]: log.info(" - STAGE: Building Document Tree...") # This function should build the tree and save it to config.save_path - construct_GBC_index(config, tree_only=True) + construct_gbc_index(config, tree_only=True) # Stage 2: Build the Knowledge Graph if stage in ["graph", "all"]: log.info(" - STAGE: Building Knowledge Graph...") # This function should LOAD the pre-existing tree and then build/save the graph - construct_GBC_index(config) + construct_gbc_index(config) # Stage 3: Build the Vector Database if stage in ["vdb", "all"]: diff --git a/tests/test_ontology_integration.py b/tests/test_ontology_integration.py new file mode 100644 index 0000000..7703ef2 --- /dev/null +++ b/tests/test_ontology_integration.py @@ -0,0 +1,200 @@ +import json + +import yaml + +from Core.Index.Graph import Entity, Graph, Relationship +from Core.configs.ontology_config import OntologyConfig +from Core.configs.system_config import load_system_config +from Core.utils.ontology_utils import ( + align_entities_to_ontology, + find_best_graph_ontology_node, +) + + +def test_load_system_config_resolves_relative_ontology_path_and_merges_entities(tmp_path): + ontology_path = tmp_path / "ontology.yaml" + ontology_path.write_text( + yaml.safe_dump( + { + "entities": [ + { + "ontology_id": "product:file-backed", + "canonical_name": "file backed product", + "entity_type": "PRODUCT", + "description": "Loaded from ontology file.", + "aliases": ["fb product"], + } + ] + } + ), + encoding="utf-8", + ) + + config_path = tmp_path / "config.yaml" + config_path.write_text( + yaml.safe_dump( + { + "mineru": { + "backend": "vlm-sglang-client", + "method": "vlm", + "lang": "en", + }, + "rag": {"strategy": "gbc"}, + "ontology": { + "enabled": True, + "path": "ontology.yaml", + "entities": [ + { + "ontology_id": "product:inline", + "canonical_name": "inline product", + "entity_type": "PRODUCT", + "description": "Inline ontology entity.", + "aliases": ["inline alias"], + } + ], + }, + } + ), + encoding="utf-8", + ) + + cfg = load_system_config(str(config_path)) + + assert cfg.ontology.path == str(ontology_path.resolve()) + assert {entity.entity_id for entity in cfg.ontology.entities} == { + "product:inline", + "product:file-backed", + } + + +def test_align_entities_to_ontology_maps_entities_and_relationships(): + ontology_cfg = OntologyConfig( + enabled=True, + entities=[ + { + "ontology_id": "product:bookrag", + "canonical_name": "bookrag", + "entity_type": "PRODUCT", + "description": "The canonical BookRAG product entity.", + "aliases": ["book rag"], + } + ], + ) + entities = [ + Entity(entity_name="Book Rag", entity_type="product", description="Mentioned in text."), + Entity(entity_name="Retriever Engine", entity_type="system", description="Local component."), + ] + relationships = [ + Relationship( + src_entity_name="Book Rag", + tgt_entity_name="Retriever Engine", + relation_name="uses", + ) + ] + + aligned_entities, aligned_relationships = align_entities_to_ontology( + entities, relationships, ontology_cfg + ) + + canonical = next(entity for entity in aligned_entities if entity.entity_role == "canonical") + provisional = next(entity for entity in aligned_entities if entity.entity_role == "provisional") + assert canonical.entity_name == "bookrag" + assert canonical.canonical_id == "product:bookrag" + assert "book rag" in canonical.aliases + assert provisional.entity_name == "retriever engine" + assert aligned_relationships[0].src_entity_name == "bookrag" + assert aligned_relationships[0].tgt_entity_name == "retriever engine" + + +def test_align_entities_to_ontology_drops_unmatched_entities_when_provisional_disabled(): + ontology_cfg = OntologyConfig( + enabled=True, + allow_provisional_entities=False, + entities=[ + { + "ontology_id": "product:bookrag", + "canonical_name": "bookrag", + "entity_type": "PRODUCT", + "description": "The canonical BookRAG product entity.", + "aliases": ["book rag"], + } + ], + ) + entities = [ + Entity(entity_name="Book Rag", entity_type="product"), + Entity(entity_name="Unknown System", entity_type="system"), + ] + relationships = [ + Relationship( + src_entity_name="Book Rag", + tgt_entity_name="Unknown System", + relation_name="uses", + ) + ] + + aligned_entities, aligned_relationships = align_entities_to_ontology( + entities, relationships, ontology_cfg + ) + + assert [entity.entity_name for entity in aligned_entities] == ["bookrag"] + assert aligned_relationships == [] + + +def test_graph_update_entity_rewrites_edge_payload_names_and_tree_links(tmp_path): + graph = Graph(save_path=str(tmp_path)) + old_entity = Entity(entity_name="book rag", entity_type="PRODUCT", source_ids={1}) + other_entity = Entity(entity_name="retriever", entity_type="SYSTEM", source_ids={2}) + graph.add_and_link(tree_node_id=1, entities=old_entity) + graph.add_and_link(tree_node_id=2, entities=other_entity) + graph.add_kg_edge( + Relationship( + src_entity_name="book rag", + tgt_entity_name="retriever", + relation_name="uses", + ), + src_type="PRODUCT", + tgt_type="SYSTEM", + ) + + renamed_entity = Entity( + entity_name="bookrag", + entity_type="PRODUCT", + entity_role="canonical", + canonical_id="product:bookrag", + source_ids={1}, + ) + graph.update_entity("book rag", "PRODUCT", renamed_entity) + + new_node_name = graph.get_node_name_from_entity(renamed_entity) + other_node_name = graph.get_node_name_from_entity(other_entity) + edge_data = graph.kg.get_edge_data(new_node_name, other_node_name) + assert edge_data["src_entity_name"] == "bookrag" + assert graph.node_name_to_tree_nodes(new_node_name) == [1] + + +def test_graph_metadata_round_trip_and_ontology_lookup(tmp_path): + graph = Graph(save_path=str(tmp_path)) + entity = Entity( + entity_name="bookrag", + entity_type="PRODUCT", + description="Canonical product entity.", + entity_id="product:bookrag", + canonical_id="product:bookrag", + entity_role="canonical", + aliases=["bookrag", "book rag"], + mapping_confidence=1.0, + ontology_source="config", + source_ids={7}, + ) + graph.add_and_link(tree_node_id=7, entities=entity) + graph.save_graph() + + loaded = Graph.load_from_dir(str(tmp_path)) + loaded_entity = loaded.get_entity("bookrag", "PRODUCT") + metadata = loaded_entity.to_vdb_metadata() + + assert loaded_entity.canonical_id == "product:bookrag" + assert json.loads(metadata["aliases_json"]) == ["bookrag", "book rag"] + assert find_best_graph_ontology_node(loaded, "book rag", "product", threshold=1.0) == ( + loaded.get_node_name_from_entity(loaded_entity) + ) \ No newline at end of file From 4c6136d8aac98d25dab435c4ec8c72a6d0edaa15 Mon Sep 17 00:00:00 2001 From: vmoudyp Date: Sat, 7 Mar 2026 06:27:49 +0700 Subject: [PATCH 11/11] Add config-driven Phase 3 entity resolution --- Core/configs/entity_resolution_config.py | 13 +++++ Core/configs/system_config.py | 10 ++++ Core/utils/entity_resolution_utils.py | 18 +++++++ api/services/entity_resolution.py | 54 ++++++++++---------- config/gbc.yaml | 9 ++++ docs/ontology-usage-guide.md | 49 ++++++++++++++++++ tests/test_ontology_integration.py | 63 ++++++++++++++++++++++++ 7 files changed, 187 insertions(+), 29 deletions(-) create mode 100644 Core/configs/entity_resolution_config.py create mode 100644 Core/utils/entity_resolution_utils.py create mode 100644 docs/ontology-usage-guide.md diff --git a/Core/configs/entity_resolution_config.py b/Core/configs/entity_resolution_config.py new file mode 100644 index 0000000..14deab1 --- /dev/null +++ b/Core/configs/entity_resolution_config.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel, Field + + +class EntityResolutionConfig(BaseModel): + """Tenant/global canonical entity resolution settings.""" + + enabled: bool = False + similarity_threshold: float = Field(default=0.85, ge=0.0, le=1.0) + top_k: int = Field(default=1, ge=1, le=20) + global_vdb_dir: str = "./indices" + collection_name: str = "global_kg_collection" + canonical_only: bool = False + sync_to_global_graph: bool = False \ No newline at end of file diff --git a/Core/configs/system_config.py b/Core/configs/system_config.py index 5322093..89fd561 100644 --- a/Core/configs/system_config.py +++ b/Core/configs/system_config.py @@ -3,6 +3,7 @@ import yaml from Core.configs.mineru_config import MinerU from Core.configs.docling_config import DoclingConfig +from Core.configs.entity_resolution_config import EntityResolutionConfig from Core.configs.llm_config import LLMConfig from Core.configs.tree_config import TreeConfig from Core.configs.graph_config import GraphConfig @@ -37,6 +38,7 @@ class SystemConfig(BaseModel): graph: GraphConfig = Field(default_factory=GraphConfig) vdb: VDBConfig = Field(default_factory=VDBConfig) ontology: OntologyConfig = Field(default_factory=OntologyConfig) + entity_resolution: EntityResolutionConfig = Field(default_factory=EntityResolutionConfig) # Other Index selection index_type: Optional[str] = "gbc" # Options: "gbc", "tree", "vanilla", "bm25", "raptor", "pdf_vanilla" @@ -93,5 +95,13 @@ def load_system_config(path: str = "../configs/default.yaml") -> SystemConfig: os.path.join(os.path.dirname(path), ontology_path) ) + entity_resolution_data = raw_config.get("entity_resolution") + if isinstance(entity_resolution_data, dict) and entity_resolution_data.get("global_vdb_dir"): + global_vdb_dir = entity_resolution_data["global_vdb_dir"] + if not os.path.isabs(global_vdb_dir): + entity_resolution_data["global_vdb_dir"] = os.path.abspath( + os.path.join(os.path.dirname(path), global_vdb_dir) + ) + cfg = SystemConfig(**raw_config) return cfg diff --git a/Core/utils/entity_resolution_utils.py b/Core/utils/entity_resolution_utils.py new file mode 100644 index 0000000..d61aa02 --- /dev/null +++ b/Core/utils/entity_resolution_utils.py @@ -0,0 +1,18 @@ +from Core.Index.Graph import Entity +from Core.configs.entity_resolution_config import EntityResolutionConfig + + +def should_resolve_entity_globally( + entity: Entity, resolution_cfg: EntityResolutionConfig +) -> bool: + if not resolution_cfg.canonical_only: + return True + return bool(entity.canonical_id or entity.entity_role == "canonical") + + +def build_global_entity_metadata(entity: Entity, tenant_id: str, doc_id: str) -> dict: + metadata = entity.to_vdb_metadata() + metadata["tenant_id"] = tenant_id or "" + metadata["doc_id"] = doc_id or "" + metadata["canonical_name"] = entity.entity_name + return metadata \ No newline at end of file diff --git a/api/services/entity_resolution.py b/api/services/entity_resolution.py index b94bd84..37b5360 100644 --- a/api/services/entity_resolution.py +++ b/api/services/entity_resolution.py @@ -2,24 +2,20 @@ Phase 3: Cross-document entity resolution pipeline. After a document is indexed, this service: -1. Embeds each new entity using the tenant's embedding model. -2. Searches the global VDB (ChromaDB collection per tenant) for cosine-similar entities. -3. For matches above threshold, asks the LLM to verify canonical equivalence. -4. Merges verified matches into the global FalkorDB graph with HAS_MENTION edges. +1. Loads document-level graph entities. +2. Searches the tenant-global VDB for cosine-similar canonical candidates. +3. Reuses an existing tenant-global canonical when the similarity gate is met. +4. Persists unmatched entities plus ontology metadata into the tenant-global stores. """ import asyncio import logging import os -from typing import List from api.dependencies import THREAD_POOL log = logging.getLogger(__name__) _executor = THREAD_POOL -RESOLUTION_THRESHOLD = float(os.getenv("BOOKRAG_ENTITY_RESOLUTION_THRESHOLD", "0.85")) -GLOBAL_VDB_DIR = os.getenv("BOOKRAG_GLOBAL_VDB_DIR", "./indices") - def _resolve_entities_sync( tenant_id: str, @@ -37,34 +33,38 @@ def _resolve_entities_sync( 5. If no match: add as new canonical entity in global VDB + global graph. """ from Core.configs.system_config import load_system_config - from Core.configs.falkordb_config import FalkorDBConfig from Core.Index.GBCIndex import GBC from Core.provider.vdb import VectorStore - from api.dependencies import ( - FALKORDB_HOST, FALKORDB_PORT, FALKORDB_USERNAME, FALKORDB_PASSWORD, INDEX_SAVE_DIR, + from Core.utils.entity_resolution_utils import ( + build_global_entity_metadata, + should_resolve_entity_globally, ) + from api.dependencies import INDEX_SAVE_DIR cfg = load_system_config(config_path) + resolution_cfg = cfg.entity_resolution + if not resolution_cfg.enabled: + log.info("Entity resolution disabled by config; skipping Phase 3 sync.") + return + cfg.tenant_id = tenant_id cfg.doc_id = doc_id cfg.save_path = os.path.join(INDEX_SAVE_DIR, tenant_id, doc_id) - fdb_host = os.getenv("BOOKRAG_FALKORDB_HOST", "") falkordb_cfg = None - if fdb_host: - falkordb_cfg = FalkorDBConfig(host=FALKORDB_HOST, port=FALKORDB_PORT, username=FALKORDB_USERNAME, password=FALKORDB_PASSWORD) - cfg.falkordb = falkordb_cfg + if resolution_cfg.sync_to_global_graph and getattr(cfg.falkordb, "host", ""): + falkordb_cfg = cfg.falkordb gbc = GBC.load_gbc_index(cfg) graph = gbc.GraphIndex embedder = gbc.embedder # Open global VDB for tenant - global_vdb_path = os.path.join(GLOBAL_VDB_DIR, tenant_id, "global_vdb") + global_vdb_path = os.path.join(resolution_cfg.global_vdb_dir, tenant_id, "global_vdb") global_vdb = VectorStore( db_path=global_vdb_path, embedding_model=embedder, - collection_name="global_kg_collection", + collection_name=resolution_cfg.collection_name, ) nodes = graph.get_all_nodes() @@ -73,30 +73,26 @@ def _resolve_entities_sync( for node_name in nodes: entity = graph.get_entity_by_node_name(node_name) + if not should_resolve_entity_globally(entity, resolution_cfg): + continue + # Search global VDB for similar entity - hits = global_vdb.search(node_name, top_k=1) + hits = global_vdb.search(node_name, top_k=resolution_cfg.top_k) merged = False - if hits and hits[0]["distance"] < (1.0 - RESOLUTION_THRESHOLD): + if hits and hits[0]["distance"] < (1.0 - resolution_cfg.similarity_threshold): # Cosine distance is 1 - similarity; low distance = high similarity canonical_name = hits[0]["content"] log.info( f"Entity '{entity.entity_name}' similar to canonical '{canonical_name}' " f"(dist={hits[0]['distance']:.3f}). Merging." ) - # Add HAS_MENTION edge in global FalkorDB graph - if falkordb_cfg: - graph.save_to_global_graph(falkordb_cfg, tenant_id) merged = True if not merged: new_canonical_texts.append(node_name) - new_canonical_meta.append({ - "entity_name": entity.entity_name, - "entity_type": entity.entity_type, - "description": entity.description, - "doc_id": doc_id, - "tenant_id": tenant_id, - }) + new_canonical_meta.append( + build_global_entity_metadata(entity, tenant_id=tenant_id, doc_id=doc_id) + ) if new_canonical_texts: global_vdb.add_texts(texts=new_canonical_texts, metadatas=new_canonical_meta) diff --git a/config/gbc.yaml b/config/gbc.yaml index ee630fb..12092fa 100644 --- a/config/gbc.yaml +++ b/config/gbc.yaml @@ -82,6 +82,15 @@ ontology: - "book rag" - "book-rag" +entity_resolution: + enabled: false + similarity_threshold: 0.85 + top_k: 1 + global_vdb_dir: "./indices" + collection_name: "global_kg_collection" + canonical_only: false + sync_to_global_graph: false + falkordb: host: "r-6jissuruar.instance-yc6en3ndn.hc-dx5io0svq.asia-south1.gcp.f2e0a955bb84.cloud" port: 60480 diff --git a/docs/ontology-usage-guide.md b/docs/ontology-usage-guide.md new file mode 100644 index 0000000..45a06cf --- /dev/null +++ b/docs/ontology-usage-guide.md @@ -0,0 +1,49 @@ +## Ontology usage guide + +Use ontology entities when you want BookRAG to normalize extracted mentions onto stable canonical entities during indexing and retrieval. + +### Inline ontology config + +Set `ontology.enabled: true` and define entities directly in the config file. + +- `ontology_id`: stable canonical identifier +- `canonical_name`: normalized entity name stored in the graph +- `entity_type`: type used during matching +- `aliases`: alternate spellings and surface forms +- `keywords`: optional matching hints for domain terminology + +Example fields: + +- `mapping_threshold`: stricter values reduce false matches +- `allow_provisional_entities`: keep unmatched entities in the graph when `true` +- `use_query_resolution`: resolve query mentions to ontology-backed graph nodes first + +### File-backed ontology config + +You can also point `ontology.path` at a YAML or JSON file. Relative paths are resolved from the config file location. Inline entities and file-backed entities are merged by `ontology_id`. + +### Phase 3 tenant/global resolution + +Phase 3 is now controlled by `entity_resolution` config: + +- `enabled`: turns tenant/global canonical resolution on or off +- `similarity_threshold`: vector similarity gate for reuse of an existing tenant-global entity +- `top_k`: number of nearest global candidates to inspect +- `global_vdb_dir`: directory for the tenant-global ChromaDB store +- `collection_name`: ChromaDB collection name for global entities +- `canonical_only`: only export ontology-backed/canonical entities when `true` +- `sync_to_global_graph`: also sync to tenant-global FalkorDB when `true` + +Relative `global_vdb_dir` values are resolved from the config file location. + +### Recommended starting config + +- keep `ontology.enabled: true` +- start with `mapping_threshold: 1.0` +- keep `allow_provisional_entities: true` +- keep `entity_resolution.enabled: false` until you want cross-document tenant normalization +- once enabled, start with `canonical_only: true` if your ontology is strong and curated + +### Current limitation + +Phase 3 currently uses vector similarity plus canonical metadata persistence. It is intentionally conservative and does not yet implement a full mention-node merge model in the tenant-global graph. \ No newline at end of file diff --git a/tests/test_ontology_integration.py b/tests/test_ontology_integration.py index 7703ef2..95c9b6b 100644 --- a/tests/test_ontology_integration.py +++ b/tests/test_ontology_integration.py @@ -3,8 +3,13 @@ import yaml from Core.Index.Graph import Entity, Graph, Relationship +from Core.configs.entity_resolution_config import EntityResolutionConfig from Core.configs.ontology_config import OntologyConfig from Core.configs.system_config import load_system_config +from Core.utils.entity_resolution_utils import ( + build_global_entity_metadata, + should_resolve_entity_globally, +) from Core.utils.ontology_utils import ( align_entities_to_ontology, find_best_graph_ontology_node, @@ -140,6 +145,64 @@ def test_align_entities_to_ontology_drops_unmatched_entities_when_provisional_di assert aligned_relationships == [] +def test_load_system_config_resolves_relative_entity_resolution_dir(tmp_path): + config_path = tmp_path / "config.yaml" + config_path.write_text( + yaml.safe_dump( + { + "mineru": { + "backend": "vlm-sglang-client", + "method": "vlm", + "lang": "en", + }, + "rag": {"strategy": "gbc"}, + "entity_resolution": { + "enabled": True, + "global_vdb_dir": "tenant_global_indices", + "canonical_only": True, + }, + } + ), + encoding="utf-8", + ) + + cfg = load_system_config(str(config_path)) + + assert cfg.entity_resolution.enabled is True + assert cfg.entity_resolution.canonical_only is True + assert cfg.entity_resolution.global_vdb_dir == str( + (tmp_path / "tenant_global_indices").resolve() + ) + + +def test_global_entity_resolution_helpers_preserve_ontology_metadata(): + resolution_cfg = EntityResolutionConfig(enabled=True, canonical_only=True) + canonical_entity = Entity( + entity_name="bookrag", + entity_type="PRODUCT", + description="Canonical product entity.", + entity_id="product:bookrag", + canonical_id="product:bookrag", + entity_role="canonical", + aliases=["bookrag", "book rag"], + mapping_confidence=1.0, + ontology_source="config", + ) + provisional_entity = Entity(entity_name="retriever", entity_type="SYSTEM") + + metadata = build_global_entity_metadata( + canonical_entity, tenant_id="tenant-a", doc_id="doc-1" + ) + + assert should_resolve_entity_globally(canonical_entity, resolution_cfg) is True + assert should_resolve_entity_globally(provisional_entity, resolution_cfg) is False + assert metadata["entity_id"] == "product:bookrag" + assert metadata["canonical_id"] == "product:bookrag" + assert metadata["tenant_id"] == "tenant-a" + assert metadata["doc_id"] == "doc-1" + assert json.loads(metadata["aliases_json"]) == ["bookrag", "book rag"] + + def test_graph_update_entity_rewrites_edge_payload_names_and_tree_links(tmp_path): graph = Graph(save_path=str(tmp_path)) old_entity = Entity(entity_name="book rag", entity_type="PRODUCT", source_ids={1})

    !Oj~sd{(LjUgC0 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 literal 0 HcmV?d00001 diff --git a/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-6.png b/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-6.png new file mode 100644 index 0000000000000000000000000000000000000000..e98be4883bcff03743de0a501ea0788fe0dbc3c7 GIT binary patch literal 28149 zcmd43c{EmSA3wTDl7vcGa*X)P8aGNV&+heNlm>2M`@1y9m|%LmE|~emW73T$L9>s6P$AH3nO*E z9?RXKxl=x4LBm5*<14@Q>-+n~eYe{7oeF&+yL9ktwI9#DC6hDMQ#|{6s;m9}rnAH! zd}OeC_j!}e`AwRmN3YVpY%0MIE2>5u&$-EX=c49=!ooX=!}-_$Si5e~ADCR*{+xI~ z)IU%aNe_GUa|Tz4XO(){mQH^1rpz>wM5q13P4QyFe!Bhswxj*zZGxQwK#0n6_yI6LQ-m&>a~=;-LU%XwA$Y}~MkamBlJ*riyTzrU*Oo4?4$%Ak{20Pv{pD$;Nam@q zJs7FQ#YH^Rfiuruw2Y*ji7&e~Cm2w*``A@d=)jq0$2V`@9DVHCOLKWa7DwM8!d-u1 zaZxi?GVAs0*B5I-XMQ()%Q5$ji|cvsw*{Xc2f4VpGeIxJ9{zi!zfsxiA~#dE{|G~Sxijq z?Af!Dv6?9@ni?7>PMrAs`7;gmoe6dy9+AwYoI7@#mjC@(?z!3D@PL#{8sW`)$SBjekkOyo zrL|;p0WUM%m7d}`$&>6MDh450yO&66x*2WlV&B{xdOX-eUbYVqgk-G4rAwEtT=~-P zWGM8wpkQvaEu*xwl#1YF+_dME&Lfqix$&+YiVqC3P20|C)B7qa6LLrU-eqNUf2gV1 zv}x0AH#dTy^SKuiqN%0zduGwp)HF#Y#3I*_q_(y?|D*Al?AbIuK0dydmzo*r>BY_i z{)R%&#H>R@Lbeh-0sF=j%6i#kqnkF1^@l~9bSiA3HEjo>z#IO(*fqFu=yE~#g9pr5K6tjCV%NHF-@bKp z9L2pJIAA^1SDBEIpq~79X>Lp~auiqCzkk2)CZ;Q0uP+s>B=H-Wn7EI3<}NI_;pZL8 z7C*MOJ|fjFEG%?nUx<4ASXx@z-{1dgkqMz-YTAn@7{u>|xsP47#OzWLwY9Zg>#K#T zq^qv3Tt_VK1_o{>cw}W)drNN%My98xswQX;moYCfvHPFx&-0ucjm*kAlo@6)Gii~_ zRx{1F<+rxBYg^+(j-yvr76!r|@@Y!n{A=mv_SVmDBf-PRXN6*S=guA3TeF?{wk>TL z22{lK^z=dfOq-5ZJkgNXcjcYpXR)%Td@#ctRXO4NPRV($xM3JY zw5JxPFB)FpkappZsv~E#iNs}QX8!P6k82#-Kzy*6?k>1|^SG(1>ODQdI5BIjn>UXU zeLt&%V}z8ZmC8*-Mw0n)<1- zG6CQG?#85Pf!$7jbByME$<3ML$B)x8?J2oEKe6M07C}5xAN(ANZE_HG=MXd99yxb9 z!fj!yzfpeu`x}RE2`2+4x(miC?rg{@sf#*X_~s4%#@ooqNcH6Ox%MWT{PFQ|RLS*~ znMUk$0YSlL`3&8(4;Id9YPG1YSQ$qxKHQ^~JrH#3F|d4Nol35ci8jN{lt?Q7hYMN>$rf@ zYwPI9&CVXgqgw8{%DCtFTgM-Ad=I??($m$Gnv_&jXlZB|c8g;F zTL1bKj(uL^EF2|cRnLamwE2m((DCa0H7BP}wY5h?MT5}n!onsyb1&lGo)c>SJ6Kl} z%EiITs*==1zhz6v{rl3_$8GHGIoa4c^Q_No*%JKr?OV)CFaC#T-5y9Iz54w5^E(?h zg|bW7H6<#ex8Q~onrzTp#(Un~2w>!L_wc};rAwkZckbNPqVEk24k+_`_wKbTSQ?7= z;-fpk_i%dAT{_Nl`loWTZjs0Gb=2X_JNVpg-wxxFX-98s4=0niBAtfA{WPiOcOY8#j{m^f=``zjt?cd!GqOWK5;27z*_B^UI@ru7&N9MIH8BnLcG` zyp4|L_P=p~Lx%>Z-E#K+D7rR;-ctYMNRs1^vV#V%?oRHxKbXL8q@xoa5h3dQQ|XC4 z7II~tor8lWvy!6Xoe6Zr(9qE3`N^=55Lwqz7D6FQKQ=aYd10Z#q`wl{06R$Q^|TxD-bJ$vsb#o%+T7@s08FLsyGv6dy%Jee3R?=q=^=XuR3S$;IVv zfeu^f-MuSz8z0oUxLTkvadF@W#sKrPDPul)^R9{ZX_Y zKYH}*_wVk`PG%Z&J3DDK!g$Z6k;R#zYeQeSRb`WNm(s`!eN3gutgo-{vHZ{PC1%_u#ffwBd(jL!oQ9_6Vbc;r6B7;1ZC6D3 zvzKlrX1vKU%tR$~{Pspuh_$A=+M&1P=Jd~MY)K6*E&nVl$ykr!uL)S|KRlNmT2rwg zbhxBlyvzL>j2Wtwcy$IY6;K+!Q9<$5!O!1|u9>TDQ+$BUHIK6M;suGHpU%`jG4+); zo}F@qch~>?M&BN3PR`F4m$E;b(KgCn_o-Y@EJaUHhlNY_mUwV=`t|hCa~njsgrk;c z8s)1lV<1GMb<^^Ve%ecZtE}8BEPQ40?;t>zVToI=0+07a5fO$hOiYs~520K#xcolW zU{vl5Jwf9FJBjP#hUa;Y?>UpyG)(W4Xp^fOyh;-b<_&5XMeUWep*~}P_=f3#2 zCX5?v{pR}Gss`VT!8O}ki(LVK z5H<1YLiw|&Pmi0wzYC~kD<1Rqt<+Suys}PfdwY9T)j*~1CXt0y{fx7^x(pl!1#jM% zmbgvF9(DXT-j(EKlF=p@sXlCC)}XU%|GmJ#o2Wb(MF5{ZHaF?GE0-^i_4N_Hkpz*T zjS9Vgd*H;giod7{FJ8XvEq2{vs!t{->k0O+yOu6a-8$bW$C<4j0c@th_plm$T_`S~ z`NoGc@p5xBl+U+!Hx4T@V{XNd9yQ2l%Q+(;CN_hwQ&dz0=G!e|R#AF;Ug*%FxVX5+ zIGL20FDDYd*4NipSMQgUWDWI7O-+4JH;9?&zNoCj;%@+WN#@-1}gEzTthOMeC*gUU)rsrM~>7sHlotI>*zE^i&N?t*jOjFfV~@3(Wn2j45~#r^<2Lm?Eo~%( zf`0*1q5oFnsQ&fu*8kI%dG<#0neakudS^eIdTN|6Lt6k zFkV4&a&m6&G`%1+~v*#D%Y-EJ8&Qc{}wfkg?RAn znW?Vs)sg1?GBWS5wVkCn83U5E`Bm<-nL9X?0=J?INk6^ofLt}Cx81NL(Md<2ncIe(A|=922+Vmzp^m>;e%3w zw%ecX0^Di9-MbpmqL=UoPR0~8a|YU~oUpJ&b~=gjg%)#wEB3SH*(wdK?YA4!ePf3* z&xzms`J#5pOiSwvy0v*jXr&pNC2Me7?!{A5<~lsgChx9m@;$^T2i983-TeE);oBQw zVPPl3opD-|?OCyfg*PlLEUsP^jnlFgjb2@v8@O7OmX$Ud%+cy~z5s@QDntFQTs`^WA z&C$1u`}+7871)vW^{<0_jE~!+^P^o#A3L@R01c)@=kvCxXmMfTxcdUL{vGtyiC@25 zP*WZ~dL(?l*acH;^bE@l<4hJL+uEl2`6=UmzJLEt5CAhr9eY{mXaEP_ym^CXo&Wcb zk)Hn6(yZ;dbGwO(mKHH7DK>qv3jhwoP5Y8{yRbyDtrW8<)fNn{4m(v!N=jJx3qWgK z-4@11YC?}pmi1gQOwfMLpWb9+RvO83&)b{AJ&xa+r7OP87|>GacwyhZeMKgo10T0W zkWSraYjP8-|G|vo9V_l+(1Qc|cnH^)aoq+~L`5wt>SfmHP`u|M*@- z1?9n}4Nb?W#B)_cGqKH_VKqs5>eFRYZpWu| zcnL~#v3GDV$TX}p6Jan$(G{1K?WwG+Y;DaC9D5HUrC>m! z4C1A>go3?&W=cv*WF)yI7Ss}397M?G{s#(9(b1VUFW*ncyKmnBNC3mutpx=IS=aRw zwC#I}B?JUED>D0?IC6cwGwp23=!L%i{w7ty)v@gImDSZlhYoS*y1Lrtx3U0nmwngq(l{R0W4T?e@vo*t+{ zt^4rdLvL?ccfht9=Pdni3S*8*)4H$1dcw9J=A-i=)rJ{QeT0(Y?$nTo>eN^1`|!XS zVCrn6tXDVhsFH%h!hlFoWB=eE3X`$h#Y_WGEmyxJvq(**5ApOAYy*Dwh~1i%(L6Fs zwSg9-H{<1OU0t1w%Ww{m6>W^$h3-N}M@!4r4=Q^BEFeoIiDzoF%+1eR=Nf7{vJ+-_ z3VZt%9gPmn!Ye&2^wk&_yRAHW`ucBdnk;}TG~;ux|LOJ+ip11H5^-mV1Tz^Ls<9M} z?G+~~-oNJ+5y{!iAkmtEnTKrBp3W4g1QMC=zIb)tzND!sCvc9{JUSl{w)?b3**njk zZTYDBMouKUJ}jAyAfoD44PWkNP}wJ|N$WdZIawYZeNI6^;p)}D-*lPj{jhyEF>;#a z8lnnL|NHmqI#sf+Z&kmO+~X0xvuRX6)7kvnx?_f0(;mjgawsy(uPqG3NL*&*l74Z4 zl%UPFV@H*xC=^QB{+Y^s{9 z8$km43k+04c?OF%n~zUQO8QSNIB?(;X*>8*fqmC@LL1KvyW~4f1aeR3A9uGKoR%T|aUBQ8dRRBGsQf2mDA* z-ml1vDg&iXHYL=H`~K{H=Q?d;8Y>M3xt2%LE3R=Nj(Wv*+2f zXIMEoO1K2tcho(tl&UYxAu0nv#TVaVcZ){XV|Xensg!k4egKBsK<^xmaWd+qsU#hd zkSNH@YY9|J(dFOn5&1sgii3B$5Rq`Gel;bNQQN$dh$}-PlNX3-#uE)AZ7z3`dX- z2?=4rs7CynS-e{GwA!M;rU~j}vhFz}qagDq4}EJpm4*Y z=gy@))Z7W2}_(PlzLaC-%BGGw;~(5QLO{_wGu^D5zL2y3$1(2;k30;o(Pa zOqdw%D?=$zR^Av^12PeN{O0TE=q?~|FeB(TUG~>eHnjPlN;&feS6hfi@7%fb;>Y{Z z5|>#uzJCAyw5oqNeGe9ch}cw8NTLnuLY{RaR+J($Xm(zHzGbcW}mMTdci?KprjoT2=udzs0cO&|I$*~uo_4*JrJ{i`}<^3 zj^37aVBu&|aZ2eW<+DkyL*FvcXmc(trQc_Yv3?9VlIBHFA?=w?al|X8^Y0t}BGc>pW{GefNB2x9z(IqHU0qWS&56_Di2PpHx!ErKjRGsD^U-9-M zY!n^@Ng%Dwjz&@P%6Ew5&Vb4J`T1B;AP$i9IXF04MrL2Uc!B=wvHYhH<*?GMg2r_N z({oj3nmeb`18J0XI5=WKb9#!d;lDu&Xox)u$6^}|)nV^1!&CiL>>*aQ5&H=OiZ;aX z1q~|VD+e`!3Th~XwICYb*!bnkL`zEJ3$=&ZELr91=02b~OM)O|T~Pi_gbmX4pm@f} zc@!5F9gC{-Tbpl9J3BZy2;mljh~NCypdg-mc9gxK81B7JPJ5+9QhS-494GJP3E2Vr zpCAI2(EoOZt6DlZ$lm^E&lqsg+}zyC>L0|d;o)J5wzstOUfo|S8JKx#ci+{bsh$3; z(HbwY56W;qOM<97Sub@rxRGJOv``V=JamR>dTDxJkEkWg9ZE5 zTKWeB7#kWA1Uh^?lms9k_K@F`lNWS#eG*eWeW1Bm{4mo=kWvG5&f}p?eocd2pWiQhbE7LXHKz3WOwo7l#K|D79MW^_{ zt}x%|UAB?`HkzhJ1%3T?OgyA4d9w=Qe9P}o;rmd+K_6e|FKiMDe`iLLA zUtGKu_bGV;v{xq*-F>+Z%`FmNW8A zBePIKA!JcZh$v{cw6S}zk9fn~Zry^?R0i^mzJ&Rh3)6^=i2+Os19yf%nFmc_Zmv!K z_RkN2;FFOD4NgSS6Fh3$)lCE=e-93#jgn70eYm#``<=|sQdCrgua*|**nw)XTg+-< zd3h{Af8s~^nTQt|8J7$AvckigaLdgtEtf=hXWo=}3I*}Y(_<}FRVU}~CnhDuqyAqV zRPS6vA##J*JJy~>MF734s;TLu>CqlJzxCwSL#<4=M<&wsGuo0bz*|XF4vv}oxn!x3 z(H2x~A;pk~J4bu!>G41d0HVd>gjSOCz74|+^`vTPBp~ucvTk6t1^SDz@i$3_ZoTE+ zN0E_Wv{F1g3Mqw9{XwMx+UGH6ZS>7pDWDp5;xQ|#c0 zD%OHNRNYSd>k0}L*oX|G9B*UP6C%+e^18UFq zkt0aa8o#s4*QA~L6rQ-4nf0aWBr((Mmbq>Z!2oV%+3LSatUlw$^?pFDvz_Moa?;m0ae^Wt~!I?BT$t1WKcy7lbXHNNA=F@c<( zR(qiz)kll*2T_<8#@E+efJGTbs@Kv;ir7x0Z1w++alL?Ta_RMp6PW=>of-bUYQ$W1e+D+I`o}Qjg zCV~%Z?fZ0TX%x|Zu&F7;keBzw`e~JjUzkcCUtieweX(@k2B3Vyu-vw7o0^&$N$o`7 zPbtRoP^?gx#V!yK<({vnzf=bbf#U-t`7x9$LtYF3n!%HSAixHw?^N&%w56xzzud`C z1=gU%+eDGu4;lZ%MnC%9#>2*jrlPa+EhzlbDfmJ#K{*KTyu2CMMC=i61-sf>TW8-* zmW}n6E~k?-0Ii|j(GpnhpdyrR7aY8$Br`o-aPMAoxbc&hg-Ile{w-;Xn$LLoC^p>H zB6ldvhm7Bt4B?EpI{M4VOq)loOP$7g^FBcfaJ%jT~yh7I8FQH*Nbmz|> zT96T|7@9e)t`3|4R8@mvePvQ43QeLqXeV|I#cjv5)i*TAw?BU+UE#a}ISEQE+C{P3 zbRvw(Op~!7R!+{R4<6*$w(!v?!jVW}TI0*@8i%4wMYtXB1y(qWnL~r-dwA@|#CLcK zhYfS!*|Wd7$+7UK|7sCDLuvx3NbA}0B9wVF)qoWEB?q?$LX87h1`y|G5%GQ;8M*&q zEebujZXtSF;`H=Q$_lx*DcKQSXZQ{rgXKZdb2T~9op)R9}0b(*-T6J*0yE|iUlOpq~ zKSzj)*wLfh(8BQuJGO7fB;%G`QB*;Iy}Z1VbvGYOL90w@8Q~UjU{TqLgn}CY%6TcK z8fU;IJ3G5em)cU!aJ$hf>(Kg|qg6RNPL7NKT?U#PLJ2hYIylbkz3V>Pk)Kcsy1Ke1 z$H;d~lgPqRGm9(Gd!fr>Cy7~q>Fn%8&8H?l*VRGa+ku78#)h8S`1IIJ!_gmXcHi$$ ztW|YXp!q^sL9K#Tt&`CPo%0Xw+}U{=6~dp1d#y|-l+Rl$1%L*hF>V)UXUq?$kO9gU z`ZN+Lk-Q|WzP zCl5MR^U?ZlV_|XmUB6q3eBU_5@CJ2>RTT@wk4rSSHRAlC?0ntrMv!!^X+;a6p zGvzMXK?849lJ11O3zZXl2EH$BrGtR6n+K_H0^rym%4aOEOE}SWoW}Fx$nC4A9}~>oug~ z7z4yB_t>GU#yk|2XJb)z-3_LdS5N>=dJ8?h;Nipbv$J<6-#{M0k48mxd85m)04hj_fOv?Rz9ga=+d7lDj}?*MTkK?Gg^C;;^x z1>vYow6ubepIck?u-IUa+~<;ERo3x40pSpKDM}rbVs&+OXk&gS5>%2XKw)lo#hn|d zMMA>DDmwW_7f#4F83?FFK>2b8jd5~PJ#%J$W=2dx!cWlE+1VD3GL|-=pqQxWt$*XT zse4pCA|VnC8^b0KKygb+v9_}lB%Z&1-Hcry`oPv+?tJzV0%*WO2omilfQ6#hr zqIg6^#I}7Zvtu2H<>c02xnmbV1qagmR&rB};Mu=F`R&^U59^=ccEJ2kFjU6IEjIah z2()%U)f?lT&fq183>5+9>g%({H(q#cS&Q9+EsX|=o2?tXieBS)!n~mCC-en${831I z>gu1d@B4DXmd=vNluZp00tUtM@-p1$&}s|Yf^PhA*Up{zyNxX^lzN|V7GCQQ;6{!@h&32vvWFc}!cU(*bwZCvtOk4YcVoPx zgTrc>KbADc5mF$}_CTatIxr4czm)3uy+}+%`@Q(x6~xRctIfopon##n_ISwb>9aJ?rIp z46YU(hmrW=1&xaJ^J7x2@uXVlT8|#F1S(OB>7$O4$s0E@R25$(=5NkiaNp1w|CWts`*XEt&S01Tf($Zq&G}nqCDKhhh z^NWe?(2~59swXH_s(he>NrCSn2&z3Q5QVT^SY2sp{Opk zmR@U%Lm&arbe445nH*JANfFotL%)BQb!2O^B$o&(pQWzZ(6;XCzw2zamuy;f2B;hI zHh(&Es~Q@%_ST?5L4Cn`jH&YApKZ$8($!Gi&{fZweXUGvvx2?3+!?_|nxR{|?jI?_ zlZpx}D{H&gHzUp(FmP`CK6Ur9ed?eGA6+77jnhk!7jNGh@`h_)NMC}UOqiK=OjMPu z>UA3L`mIRt5Qfax7IoDvcKiOU)^q7@;c_wEF5%E5JYMdnNF(+{B(khq9a!UnOg)ZC{Cw zJ#VuArIFrT%43szA0y;6 z*0yEc+gW>*n^4&SZcf~IfhCQk9eozX%4=;{cO$=@%F|7Q!RfSFbyx)wBFa}DEQvEt zr8g)G;!Mzb$tbEC;N#*zm^=h`%{Xatn%=0ET5>ajv9wo;P9mx>y?-j+U?&|7%p&Cc zpb;V6A;ii7)iU)Bnqr^67-jjzA6dWI1`v-p6@{{<>4ol*l_rst3eTTHb;Zg!!jPn5 zfIGvjd6_nU_(0;}A&BR?X(vvegm{o8Gl*}5_?Vhy#gC8NMZ4WTp9iK<6;F*GV*Crd z3$g3Osh(@2^1hSIN+(XdNBT1ss!{IDiRtJm`9n*HE0(%1z6Sn4WDq}OFUfI* z%@snX--&IktpCbl%c^T?K&2@?bK@>s#18k3 z++5!}ut}zu9ZdJhcQ?^zexphWUnpC7voTt(yw-?;)|b8cvLU-M3H0W-lN6K~cjI`t zEkQSQHA(A9FQ6bfcIS^ExQyBf7IspHrJW3VYTXbsSLRCwj9i4qftYkeL6$f$mr+)` z!+}%GG$sxVzr#psK0M4cuoRraRNl@B#AyYLqP){6KIf<3?=$dLKVu^y!iHPuA04IN zp{T<`uNw7S*yG8;o+T@h4aH+rgkU5PP#9$VWt1j@fFvp}DHVE=O$T-iBK?F!0b(AHwQ^Jy3Z&G2X1fdg%>AtGkLeDdgxHMDf2F*=5`5XdK@WRtiH- zKOUREZ5&=sZ>_H0sQ92bep~1O;a%9HOL!Y)eQ9X$6UALzF*FKcY1w*49X8f5%M*Z1qh$B=JV$_`BsWZO1@e|>Mf$d z3RlR<$w8r_zyOqx9ef(8nVI8|MJ+8!K0GovChmuZLM#3^JzaEbE`7r4$gqoaoEG)- zHXEnm*1neaM;NLI1xVP*$%7ERk6!uC&rG*8KUscj&W@-6IzR;S41gh!9mK9RL=HJ5 z?FphD80NohhzKt)Fa9%(mv4oRDNQz5#d63<;bF>6cVa3@oAG@EUZUP2(Hb;7Y@sJ> zA4f%%Plosu+I+mf8`TJa0ZW9EHoSko1RAgjov(i)jhc;wkq>Fag+1<7w!z&>GdM`* zY(a^L*JbEuu^)F6iEj+McaL942qd-+U}hUl7icI%Dgc=`_FX^!{NdWQtI(pFo}r2l z!E(T9Y>;i+0DXTA4oZN~Qj{1yJu@~JDh>9a2vSLWEWS>(#NHWpv{7Q;GPwAT!3GJ1T93^aK-7_Su{H2h?3QlW5jKnp|l)f zFh-hHS2qG+7Q#P<7*~S-@SoA|TbW8r|JR|FeLjF<*MgjHpk)~TQC^N9HuP^~!;!9p zHKT?F8)!!s2+`V9kjhdca!3y;k7|T&frl2|J>dkSwcREvU~0Qh_R2zm|MW=}MAYQn7ZAEmSS!3Re}C<)fRD&I%#xI% z8CyGZB&zb@uV0AZE32qnm3m6i84xw|AdmL-Q9NYxD*w$iK6oHdnqj5aP%0swAi@dE zi9pSP{reA{FJ`IAK|tCHuofXIlzRmHk?o5?E@fqLW+Sy?mSA#|jmF3I)JN48N22Ss z;-um7^h=fDyaD9a0wY;yF>>+TY;12Y)v?n0=EC=eek#UxAF3y!0;B^6vQ3I~6SOs+ zi0l;-Lh@*`Y#CbSm;XtC@U;d4+WSqYj=<^ofK|_4Ob*uu~-R z4MDjgB6!19`wWU9)ksK0lGG9qU8xWef;@ffSajXs`{PlOkt#OBD<{Ct*l=$s|l z>Nu;wLa&VbN5(ZJ<$${i+N6Mh0QTY(s~RZ+B+-WlY9&Fi`J>7sK|eO30$2@xxFbV+ z|NiREPPTODr?VUM=rjHiM2HF~&cpEV1h3OjsGt(L3WCZa{Fo!F$gBhn4>2u5Awe7V zu|jSeH*{KbyAYKPUaApTy;ish*v&5Yrr_0ToTr7JoU98tE>I!|X>$Mmjc-nSKU0TH z;Id)ma@c+(tKc%o9zM*Z$jlz{?^o>(z{|cqGXxOkOMNAxm`~~G39%aJ=^+HtR#z8X z)z3`h4EY6#0Ao8da6;HhSfWVe(GYLl-f&4>*{d@Yafv_VS^TyelkfKs-T?tMz!+q~ zo!^By6(4NnkQ6d4dGbHcmH7HUdnTMT0)LsvdGkgN!jg&bQIO!1Tu@~|){eV;VlGgT zv1}IIWZ?MsPy05S%KUB_9ht?AyC-jZ5yX`9GZ4T8ZKom=ww?V>QaE(97I)jPUV-^- zz4D*0Z1vxNMa>`nGdDFQz?&2_zI!ru5&o7#98x-D>zf=Ac*cfJR0a34w6#G>3o37jF#_wM$*u)n#;hMds@k(6}<$CQe=;I-dH0+ z1+Lh!=loeBG9y=7wFm`h`$>t3dV-M<5+5NY=S4|i#;KzMFHZHJ{7?U+q6oB@GiW&` z!n>@@&}mRG_DDHBH_F<*(qNJDIBU!e5Tx?RxK^vMsb}}5@64&qsOkU+p_kuE+noLp z>QVM=RV(s$a#`^W^RRdCmJ!Q?J4R4ke1wx=%}9p}8Rgr&zq^@%c0=zS;7&MAFau$e z5=3l6Z_zbmkO!TlKnMAQzOrTR-BIT1Gk;U?a^WyDZ{6WQU-&U;8EV@UKbl9u*JwJ_6fAa6oWygJVFWZj4 z&A-6UFOER*-@ncBIMk9+ET;YE)_GbUfE=gEK&FMq<-0`Qp1Zs$6tW)Hb>F%Ui-&Qb z*(2ukM-|i3dsstMtY3#rs_fNHF8;V1d8<9r+DJs#%8*BghBlE$yIvY+w8u?Jlhvt3 z|Mf01&7?oD+wCn_kbjMF_&ay+$HLVIl~xbg7zt#ITvJ;=ex$v1kPbl|gS0YLNT_NN zN;*ad*S}<~NSB{Xe)3PJzW=J}Gu(s=qIbao}m2^Kt(nxG}uU2vDU+0l~W}+nyjmFdV5H!Zs)0#f$+4@f~?C=^oGS6)|*-HCKMmeq`G$|}D`1f7)J=%Z)>Ad^wt#_o;z1MnKOMR1YQ%!(q1~BhabLG<*YOL@bLQpgTcM1RJF-_ z{*OzamVs@mhTBUuxfzxs6PGmF$KeZQCh|^G0w_N5jYCdSlgS21{r;W^uKWBMVDzu4 zJi=v#{Ldq0?cCWfadGv)N#XlsKA^~a*F<;|@g&bs z{E_~td>TdOK=rh}_w14sGh2Dfx{6za^hi?fNb^|rrpVK+LZOelv_ho|cCCG(1LZ+m<9$e;5qPnmHF zmPCcXRYP4-tD^Dk8t!E#i`K=6W}R7AwdwBLgeZB8fW08?rEb0(O!d4?=EXHb+Vgx&9%Bqa>ibIFZ4=?c{nepv3PwyD5#}7AJ zWFJ^BHDdGUg1`*V4k>Er51p?s1wVWUxYAtgIz}{?T;e(6#X?R-z0)*QyJSmX@P zdeQ%#m%Y7oY-Hz(jAcsbiE!8S=)_tc)$RM}^1sY;D%0KPQ6=OaHm;qbmi~xlvx?&= zG>WaKR_TE10L5`8pmy@on0)pU5>zn4Dx)od;Z>Mlz=OdmJ}4~wZ*J~E?B;C0a457pIN zIERfkOy{E!EBOb>sBFm%cYG4rfgVBJGS}y%LJRHM(z{#P>4QGfDn592sAtvw&*s+? zujGGOsTd^~&Qetct`%xmGu)YWa*jrIJ3NzyYH5l#NQZ%~tC7H!>gGwADrA}_w@SK%?u3VUlXcu@PUe;zSD=3N}w4pUruP3Y<>HIGghTgQZ!x0Mmgez zc0z^f`{y&4AzlTuS3NRv;5u)PkyY#C?w+5LFC{|~3kePNcWs8N!Wz7B-@BVPZvrY^ z_)Q}dv~=?1gEo({(TVo$x0iF&X$Tss%M;(-bxdZv?!SBf{Ogc>_GkD!IK6xJ?B&uc z&`Mfm6m*W#`Q*RJyX`S69~_93zG?WoJrarV}NoP=|8Hpkay(l2<- zwSBv_h!A4G=wHpqgA`%w_h+vw`Jt3atk}Afq9*Z=`WwBz_uoPN|NFrH|L3oD+B)vP zk$pho3vN`**;i^2P(7tW_tEjP1|#p}>sxiImQ+1-m#PHyT|-^nuIqJjMn=XOBFnLl z9=*_`kXD@hMJBh(K}Wllo1yC8L{DsZ_#N=&NV1ZWQbA+~j{Q=OWIucMpUMs7hJ#h> zhDFH>_BN>oD81j2P>PSgprKI@wmjF-AS@touJB460D=Y|2Tp|#k_BR(z|1f$b{T<* zY$ALEXU4#|!LK9MHu8plf`^V30mnlniJZX-^^tAs-*l21pdLKRGf$;-_*sz7v4(+D zY@6*aSB^yh0fATTb^F|_ROKB0-r7yUG&R$(t8clvNl8mn6F6W5^^238{j)``O9!3b z2~b8#h(Lvwzl<|I@P%S2`D)P$t_drhAaDX0ZW`={o^uJ>h;iOVqzk!>jNi8mXcQ~@ z2!C^e;H-hhvVQ*5V;;Iy`B?9m-8SlD5@KI1hxcf(`XC&N$nGPfJT)P7Yj)t5TeXdC<)*a-US1iC15pro*Ay$B$We?E>`#xusDgZC6uN zq*C0jsZRzSL`Vk_1CT=gAjt-Lb3FYiAjbGc1Pj30G~fJ6QY8rr2_f-Vn4eEl+iq0> zq2PZ>QV8cMDLZKPvIfiZI3qe5RfoXsN(*ERoKlNaU%ia8y^{8wW*0BcpbVfgf_1_f z8@a&48tnM}t+|B-PJRyz4noiYcK}&OD0dr8T4p9J9u2;{KuHM&<~s`7CMNe2`N!RT z1^34~9XXb&i%be!)t5Q~f3wx8h&H_-@!B_eAmb3FfEWOJNot@Gp9il>#{L-|R!wQ? z|K~%acu#5lPjxd-HjdM}1m_|&vfdi!fb|8hi*gvAa;z2c6#R5?9*`=GIh>nw639gL zB}#+x(M~{He0Vf-&#~eS5(qy-t|&I694tWIBj`D)OX-3#M%RW*8Snd8Da?iD`6|{o zF%>CswFso1<>kvaYiuBdgoNNX_iqJ>u~N9P2~hoePmct91GHN?9%l%Ah_Gds>StUM zVQZ80L5=atZABywO3^ZQ8a%b;3s#@Le|PVzxC03}y|t@rx7E(yUC4VNDWu%Q*WDaK zLKYYVCm~xGPW}tE7u2@5A|srlubn+RRW5i)P>@>ovF6B`xqBszG64NBM@{-d?Cg zh?wJh-c20Xs_TpRCf2e2oPoYRa?Xav#vQlLH7I8z*p7~KrQ@+(v62ppRdH>4kc;&B z3%qnb;?w%|+?O|SoKK6DgHkcdk@c90@8Racgq0kF4p8Q%CLM#uNL3O>Zb>GOTvb~u zaO6m?kuQ5$qqMWGV6vW3hPrv&-|~3z4|^Wga*A52o;cy7N$?ZMuYPzTqR#qkP(>oXe88(@L4-Hp&^2u%r=N`CMOrxA6%4Un!|4 zb%Q^pO!f3g4{Hem2eg0;2_k|7MFaY0b}*ax@eLtV$<1dT+VR@j)LnuljLaUT%)yzz zyLkseU~}X6AVEOaK;9H)9x}x6B?^o}lAitHJAa-?ZfcUA3uzwaPoFPRV3rPQ*2!n= zYSMZ1@1Nsy;oJP`Cv9CX?Nns$6mI28NZ`+3YmX-s2yb3Gx6@*y>svw-`9m0)X-Z02 z+UP@h=(v=@#`5|k;@_7SQY+f#7dy%T(kk+N@>)!3J7+gFSw{Z!ZHuXF#=5c0?ZYoM zqLEQ00@83m_pYDcUb=|r=wp_j9w6!b$}smQDlmBb5`15rG(8B+dC8P1V@=Sn z`&Nqjm{TrNVH_bRmphh>y{I|*CiMh-62+x;Q+`3e%<9b^`bMS)d5FkNYnIm7hwSh3 zX2js2#o!evK0Gdgp$HB_RVKU<|H9FhT~#?ou1Gb^{vABc8cgnZsGuVk&qQc{CMll_ zlrlAlC)6)aZE1E*n|=}DCKonWe%p!ctDJNo>Tes(mx^f!Q+UzESocZhyNyFTNQx1p zY@RrklpPDkGRBZuL^K4VhC?mMdZZ_RTOB9km5ByyFTYVuu)1~5=bJZ+<@XDcspA7mPG{R*qL!MK-MhE4yW8l-kvMqeXKFT|$k1mU zdhwM_!z3dusm~~+Sp8Fg7ovXpd?J@}$9fCt3GHMcN4MjqP=dK46=@Xp1j*3LzX_*u zAo_w0v;vhK);P|mLf0b*6e-9`75COL{^s0|@ct9X{YbH;Clln)R(WIk0%0{92>!u{ z#7w2_%&xb|rslM2YhK}ty0+BuH5MYHs_|+`2R1LzbBev6M&=x8_AO_5=yXj@wU}wt zB1%>mXzNn1L~f@^$Zmf6`Lo-ajGp>RMl-Cr7{Nma4{jjt9dz^S3Y>HbXL$UaWH6ti zl&sM=GweFypOOuu>jP3G9+5~{_esVaYI=xU^Eo@5t+l1ER^4txgSf7S9j(Na6G@N zr|wOATxixS&fp~3Xfj|fTu*(wHw~?}0MEVoLsAv0)ZOW4Zf{H%7ZnATj^sAyB4~Z7 z4luSKuz>Zy=5VgHW_i6aE4xwU*{s()cGZZ?#XEN#^<=a5F-R|T+&W}iD*NuMi$wfd z<;DYJyDqovEctyF$BHJ;I?*Vuefv7Tfqv~vaDq|HTjSrQdgv`Ny2))X{x*^6RbPAd zOmpib6N+msXD(*U?rSAOLqiqW!I5k;0peO2-lTaFa;`SNz34TT_)Xf$+?D?wcXa=# zJ@$W{d;I+W{#Be6DH-IkxMg;+u(&p{39gO zPKb3KWpm(T2<3bSUfaT$5}@l&nahis(aCyCmF|J2Kq8dVinnpxXo=-h6UBK2q|-DV zi`lmaT0+Wzb1C8W85a~4jUd&c0)y~;udYrGWc|Ec!bA5HogJ0Ze(6%4K&0e@!_G$) z?kK=M?F$Ogysw`Df7Y(RD5*)j>92D^cznDU?ghP$kxir`M_@q86Nnste6PHhAYkeG zOHBLmM5^N`k%`E=Kx+kUK?j}-`sc}6`p^m~@0e(akz^8LdY_;@^f&-fD@OE^IxGfEEfB`p;x}iMl8v(T`5tDSfA@`A19EYz&V$g8*9HIJRsGxm7e~Dj!T6%Rq^@A7=Iip#}S?U=g-X$uY!I%U{2Kg#xaktW1744&91@HmP0Kt;}##I}O?#&Szj~;Z>C3 zT@$`xNeeD|pnPT{h(iJ4;JC=GTg6F91E2_Cw%4z}ftxv_J7PUX*3{I5u-U&9wuM#b zEqn%8uX zUB9|2f&)k|AxtKoY3rdHVS<4^T)uJ@unp=sSPP;&{m>P2y4P?UXgc7>lt6yYX1o*z z3kU&>dAwxj#}9dFX`^J_hIsjM7?RL$jIq(+Rf9Ys4v48opzq|#lk)8!PsQ^Ao)FJ* zAF#&}IGoh@Q@Ws}M^8xo?_Ci%4&t=Bgu9wS&ty9%dE|(IkdQm%3}B#`X!Y907kJ@)Wc=7~J6;>ZI-$=K!SIr_}h%m%{7J9V^jWcKPYMdGZmI>*nT$#QKI7dFP)W zFgS_Y{4S^Zif8eY`XOojoA z^*7dCaPYh3IMRm{H&(>_1jK593rcRJVm8(^Io|mE&YEf9^=J*8EuC9gyq2bi;|rer zUC1o%k#?b@)iwV=wVnAtm3jZiPm-jg+;T^VzMPR{geaAm= z=PugB!4h1SsG}Jxq7hmd9v(8Kfqf@@m38XK@jsEUXxXx8lu%HZ|2@)6jAIP@g13Y7 z6XLVPPXE!*xeT7=@*<13kA`PU=gxiXdwLN9JEZeyxFew2KG^-I zeWIJr+x_+<8drX%DnC3m{VdDOb54@LmcI|khxY|jdfiHEZPjk6wK_~}!YC?Y!}vfT zXRZY*q}j-kj4e@WhH2F+GI&i(>td;ND~amQnwrk7{}>kM1RJgY#MJZDvn05{mLenV zgbI&%JA304r}mj?d-nWGSGNQy1N##|KGl7Z+8}+G+{|?EA6(xPA(&uu>2mpJ{h!t~ zwzNzj=s|h2&RZfbV^+SJv5rL}5DF~LA}h^4c^o?EuLQW;Es`1rEE2`4V-4_afx4jim#Lfy9z%nYK_ zixJ=f>f6#bDy$zJBb8lpySTbVNfac{lS5X)Tf&0zquIU?wUNTA$p?%SL}%mx-i=w< z-sI%bkWnG|gHawlfBp_mVwIIg+KjC8<-t&S(Kynd5sMH$twFE?OO!j~@L<721D~*< z*a&zXzDp1!i~qLxeskvho|4ihF2n(YG4?M)A`UZ8%GxT3{~a?9Oa zZr!R( zvWb_NC0A*v#1#}QEqX@XmoawP9ADqNn|k#|OoB9HS7karGCU)ld2dhuDjo63$@8Ap z@#20Emmp0>b+wO(51e;00?`aO%yJcN*QDCo+OV)NIBdVpeO58iB<1+5b7r=-C8thN zO77pU1t`L>RB-GfImB;2f4eWkEW~dQOCrM|7_&b?o{k+oYC|Z5?2OM;S$)%o&w>Q% z<7q$r70|djEbFNOP(FL-!t+?^tI`_BVp_u zy9Fu>&We~d;6ev!HX$P!x!uj19^T%!QGQ-EBzuC136*VVeb=8A6^!3&Ab1XUW$a!< zv}AcmyvL6o4T@;ciWf!#h_s-50U&ol=f+3I=Yyq<@sX!5>~xG%yq;a3vE;*tJXQy= zogXxEl_Cz_3Ju&s|;cs*{IpZEtVqR5xE8JJrF_@d_FN zz7?5n6Flf7$wEtC#9Q8TH>99>Xl=I;!wtX5b_Txf>U^W4u3op`Q1tbt^y~G_m3|-X|OUSrO0|El(PfwI6H&AP^%7{l5&U|5N77-a) z;B!(SjLn$pZ8&aRB(p2DZgs&$7&_Lvj=?(-OA-$+!ZHJGfuDr?9)O=e*`JlqiO;#D z>Xs}2ROfl`?}~hE&`^4EF1EzQl_DUixQDxlqZ&a7?uj;%8%Xck>sKzoq+!vb!xTE4 zH@aGp2$Z3j2Tr!ZG=YF+2kQu)J~?*KgMRa=8i)x3>zyOIMOEj;n>R}xW|5K5GWcTF zBapsKeIZ1ni|g|TUAySUJr5E zORf$HJ?vo;7q!`B>2FLDT(>!^Lt53)*t>hTLlUrj+!qV0iq|g%bErEf0x@0^3NCsY zSpTf)7V(hmS(BOx9tilA&V3nUE}p=tpo#^Jn36<4&9)sN7Ta#@{=|~#6ix)Kx?5H@ z9}OCIu1t)!=*T^80dbA`CAT`FBu^?6SYiASq_2IcsYBG%0$OVq+a%7tu#$wH3*fFC z^MEYHZ^Rat;7Z-|Za4v%QVQsh15X8jNmLmYAW0JPoadZ5gpZ9>{e(pR%~08rAP)3L zDQva;hrIFBXNRUp@{S$TwGQ5kuRvzaK(RPfGAmPcuiItklrg1--$f|)yjo0^WuD`4 zrbJ8e=_e~24xufETi-l(vZl=4*Wm5NUQtn24!V2lIqCUn@$Q7loDPm3%9<%jf0~Cv zJV1><%G9)*!^oDwYwraGDg9i@p26GYz3vy#LUUH7GS7tI{BcgQz0whlzkJNoPB22r z%@YJ>z%%g+>()`DuDAjfdW9Mr7iynRQI-~J@Zr>BvG-^EQC=?&E7hi!?DF5X4$P;RZ^oq6vnL z+x7GGc>)u*PHRp1yf*R&_BOSr7XEA#=DVfG>`z)Sf2U3gH#9xfvd@6GvGU9wYF<+& zi9asn!Y@&##wo9|Jl&ESk6a43j=jP*^gj{MD`ptElcM$Hi4)2L2X1Lep<4@Xxv8Zx zdi3f4LU*^Z3}fxI;;DTH{*Lo3w3!4=t##0C+ zc{J*S1_{=8dV14T%fCCbaHNaB zvS)2{PtauwCuG+K!R|!K`Si&}?urnZ=BNGYmssKAr+jG5vq{9j7On!M@iM)N!%f^W zqBZ&B?`JLG#OhK-6&5ZlS^-B#AnK9=Z4wb7Sxevbb(tt!lt!J{K-7h>80>Y|sb!O0 zT;fPxCr_@(@pHw)0H2_hje>nOCk>OMx3}0jh#(`M`~en!_h@8R&@hhL@{}>Bslp=pWVwo{wWDJw(k20*^!Mk$9f12dA=fLPWANpN9Yq%$WbOUEmyBkvsmyeQ z9K;?-8?)38$5)X9j**p>Si?oVJ~qRn+kUUx<4L1;h@xiTOT`Ux1F(?HV3y;eW@Gbd z{^IR14bkLi!C$W<(I$X`f{`V$N_ln!%BDEmxO7`_csJUGEjeH+cJ{k)1x%hTHOQ_M!~iRjFeYv>US(8ftv&a0Mnq zuDWfUa*b%sQDy~tdOsym>&K7puuyVzlkB^`>|yZ_d!`_LsSSd{Xl#r}tnB}mypJe> z8+bA+>j@nnmKjP_!^@92ELkF0jPlUew>|-PXaDBikDYFkLRelySqH4W`cNyKk@0+H z&xMz|u3>cOYWeMR{p^-J6b{(+yd(uzSDSLxORTi_`c>;^8waD2q@=;Wv|pL|!!~9) zRFSQpqreS%JheHF>%e}#K7K?DLRsBgM8;+IIoa9Sc0<>h&2y&fGxB4c%ivKUbSf%p zXlin4T~s=%uJt!=9Ow3J^>+D9`55k0;Pt)p{xVu|t^>QWr)?2ki^1HHX_Kfs&MIy9 zD|m!m3w;Jn3kHv2SQ_f$@1a+QlKf;x9dh#=Qe$MVaG8J zRbk;f`|sU3(N`#))D+u3e3*awu5t{z%;Mr=0)oFp{Yrnl)B(`W&pytO9L^Fu8y6Bf zphd=onD416zQmV<7kCUP2cYClXmaEXD~T`tDnyXb(7$ndOPaoY`ete=h{LK{=FG(j zhm`oi=`Nf#DAbsd{L}RT-WI`f*_{&y={PxP-`-w)2X9iaGNoiOs`|Eg+UcF5LlA(C zjLc@ASNoRAls+Tl$K)zXmsbr9$allTF@eLs~8$1eyF9kY6XOW0mu*{Ph z!0DjJ+G^HLpgNEMA!GLzL9HO#A+M(q7D Q+}KxkU&STaF{zP;LP0?Rot162R2D{wD3vz6d-s^1QgkGvAs3);P}kKJKR-0l zC^^G!1CWW&WhZlbPr41d@FEyzB_+0uF-uCA;to|IT{3rkA7QKL$l40_YRSp<)at;N zyc;?q5=q%AOiviY!HnzC%YG)U0FiR!&gW{B%(FNh%Tr$yBvV^ce@RKQtA6Q=N?nhV-N(2;htuNQ~dzZa*!a< zIgGX*T#k+g?({1-d*;k4JPj!yiaVggL*hE$4-uQ2d&}0xFCijT*pa+_=?m z?#ZuR3+CAno^-8()Z9BMq%2ckr!TvdY94r%v%D-Mgby-En3RrmhRyThMh0OjZ={h+ z_@N$8J~z#82Fh2<%NNqoP(Cu5K=Gs5-Ac2y-Pz#ljow@FD9c>@HP(1L)D_`V5h4hR zlM=M$$X$#4R7-=A79bvg*TnIm@))YC%js6v(6CzB_*Z81x4RV;FTm4rlVXyOItKT- z>(A{XS{;U|u`??Hy35L*5wCb$d3XE2_pLKE6fums?GD@zGwCrWZ?+iuTqHU79zV{!{v5Z)@g>1v zOwIrk}+E zUl(Hk?%hwCo0YfhL5$ja%+r1`NDtz#C>kZZswpNuW9ri5gr(s^8zvG(e14xRla0{* z+u=z442^Uxi!JiPV{Inm81?1BT=K{2gU9 z(@216vN{gQ6QVwu?E9*f0Jq#Xf>P-z{gC)6nSs;F+B@& zz`{cIIUG1IG<0WnGsGxf(=*1)3ucWKTqNUqDT+36_AM>3GUOfXX$Wa`36wpbbFpq_ z^FOQgy8+-p;s|7SUTy9>Lqib3JeoT^?BT~O0uV1S|8>waaqkHD^_-vb-^@;-5t{9T z3x&bQ@+W@~$b?jcGw_RY^MwPpBtvU^6HzcEE9meafhJvZ*Jfz+QP_+dJT0>DF%;A# z^)KZi(|E$*o`Q)G#xHLJIBuCW`lA=Qqr(JD@2#M~$mmUDqvFCGsqDt@KV2j_1B1b< z6uHdU(64HNCC#nbzI+d3qA3sG7O=ZV-eQ;}x$JP#`sYGzEiE`yf$zE*BETTBuyA#A zYiNt0`#)g>VNJlg)8@>~m6mS&T8z6**$E;SsAp}ERo}kAX#84+7!vhu9>xN~DE6d^ zc1QdG>_21({*OqDa9G)Qy^lgK+}o~S$GVW+00pjv!byOU2wb2ZTgw|z7YY2G931xC zC_$S($b+rB?eTP!c>3Y)XYSJ~MO{kJXO z@EcsDbD?*o-gp08LDh`gA=5;X4D^%UiGBaNaig=n9ScGE#>DJq!XR8I8dPS%D4{?I z0EU<%#m2_M2W1Gs2IjxCbZjG9Q3g{~a1Q~4`4e$CNwPwBl$qIYRSWo%nTd&ts%i(X z4AeE|T)-dfVb~Zo;%VPm(D(YMwb=>N@vI8J7znOLsCz^lh>3xIuzVyNQ+M1eC z+$v#=kcNRavsz|>*3mkenkbM(53?y3Fp3J89t7+K0j{X1G`wkmqZ+wTP;+{C>^^d& z3DG1$P*oJs`8t)LB$bum*}#iz33_&R*<(N$i1~zwKc25-s{fHe04(eTc=o`S(ciz3 zltx=vII1bG8OmDXZifXf02_0Wit=)D_BLl>9!PbBuM{7F5TM0-+Sw=xeFA!MXm2WU z2II$f0T7T3IefbA)sG&1gO^Apw`%;ut5+K+m$l)#OJ%koQ~VnlSmdY=T?s4T@7JclA3^*bn$P2W=K-R^8`2HPyFNm z#!QZCLLmooHbsKtg}?>uB@)y~?9b>=Py1qmgPqNZyRUiLe56NXVoipQ?0j`ewZQ8lB^Mb9jT)~*hYu&>^aB#L zdic+3&P7R=RCOy`B7blRcOItZe!!*;EgEK4xvc-!{sPv_AdJUe`ePp$`(%7NqpSGlyb~1ak5-xdv-@jQuerc zAt5M{XWLk*nM{oy?7-=yMrS6Xyxub8Irc)pTZHClx;OHS;07g_NS3bGRJyrJ_Hu!H zPHnr+Sm?22TQMb9@K2vyW?Z-FeBs2cv1LJN3swxKlvPe*igS4e$T} literal 0 HcmV?d00001 diff --git a/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-7.png b/e2e_test_output/docling/images/BOOKRAG_VLDB_2026_full-picture-7.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c1466a84eff9e060068c7edbad7f6d05357734 GIT binary patch literal 21595 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⪌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