2025 年大家都忙着搞 agent. 下面分类是随便分的.
RAG 简要回顾
2025 年大家都忙着开发 agent, 这里简要回顾一下 RAG.
RAG 基本操作
- Offline: 文件解析, 文本切片, embedding (以前通常用 bge)
- 对 query embedding 后做召回 (通常就算个 cos, chunk 量大时用向量数据库牺牲一定精度加速召回)
- Rerank (通常是 bge-reranker)
这套早在 2023 年就玩烂了.
- 基本的 “进阶” 操作可见 NisaarAgharia/Advanced_RAG, 以及 NirDiamant/RAG_Techniques
- 这是一篇很好的综述: 【同济大学 王昊奋】Agentic RAG 时代
- 另外可以参考一些 字节跳动 RAG 实践手册 将 RAG 分为数据层, 索引层, 检索层, 生成层.
读代码: Cherry Studio 联网搜
非常粗糙.
如果同时开启知识库和联网搜 (searchOrchestrationPlugin.ts
), 则用 SEARCH_SUMMARY_PROMPT
做意图分析和 query 改写. 简单地把两种搜索的结果拼接起来 (不会混起来重排), index 加上偏移量避免重叠. 如果设置了召回 memory 也会拼在后面.
联网搜分为两种:
- 一种是 local search (见
LocalSearchProvider.ts
), 直接解析 SERP (比如https://www.google.com/search?q=%s
). 免费. - 另一种就是调搜索 API, 比如 Tavily.
访问搜索引擎以及 fetch url 内容都是通过 Electron 在后台打开不可见的浏览器窗口加载指定的 url.
window.api.searchService.openUrlInSearchWindow(uid, url)
类似白嫖搜索引擎的项目还有比如 duckduckgo-mcp-server 以及 open-webSearch. 不清楚是否合规.
用 Pydantic 自动生成 LLM Tool Schema
简单小工具.
定义 tool 参数后, 不引入其他库, 仅用 Pydantic 自动生成符合 OpenAI 规范的 Tool Schema. 想法很简单, 把 Pydantic 的 model_json_schema
生成的 JSON Schema 处理成 OpenAI 规范即可.
好处是 (1) 不用引入或依赖其他乱七八糟的库; (2) 不用手动额外维护一套工具描述; (3) 能利用 Pydantic 的一些功能, 从 JSON string load 之后自动校验参数, 自动转换类型等.
难倒各路大模型的两道简单 SQLite 问题
问题描述以及示例 prompt 如下
你是 SQLite 专家, 请完成下面两个问题.
- 用 SQLite 写一个 query, 根据 “now” 获得当地时间今日零点的 unix 时间戳. 注: “当地” 指执行 SQL 的机器的系统时区, “今日” 指当地日期的今日.
例: 若 now 为 ‘2025-05-05 04:00:00+08:00’, 则返回 ‘2025-05-05 00:00:00+08:00’. (假设当地时区为 UTC+8)
- 用 SQLite 写一个 query, 根据 “now” 获得上周的周一的日期. 假设周一为一周的开始, 全程只在 UTC 时间考虑问题 (不用考虑时区).
例: 若 now 为 ‘2025-05-05’ 周一, 则返回 ‘2025-04-28’. 若 now 为 ‘2025-05-04’ 周日, 则返回 ‘2025-04-21’.
LightRAG 源码简要分享
Guo, Z., Xia, L., Yu, Y., Ao, T., & Huang, C. (2024). Lightrag: Simple and fast retrieval-augmented generation.
大体流程:
- 用 LLM 提取 chunks 中的实体和关系, 并存成一个图
- 用 LLM 从 query 中提取关键词, 根据关键词召回实体或关系, 再找到最相关的 chunks, 最后把所有东西都拼起来给 LLM 输出答案
ModernBERT
- Warner, B., Chaffin, A., Clavié, B., Weller, O., Hallström, O., Taghadouini, S., … & Poli, I. (2024). Smarter, Better, Faster, Longer: A Modern Bidirectional Encoder for Fast, Memory Efficient, and Long Context Finetuning and Inference. arXiv preprint arXiv:2412.13663.
- 2024-12-19 Hugging Face Finally, a Replacement for BERT
如同字面意思, 更现代的 BERT, 更快更强而且 context length 拓展到 8k tokens, 也是首个在训练数据中加入大量代码数据的 encoder-only 模型. BERT 系模型对比 LLM 的优势是快, 便宜, 而且很多任务适用 encoder-only 结构.
LoRA 变体
读文章: Understanding Pins through keyword extraction
挺久之前读的, 补个笔记. 传统机器学习. 从帖子的多个文本来源抽取候选标签, 然后用分类模型判断标签是否与帖子相关. 没有用到图片信息 (除了从图中抽取文字).
LLM-based Text2SQL
Gao, D., Wang, H., Li, Y., Sun, X., Qian, Y., Ding, B., & Zhou, J. (2023). Text-to-sql empowered by large language models: A benchmark evaluation. arXiv preprint arXiv:2308.15363.
个人总结: 一篇 LLM 在 Text2SQL 数据集上的 prompt engineering 的实验报告. 在文中评测的两个数据集中效果是开源方案中最好的. 提出的 prompt 方案 DAIL-SQL 融合了现有的几种 RAG 方法.