查一句"茶税什么时候开始的",它能在《食货志》《通典》里把原文段落端到你面前;
你喊一声"六祖坛经",它知道你要的是藏内正名完全不同的那几部书;
它还能给 AI 一个"长期记忆",让每次研究的结论都沉淀下来、随取随用。
这一切纯本地运行,不联网、不调用任何外部大模型。
一、为什么要有它
做文史研究、内容创作或者考据写作的人,大概都遇到过这些场景:
- 明明记得某部史书里写过某项制度,翻遍全文检索却找不到——因为古籍里的说法是"榷茶"“茶引”,而你搜的是"茶税";
- 想查一部佛经,喊它的俗名(六祖坛经)却搜不到——因为藏内的正名是另一个样子;
- 语料散落在几百个目录、几千个文件里,没有一个统一的入口;
- 让 AI 帮忙做研究,它每次都是"金鱼记忆",上次考证的结论这次全忘了。
WebSearch1就是为解决这些问题而写的:一个开箱即用的古籍全文检索服务 + AI 记忆库,一套 HTTP API 全部搞定。
二、它有什么
| 能力 | 一句话说明 |
|---|---|
| 275 万篇古籍全文检索 | 殆知阁开源语料 15 大类(史藏/子藏/集藏/儒藏/佛藏诸藏……),覆盖率约 92%,命中即返回原文段落 |
| 口语化语义检索 | 支持近义表达与旁义问法,"服务重启后第一次写入会卡住"这类大白话也能召回相关内容 |
| 书名别名 | “六祖坛经”“道德经”"庄子"这类俗名自动映射到藏内正名,俗名正名都能查 |
| 书内范围检索 | 书名+里/中/论把结果锁死在一本书内,"通鉴纪事本末里 榷茶"不再混入全书库噪声 |
| 分类直查 | 查询以分类名开头即进入该集合:史藏 茶课等价于"只在史藏里搜茶课" |
| 引号精确匹配 | "茶马司"逐篇验证相邻性,精确语义不打折 |
| 层级目录树 | 根 → 分类 → 书 → 章节,四级目录在线浏览,像翻一套影印大丛书 |
| AI 记忆库 | 给 AI 的长期记忆:存结论、查结论、修订留痕,跨会话不丢 |
几个设计取向,也是它和"拿 Elasticsearch 灌一遍语料"的区别:
- 纯本地、零外部依赖:检索全程在本机完成,不调用任何在线大模型 API——语料和查询记录都留在自己手里;
- 为古籍而生:从分词到排序都针对文言文做了适配,俗名、异名、无标点长串都能处理;
- 毫秒级响应:热态查询几十毫秒返回,批量研究跑起来不卡顿。
三、五分钟上手
1. 启动服务
gitclone<仓库地址>websearch1cdwebsearch1 pipinstallfastapi uvicorn# 首次部署:用仓库自带脚本从殆知阁语料构建索引(一次性,约十几分钟量级)python3 build_full.py<殆知阁语料目录>index.dat python3 app.py# 默认端口 9205服务起来后,浏览器打开http://127.0.0.1:9205即可使用网页界面;程序化调用走 HTTP API。
2. 第一次查询
curl-XPOST http://127.0.0.1:9205/search\-H'Content-Type: application/json'\-d'{"query": "茶税", "top_k": 5}'返回(节选):
{"results":[{"doc_id":"史藏_政书_清朝通志_line_5187","title":"清朝通志","content":"……茶税之课,其目有二:曰茶课,曰茶引……","highlights":["……茶税之课……"],"category":"史藏","score":2.85}],"total":5,"took":0.03}content就是原文段落全文,highlights是含关键词的片段,doc_id可以回溯定位。
3. Python 一把梭
importjson,urllib.requestdefsearch(query,top_k=5):req=urllib.request.Request("http://127.0.0.1:9205/search",data=json.dumps({"query":query,"top_k":top_k}).encode(),headers={"Content-Type":"application/json"})returnjson.loads(urllib.request.urlopen(req,timeout=30).read())forhitinsearch("榷茶")["results"]:print(hit["title"],"::",hit["highlights"][0][:50])四、查询方式全解
按"你想干什么"选写法,这是日常使用 cheatsheet:
| 你想干什么 | 怎么写 | 例子 |
|---|---|---|
| 一般主题检索 | 直接写词 | 茶税、榷茶、盐铁 |
| 只查某个分类 | 分类名开头 | 史藏 茶课 |
| 浏览一个分类 | 只写分类名 | 儒藏(按书序返回) |
| 锁死在一本书里 | 书名 + 里/中/论 | 通鉴纪事本末里 榷茶 |
| 找某本书 | 裸书名 | 郁离子 |
| 用俗名找书 | 俗名直接写 | 六祖坛经、道德经、庄子 |
| 精确短语 | 引号括起 | "茶马司" |
几个真实效果:
六祖坛经里说佛性—— 俗名 + 硬范围,直接命中大藏经里《六祖大师法宝坛经》讲佛性的章节,全书库噪声为零;道德经里论水—— 命中《道德经》各注本论"水"的章节,不会把《荀子》论水的段落混进来;- 旁义问法也认:查"服务重启后第一次写入会卡住",记忆库里关于重启死锁的记录照样被召回——哪怕原文里一个相同的词都没有。
五、研究工作流:顺藤摸瓜
查古籍最有效的方法论是"顺藤摸瓜",WebSearch1 把每一步都支撑起来了:
- 术语扩展:从用户的词找到历史术语。茶税 → 榷茶 → 茶引 → 贴射法,每个术语各查一轮,看分类分布定位"主战场"(茶的话题大多在史藏政书类);
- 深读原文:命中结果的
content是全文,挑三五篇读透,别只看摘要; - 引文追链:古籍互相引用——《长编拾补》自注出自《纪事本末》卷百三十七,顺着引用跳过去再查;
- 邻章扩展:古籍同书相邻章节常是同主题连续记载,用命中书名再查一轮即可扩容语料。
一轮茶文化研究下来,从茶政制度、贡茶、宗教茶到市民茶生活,23 篇核心引证就是这么摸出来的。
六、AI 记忆库:给 AI 一个不会失忆的脑子
这是它最有想象力的部分。/memories是一个独立的记忆索引,专为 AI(或人)跨会话沉淀知识设计:
存一条记忆
curl-XPOST http://127.0.0.1:9205/memories\-H'Content-Type: application/json'\-H'X-Write-Token: <你的写令牌>'\-d'{ "domain": "茶文化研究", "project": "榷茶制度", "title": "榷茶始自唐建中三年", "content": "榷茶之制始自唐德宗建中三年,税天下茶漆竹木,十取其一,充两税军费。", "memory_type": "结论", "confidence": 0.95, "tags": ["茶税", "唐代"], "sections": [{"kind": "出处", "text": "《旧唐书·食货志》"}] }'查回来——大白话也行
curl-XPOST http://127.0.0.1:9205/memories/search\-H'Content-Type: application/json'\-d'{"query": "唐朝什么时候开始收茶税的", "top_k": 3}'哪怕查询和原文一个词都不重合,语义通道也能把这条记忆端回来。
修订留痕
结论更新了?两种姿势:
- 版本链(要保留演化历史):再存一条新记忆并声明
supersedes: ["旧记忆doc_id"]——旧版软删留痕,新旧关系永久记录在元数据里,随时可查"这条结论是被哪条取代的"; - 原地编辑(改错别字/补标签):
PUT /memories/{doc_id},创建日期保留,最后编辑日自动盖章。
为什么要给 AI 用
把 WebSearch1 挂成 AI(比如 Claude/Cursor 这类编码助手)的检索工具后:
- AI 每次开工先查记忆库,不重复研究;
- 研究结论随手入库,下次会话直接取回;
- 保存天然幂等——AI 重复提交同一条内容不会产生垃圾副本;
- 配合古籍检索,AI 就有了"考证 + 记忆"的完整研究能力。
七、典型应用场景
| 场景 | 用法 |
|---|---|
| 文史论文/专著写作 | 引文出处核查:制度、职官、地理、人物一键定位原文 |
| 历史经济研究 | 茶政盐铁、赋役漕运,跨分类顺藤摸瓜 |
| 内容创作考据 | 写历史小说/剧本前查典章名物,避免"穿越"硬伤 |
| 古籍点校整理 | 目录树浏览 + 精确短语定位,版本比对辅助 |
| AI Agent 工具接入 | 一套 REST API,检索 + 记忆两件套,给 Agent 装上"藏书楼 + 笔记本" |
八、部署须知
- 一台普通多核机器即可,无需 GPU、无需外部服务;
- Python 3.9+ 与 FastAPI/uvicorn,索引构建一次、之后只读服务;
- 语料基于开源的殆知阁古代文献(daizhige),可按需增删分类;
- 检索类接口无需鉴权即可本机使用;写接口(含记忆库保存)通过部署时配置的写令牌保护。
九、写在最后
WebSearch1 的野心不止于"一个能用的搜索框":它想证明中文古籍 + 本地检索 + AI 记忆可以组成一套完整的数字化研究基础设施——查得到、记得住、越用越顺手。
如果你也在和古籍打交道,或者想给你的 AI 配一个"藏书楼",欢迎试用、提 issue、交流检索心得。下一篇计划写《顺藤摸瓜实战:从一句"茶税"摸出 23 篇核心引证》,感兴趣的点个关注。
项目持续演进中,当前版本特性以仓库 README 与 API 文档为准。