Skip to content

检索与引用 ​

检索是橘记的核心能力。目标不是「搜到差不多的东西」,而是定位到具体段落,并且你能核对。

标题级分块 ​

Markdown 会按多级标题路径拆成可定位的块:

  • 每个块都带着完整的标题路径,例如 项目规划 > 里程碑 > Q3。
  • 超长段落会继续拆分,单块上限 1200 字符,避免长文被一个块占满上下文。

中文分词 ​

查询和索引内容都会先经过 jieba 分词,再进入 FTS5 索引。

这让没有空格的中文句子和自然语言短语也能正常召回。

索引分四列加权:标题、路径、标题路径、正文。标题和路径命中权重更高。

引用可验证 ​

检索结果会带定位信息:

标题路径 · L起-L止

例如 架构设计 > 存储层 · L120-L168。

回答底部的引用列表和 Agent 过程面板都能看到这些定位,点回去就能核对原文。

结构化过滤 ​

当你的约束是「某个目录 / 某个标签 / 某种文件类型 / 某段时间」,Agent 会用结构化过滤参数,而不是把约束塞进查询词:

参数含义
pathPrefix限定目录前缀
tags按标签过滤
fileTypes文件类型(目前只放行 markdown)
updatedAfter修改时间下界
updatedBefore修改时间上界

过滤在 SQL 层完成,关键词和向量两路召回复用同一套过滤条件。

空结果的处理 ​

检索没命中时,橘记不会直接说「没有这个内容」:

  1. 先用全部 token 做 OR 查询。
  2. 失败后用 top 3 token 重试。
  3. 再失败走快照子串兜底。
  4. Agent 会被引导用更短的关键词重试、放宽过滤,或先用 list / read 确认,再下结论。

排序 ​

  • 基础分是 BM25,叠加标题 / 路径 / 标题路径的列权重。
  • 同一篇笔记只保留最高分的块,避免长文霸榜。

下一步 ​

基于 Apache-2.0 许可发布