mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-28 21:49:40 +02:00
search-kb: on-demand KB tool on the [n] spine; drop kb_matched_chunk_ids
The main agent's search_knowledge_base tool runs the hybrid spine, renders a <retrieved_context> of numbered [n] passages, and persists the registry. KB subagent prompts teach citing [n] from <document view="full"> reads (evidence.chunk_ids -> evidence.citations). Delete the now-unused search->read highlighting hand-off: the kb_matched_chunk_ids state field, its reducer default, the tool's _matched_chunk_ids writer, and the dead KnowledgePriorityMiddleware writes.
This commit is contained in:
parent
04a76b163b
commit
c98bdea5cf
16 changed files with 518 additions and 325 deletions
|
|
@ -13,7 +13,7 @@ from app.schemas.new_chat import MentionedDocumentInfo
|
|||
|
||||
from .chat import resolve_chat_references
|
||||
from .connectors import resolve_connector_references
|
||||
from .documents import resolve_document_references
|
||||
from .documents import referenced_document_ids, resolve_document_references
|
||||
from .folders import resolve_folder_references
|
||||
from .models import (
|
||||
ChatReference,
|
||||
|
|
@ -89,6 +89,7 @@ __all__ = [
|
|||
"FolderReference",
|
||||
"Reference",
|
||||
"ReferenceKind",
|
||||
"referenced_document_ids",
|
||||
"render_reference_pointers",
|
||||
"resolve_references",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
"""Resolve ``@document`` references.
|
||||
|
||||
Two concerns, one subject: ``resolver`` turns document ids into pointer
|
||||
references for the model, ``referenced`` turns ``@document`` / ``@folder``
|
||||
mentions into the document ids a retrieval is confined to.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from .referenced import referenced_document_ids
|
||||
from .resolver import resolve_document_references
|
||||
|
||||
__all__ = ["referenced_document_ids", "resolve_document_references"]
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
"""Resolve ``@document`` / ``@folder`` mentions to the documents they point at.
|
||||
|
||||
Reference resolution, not retrieval: this answers "which knowledge-base
|
||||
documents did the user point at this turn?". ``@document`` ids pass through;
|
||||
``@folder`` ids expand to the documents directly inside each folder within this
|
||||
search space (direct children only, not nested subfolders). The caller turns the
|
||||
returned ids into a retrieval ``SearchScope``.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.db import Document
|
||||
|
||||
|
||||
async def referenced_document_ids(
|
||||
session: AsyncSession,
|
||||
*,
|
||||
search_space_id: int,
|
||||
document_ids: list[int] | None = None,
|
||||
folder_ids: list[int] | None = None,
|
||||
) -> tuple[int, ...]:
|
||||
"""Sorted document ids the user pointed at (empty = nothing referenced)."""
|
||||
doc_ids = set(document_ids or [])
|
||||
folders = list(folder_ids or [])
|
||||
if folders:
|
||||
rows = await session.execute(
|
||||
select(Document.id).where(
|
||||
Document.search_space_id == search_space_id,
|
||||
Document.folder_id.in_(folders),
|
||||
)
|
||||
)
|
||||
doc_ids.update(rows.scalars().all())
|
||||
return tuple(sorted(doc_ids))
|
||||
|
||||
|
||||
__all__ = ["referenced_document_ids"]
|
||||
|
|
@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
|||
from app.agents.chat.runtime.path_resolver import PathIndex, doc_to_virtual_path
|
||||
from app.db import Document
|
||||
|
||||
from .models import DocumentReference
|
||||
from ..models import DocumentReference
|
||||
|
||||
|
||||
async def resolve_document_references(
|
||||
Loading…
Add table
Add a link
Reference in a new issue