免责声明:本文不涉及具体金融学基础面三大报表的金融学内容,笔者并没有相关资质。正确率方面主要看是否能找到报告中对应的表,并结合DeepSeek进行询问的AI评价。原试验的LLM服务使用的是Qwen/Qwen3-8B,如应用在实际场景,请自行测试验证。
前言
作为开发者,参与SeekDB和PowerMem的Workshop,关注的重点在官方公告(https://mp.weixin.qq.com/s/PEhpO3zJjswSS5OdZyA4xQ)的
三是更开发者友好。seekdb 以 Apache 2.0 协议全球开源,开发者可自由使用、修改和扩展。产品全面兼容 Dify、Coze、LangChain、LlamaIndex 等 30 余种 AI 框架及 MCP 大模型协议,无缝融入 AI 生态。同期开源的 PowerRAG 智能文档解析框架与 PowerMem 分层记忆架构,后者在 LOCOMO Benchmark 以 78.70 分达到 SOTA 水准,Token 消耗降低 96%,大幅节省推理成本。
吐槽:三是更开发者友好。-> 三是优化开发者体验/三是开发者体验提升。
总体来看,workshop的侧重点各有不同,无论是langchain,Dify(作为Dify存储或者MCP介入)都展现了在环境上很好的兼容性。
笔者的老的mac本就不参与性能测试了,从开发者视角主要看下架构,正确率和Token消耗。今天这篇主要聚焦在langchain怎么和seekdb集成的,会通过Show me the code链接和展示代码细节,也会通过Show me the vibe请DeepSeek做一些点评和测试。
我们先让DeepSeek对试验的核心代码部分做个点评。
一句话描述架构
这是一个智能文档检索与分析系统,专门用于处理Nike公司的10-K年度财报文档。
系统架构图
搜索策略矩阵
| 搜索模式 | 向量权重 | 稀疏权重 | 全文权重 | 适用场景 |
|---|---|---|---|---|
| 均衡模式 | 40% | 30% | 30% | 通用查询 |
| 语义模式 | 70% | 20% | 10% | 概念性问题 |
| 关键词模式 | 20% | 60% | 20% | 技术术语查询 |
| 精确模式 | 10% | 20% | 70% | 精确短语匹配 |
核心效果
-
数据处理流水线:从文档处理到智能问答的完整流水线
- PDF文档加载与智能分块
- 三种嵌入向量同时生成
- OceanBase向量数据库存储
-
自适应策略:智能代理根据问题类型自动选择最佳搜索模式(通过langchain实现)
- 自动选择最佳搜索策略
- 支持4种搜索模式:均衡、语义优先、关键词优先、精确匹配
- 多步骤推理处理复杂问题
拾遗:现场没有动手的部分——Workshop的前两部分做了什么?
实际上在翻看langchain x SeekDB的这个workshop的前两部分,也就是现场没有动手实践的部分,我们可以看到实验第三步的代码是如何一步步演进成为最终的样子的。同时,笔者也关心这里的token使用率和正确率问题,进而引发出一个问题:
SeekDB如果作为RAG的正确率?
在我们使用数据库的时候我们可以使用TopN来获得前N条记录。切换到用户视角,在下文中我们使用Pass@N的概念,生成 n 个不同的代码解决方案,其中至少有一个能通过所有测试用例的概率。
SeekDB相似度检索的结果
github.com/oceanbase/langchain-oceanbase/blob/main/langchain_oceanbase/vectorstores.py
代码来自oceanbase和langchain集成时所使用的桥接项目,核心查询逻辑,是similarity_search这个API,这个API可以理解为直接向数据库发起查询返回结果。
测试问题一: What are Nike’s main revenue sources and business segments?(耐克的主要收入来源和业务板块有哪些?)
数据库检索结果pass@3其实我们看到在第三个结果中,给出了表结构的财报内容,这里可以看到数据自己已经做的很好了。
| (单位:百万美元) | 2023财年 | 2022财年 | 百分比变化 | 剔除汇率影响后的百分比变化 | 2021财年 | 百分比变化 | 剔除汇率影响后的百分比变化 |
|---|---|---|---|---|---|---|---|
| NIKE, Inc. 收入: | |||||||
| NIKE 品牌收入按品类划分: | |||||||
| 鞋类 | $ 33,135 | $ 29,143 | 14 % | 20 % | $ 28,021 | 4 % | 4 % |
| 服装 | 13,843 | 13,567 | 2 % | 8 % | 12,865 | 5 % | 6 % |
| 装备 | 1,727 | 1,624 | 6 % | 13 % | 1,382 | 18 % | 18 % |
| 全球品牌事业部 | 58 | 102 | -43 % | -43 % | 25 | 308 % | 302 % |
| NIKE 品牌收入总计 | $ 48,763 | $ 44,436 | 10 % | 16 % | $ 42,293 | 5 % | 6 % |
| Converse | 2,427 | 2,346 | 3 % | 8 % | 2,205 | 6 % | 7 % |
| 公司项 | 27 | (72) | 不适用 | 不适用 | 40 | 不适用 | 不适用 |
| NIKE, INC. 收入总计 | $ 51,217 | $ 46,710 | 10 % | 16 % | $ 44,538 | 5 % | 6 % |
| NIKE 品牌收入补充细节: | |||||||
| NIKE 品牌收入按渠道划分: | |||||||
| 向批发客户销售 | $ 27,397 | $ 25,608 | 7 % | 14 % | $ 25,898 | -1 % | -1 % |
| 通过 NIKE 直营销售 | 21,308 | 18,726 | 14 % | 20 % | 16,370 | 14 % | 15 % |
| 全球品牌事业部 | 58 | 102 | -43 % | -43 % | 25 | 308 % | 302 % |
| NIKE 品牌收入总计 | $ 48,763 | $ 44,436 | 10 % | 16 % | $ 42,293 | 5 % | 6 % |
| 按批发等效基准计算的 NIKE 品牌收入: | |||||||
| 向批发客户销售 | $ 27,397 | $ 25,608 | 7 % | 14 % | $ 25,898 | -1 % | -1 % |
| 我们批发业务向 NIKE 直营业务的销售 | 12,730 | 10,543 | 21 % | 27 % | 9,872 | 7 % | 7 % |
| NIKE 品牌批发等效收入总计 | $ 40,127 | $ 36,151 | 11 % | 18 % | $ 35,770 | 1 % | 1 % |
| 按消费者类别划分的 NIKE 品牌批发等效收入: | |||||||
| 男士 | $ 20,733 | $ 18,797 | 10 % | 17 % | $ 18,391 | 2 % | 3 % |
| 女士 | 8,606 | 8,273 | 4 % | 11 % | 8,225 | 1 % | 1 % |
| NIKE 儿童 | 5,038 | 4,874 | 3 % | 10 % | 4,882 | 0 % | 0 % |
| Jordan 品牌 | 6,589 | 5,122 | 29 % | 35 % | 4,780 | 7 % | 7 % |
| 其他 | (839) | (915) | 8 % | -3 % | (508) | -80 % | -79 % |
| NIKE 品牌批发等效收入总计 | $ 40,127 | $ 36,151 | 11 % | 18 % | $ 35,770 | 1 % | 1 % |
测试问题二:What were Nike’s total revenues in 2023?(耐克2023年的总收入是多少?)
这道题直接pass@1,pass@2,pass@3都拿下了。
- 在2023财年,NIKE, Inc. 实现了创纪录的512亿美元收入,按报告基准和货币中性基准分别增长10% 和16%。
- NIKE直营收入从2022财年的187亿美元增长至2023财年的213亿美元,增幅达14%,约占2023财年NIKE品牌总收入的44%。
- 本财年毛利率下降了250个基点至43.5%,主要原因是产品成本上升、降价增加以及外汇汇率的不利变动,部分被战略性定价行动所抵消。
- 截至2023年5月31日,库存为85亿美元,与上年持平,这得益于我们在整个2023财年为管理库存水平所采取的行动。
- 我们在2023财年通过股票回购和股息向股东返还了75亿美元。
- 截至2023年5月31日,投资资本回报率 为31.5%,而截至2022年5月31日为46.5%。ROIC被视为非公认会计准则财务指标,更多信息请参见"非公认会计准则财务指标的使用"。
2023财年与2022财年比较
- NIKE, Inc. 收入在2023财年达到512亿美元,与2022财年相比,按报告基准和货币中性基准分别增长10% 和16%。这一增长得益于北美、欧洲、中东和非洲(“EMEA”)、亚太及拉丁美洲(“APLA”)以及大中华区收入的增长,这些地区分别为NIKE, Inc. 总收入贡献了约7、6、2和1个百分点的增长。
测试问题三:What are Nike’s key strategic initiatives and growth opportunities?(耐克的主要战略举措和增长机会是什么?)
看找到的内容1和3,感觉有点“emmmm”了。不同于前两个数据查询问题,这个问题偏主观,我们先看一下搜索的结果,具体的讨论放在文章末尾一并进行。
**项目 7. 管理层对财务状况和经营成果的讨论与分析**
**概述**
NIKE 在全球范围内设计、开发、营销和销售运动鞋类、服装、装备、配件和服务。我们是全球最大的运动鞋类和服装销售商。我们通过 NIKE 直营业务...
由于耐克是一家消费品公司,各类运动和健身活动的相对受欢迎程度及普及度,以及不断变化的设计潮流,均会影响对我们产品的需求。因此,我们必须通过调整现有产品组合、开发新产品、新款式和新品类,并通过广泛的市场营销来影响运动和健身偏好,从而对消费者偏好的趋势和转变做出响应。若未能及时、充分地做出响应,可能会对我们的销售额和盈利能力产生重大不利影响。这是一项持续存在的风险。请参阅条目1A“风险因素”。
与Langchain集成,从API到Tool的转变
通过retriever把API包装成一个tool,底层数据库查询逻辑见上文相似度检索,为了方便大模型使用,给了一个工具定义。
Search Nike's 10-K annual report for relevant business information.
Use this tool when you need to find information about:
- Nike's financial performance (revenues, profits, earnings)
- Business segments and product categories
- Geographic operations and markets
- Risk factors and challenges
- Strategic initiatives and growth plans
- Competitive position and market trends
Args:
query: The search query describing what you want to find about Nike
top_k: Number of relevant documents to retrieve (default: 3)
Returns:
A formatted string with the retrieved documents and their page numbers
这里对于Tool的测试采用问题的是Nike revenue 2023, 由于实际上这里是一个agent侧把一个retriever包装成一个tool的逻辑,在前面数据库相似度检索的例子里,我们已经知道核心逻辑上可以搜到答案,测试自然也是通过的。
从本试验范围内的查询能力出发——特定问题下智能workflow设计
在直接使用数据库进行查询的情况下,可以直接定位到文档位置,基于返回的内容,实际上无论用什么框架设计实现Agent,归功于相似度查询的准确性都可以得到很好的结果。查的准了,没有在大模型上下文里去查,通过function call的方式实现上下文外部执行了,自然Token消耗就降低了。继续看代码演进过程。
我们在完成了Tool定义之后来通过system prompt构建一个Agent并发起一个chat。
system prompt:
You are a helpful AI assistant with access to Nike's 10-K annual report. Use the search_knowledge_base tool when you need information about Nike's business, financials, segments, risks, or strategy. For simple questions that don't require Nike data, answer directly.
chat:
What were Nike's total revenues and operating income in fiscal 2023?
我们用搜索结果直接看一下,是报告中的这页。可见搜索能力还很强的,实际上把相关的搜索结构贴进DeepSeek,直接用chat提问就好了,在这个单轮简单场景下不太需要system prompt。不过也和模型能力,使用方式和习惯有关。
如果我们想做一个传统的workflow,对于任意10k报告只拿total revenues and operating income这类固定信息的话,不考虑灵活性,永远只关注特定问题,可以考虑硬编码实现的话:
1. 查询rag
2. 基于rag的结果构建任务
3. 向大模型发送任务
本试验范围内的局限性分析讨论——Agent回答主观问题的灵活性
可能有朋友要问了,笔者为什么没有使用主观题的例子?因为财报作为报表信息,那么对于上述客观内容的查询,我们可以单独使用这个财报来做。但对于以下问题,正如测试问题三,可能结果并不是很理想,我们进一步思考这个问题实际上是取决于财报具体怎么写的一件事情。
具体来看下例子:
首先,告诉我耐克的数字商务和电子商务战略。
然后,解释他们的可持续发展倡议和环境承诺。
最后,描述他们的创新和产品开发方法。
是否会命中以下工具描述,实际上是很看大模型,以及财报内容的。
在Nike的10-K年度报告中搜索相关业务信息。
当您需要查找以下信息时,请使用此工具:
-耐克的财务业绩(收入、利润、收益)
-业务部门和产品类别
-地理运营和市场
-风险因素和挑战
-战略举措和增长计划
-竞争地位和市场趋势
以下是来自DeepSeek对于上述问题,工具命中率的评价:
命中概率:70%
理由分析:
**会命中的原因(支持概率较高的因素):**
1. **数字商务和电子商务战略**:这部分查询与工具描述中的“战略举措和增长计划”高度相关。耐克的10-K年度报告通常会详细讨论公司的战略方向,包括数字转型和电子商务计划,因为这些直接影响财务业绩和竞争地位。例如,10-K报告可能包含数字销售渠道的增长策略、在线平台投资或数字营销举措,这些都属于“战略举措”范畴。
2. **创新和产品开发方法**:工具描述中的“业务部门和产品类别”以及“战略举措和增长计划”可能间接覆盖创新和产品开发。10-K报告通常会概述产品研发投入、新产品推出或技术创新,作为增长战略的一部分。此外,“竞争地位和市场趋势”可能涉及产品创新以保持竞争力。
3. **可持续发展倡议和环境承诺**:虽然工具描述没有明确提到环境或可持续发展,但10-K报告中的“风险因素和挑战”部分可能涉及环境法规、气候相关风险或可持续发展承诺,因为这些因素可能影响财务业绩和长期战略。例如,耐克可能将环境倡议作为风险管理或品牌声誉的一部分进行披露。
**不会完全命中的原因(概率不是100%的限制因素):**
4. **可持续发展倡议和环境承诺**:工具描述主要聚焦于财务和业务信息,而可持续发展倡议通常更侧重于企业社会责任(CSR)或环境、社会和治理(ESG)报告,而非10-K的核心内容。10-K报告可能只简要提及环境问题,如果它们被列为重大风险,但不会深入细节如具体倡议或承诺。因此,这部分查询可能只能获得有限信息,命中概率较低。
5. **创新和产品开发方法**:工具描述中的“业务部门和产品类别”更侧重于产品分类和财务表现,而非具体的开发方法或创新流程。10-K报告可能不会详细描述产品开发方法论,除非它直接关联到战略计划或风险。因此,这部分可能只能得到高层概述,而非深入细节。
6. **查询的综合性**:您的查询要求三个独立方面的信息,而工具描述更偏向于宏观业务和财务数据。如果10-K报告中没有明确章节讨论可持续发展或产品开发,工具可能无法提供全面答案,导致部分内容缺失。


