想问下大佬们,在用 ai 的时候遇到问题了
- 内容介绍
- 文章标签
- 相关推荐
想问下,公司有一个类似数据平台的项目,然后最近在用 ai 出报表,第一次把数据库表结构都喂进去了,但是换了会话之后 ai 就不记得了,请问类似这种场景的话 如何让 ai 保持永久记忆呢,就是自己的知识库以什么方式灌进去比较合适?大家一般是怎么做的?
网友解答:--【壹】--:
你们自己写啊
--【贰】--:
构建知识库和记忆系统,直接把文档上传,需要的时候自己去查知识库
--【叁】--:
什么工具?
--【肆】--:
好的,谢谢
--【伍】--:
让ai拆分你保存记录文件的内容,如果内容多的话让ai拆分一下,并且让ai建立好索引,让它在文件的开头写概述,现在编程的agent都是渐进式披露的,在读了开头之后,不符合就不会读具体的内容了,或者你可以维护一份记忆会话或者数据库功能拆分后的索引目录
--【陆】--:
每次查知识库上下文太长了,消耗token也很大,更好的做法应该是先把知识库中的内容切片做RAG检索,然后塞进向量库里,再做一下摘要。让AI自己去检索然后拿对应的内容。
--【柒】--:
存入文档让ai读
--【捌】--:
新增文件夹以便保存此次对话关于数据库表结构的记忆,你来找一个合适的地方,保存一份人阅版本便于我来审查,再保存一份用于你读取恢复对话记忆的文件
--【玖】--:
我开始是这么理解的,所以想问下有没有类似的成熟工具或者 skills,在第一次会话中执行一次,主要还是担心 token 消耗的问题,看大佬们的意思 如果是自己开发这个 search tools的话 是不是相当于开发一个 mcp 给 ai 调用
--【拾】--:
我们内部用的是类似于tool search的方式去查,即相当于给Agent接了一个内部的浏览器去查内部的数据,token数量消耗的很少
--【拾壹】--:
厉害了,也就是说需要单独构建一个知识库的文件夹 随取随用?但如果数据库表特别多,那么这个文件是一个表一个文件呢,还是一整个 md 文档呢?还是说大佬这个提示词 ai 自己会解决避免上下文过大的问题
--【拾贰】--:
哦 这个意思啊 理解了,谢谢
--【拾叁】--:
感谢大佬分享
--【拾肆】--:
ai自己去查,这个索引是类似 agent 的 read? 那文件个数和大小会影响 token 消耗量吗?
--【拾伍】--:
你用的是哪种形式的AI,网页?本地部署?客户端?
本质上来说就是记忆问题,简单做法是你沟通完,可以让AI给你生成一个memory.md,新会话让AI先读取下memory.md即可
--【拾陆】--:
我目前有一个项目的数据库是Oracle,当时数据库里面就已经有了单独设计的几张表,来记录 表、字段、主键外键 等信息。
然后我是创建了一个skills,xxx是项目名
name: xxx-db-dictionary
description: xxx 数据库字典查询工具。支持通过表编号、模块或关键字实时检索表作用及关联档。当需要确认特定表 ID 的用途、分析模块表结构、查询字段属性时使用。
skills文件夹里面的 scripts 是放的是同步脚本,直接连接数据库,将那几个信息表内容拖下来,然后存储在 references 文件夹,用的 csv 格式存储的。然后还有一个搜索脚本,增加了一些参数功能
## 参数速查表
| 参数 | 别名 | 说明 | 示例 |
|------|------|------|------|
| `-t` | `--table` | 表编号(支持多个) | `-t imaa_t imab_t` |
| `-m` | `--module` | 模块编号 | `-m AXM` |
| `-k` | `--keyword` | 表描述关键字搜索 | `-k 汇率` |
| `-fk` | `--field-keyword` | 字段描述关键字搜索 | `-fk 订单单号` |
| `-f` | `--fields` | 显示字段明细 | `-f` |
| `-r` | `--relations` | 显示血缘关系 | `-r` |
| `-i` | `--indexes` | 显示索引清单 | `-i` |
| `-e` | `--export` | 导出结果到文件 | `-e` 或 `-e filename.txt` |
| | `--attr` | 查询属性编号 | `--attr N001` |
| | `--attr-key` | 查询属性关键字 | `--attr-key 人员` |
当然我这个同步方式不一定是完美的,当时也考虑过是否每次都走数据库连接然后实时获取表结构信息,但是还是不放心,就先让agent写的一个py脚本同步到本地,先尽可能的避免agent直接操作数据库。
还有这个本地 csv 格式存储也是临时方案,后面看情况可以考虑单独部署一个数据库或者其他什么方式,增加agent的查询速度,和优化获取表的关联关系汇总信息等等…
然后还有一个配置文件,用来存储数据库连接的配置信息。
## 一、数据库同步配置
在使用一键同步脚本前,需要先配置数据库连接信息。
### 配置文件位置
同步脚本支持多路径探测配置文件 `db_config.json`:
- **推荐位置**: 项目根目录的 `.agent/db_config.json`(安全性最高,IDE 兼容性最好)
- **配置模板**: 参考同级目录下的 `db_config.json.example`
--【拾柒】--:
附件输入文本文件,输出文件,这样最好了。
--【拾捌】--:
目前主要是在 codex 里面用,因为 plus 额度不是很多,一方面是怕上下文过大消耗 token,另一方面是上下文压缩多次后,好像回答会出现偏差,不知道是我用法问题还是模型问题,我试下让他生成 memory.md试试
--【拾玖】--:
保存到文件里,系统提示词里面写好每次回答问题先看文件。再精细一点就是hook+工具调用
想问下,公司有一个类似数据平台的项目,然后最近在用 ai 出报表,第一次把数据库表结构都喂进去了,但是换了会话之后 ai 就不记得了,请问类似这种场景的话 如何让 ai 保持永久记忆呢,就是自己的知识库以什么方式灌进去比较合适?大家一般是怎么做的?
网友解答:--【壹】--:
你们自己写啊
--【贰】--:
构建知识库和记忆系统,直接把文档上传,需要的时候自己去查知识库
--【叁】--:
什么工具?
--【肆】--:
好的,谢谢
--【伍】--:
让ai拆分你保存记录文件的内容,如果内容多的话让ai拆分一下,并且让ai建立好索引,让它在文件的开头写概述,现在编程的agent都是渐进式披露的,在读了开头之后,不符合就不会读具体的内容了,或者你可以维护一份记忆会话或者数据库功能拆分后的索引目录
--【陆】--:
每次查知识库上下文太长了,消耗token也很大,更好的做法应该是先把知识库中的内容切片做RAG检索,然后塞进向量库里,再做一下摘要。让AI自己去检索然后拿对应的内容。
--【柒】--:
存入文档让ai读
--【捌】--:
新增文件夹以便保存此次对话关于数据库表结构的记忆,你来找一个合适的地方,保存一份人阅版本便于我来审查,再保存一份用于你读取恢复对话记忆的文件
--【玖】--:
我开始是这么理解的,所以想问下有没有类似的成熟工具或者 skills,在第一次会话中执行一次,主要还是担心 token 消耗的问题,看大佬们的意思 如果是自己开发这个 search tools的话 是不是相当于开发一个 mcp 给 ai 调用
--【拾】--:
我们内部用的是类似于tool search的方式去查,即相当于给Agent接了一个内部的浏览器去查内部的数据,token数量消耗的很少
--【拾壹】--:
厉害了,也就是说需要单独构建一个知识库的文件夹 随取随用?但如果数据库表特别多,那么这个文件是一个表一个文件呢,还是一整个 md 文档呢?还是说大佬这个提示词 ai 自己会解决避免上下文过大的问题
--【拾贰】--:
哦 这个意思啊 理解了,谢谢
--【拾叁】--:
感谢大佬分享
--【拾肆】--:
ai自己去查,这个索引是类似 agent 的 read? 那文件个数和大小会影响 token 消耗量吗?
--【拾伍】--:
你用的是哪种形式的AI,网页?本地部署?客户端?
本质上来说就是记忆问题,简单做法是你沟通完,可以让AI给你生成一个memory.md,新会话让AI先读取下memory.md即可
--【拾陆】--:
我目前有一个项目的数据库是Oracle,当时数据库里面就已经有了单独设计的几张表,来记录 表、字段、主键外键 等信息。
然后我是创建了一个skills,xxx是项目名
name: xxx-db-dictionary
description: xxx 数据库字典查询工具。支持通过表编号、模块或关键字实时检索表作用及关联档。当需要确认特定表 ID 的用途、分析模块表结构、查询字段属性时使用。
skills文件夹里面的 scripts 是放的是同步脚本,直接连接数据库,将那几个信息表内容拖下来,然后存储在 references 文件夹,用的 csv 格式存储的。然后还有一个搜索脚本,增加了一些参数功能
## 参数速查表
| 参数 | 别名 | 说明 | 示例 |
|------|------|------|------|
| `-t` | `--table` | 表编号(支持多个) | `-t imaa_t imab_t` |
| `-m` | `--module` | 模块编号 | `-m AXM` |
| `-k` | `--keyword` | 表描述关键字搜索 | `-k 汇率` |
| `-fk` | `--field-keyword` | 字段描述关键字搜索 | `-fk 订单单号` |
| `-f` | `--fields` | 显示字段明细 | `-f` |
| `-r` | `--relations` | 显示血缘关系 | `-r` |
| `-i` | `--indexes` | 显示索引清单 | `-i` |
| `-e` | `--export` | 导出结果到文件 | `-e` 或 `-e filename.txt` |
| | `--attr` | 查询属性编号 | `--attr N001` |
| | `--attr-key` | 查询属性关键字 | `--attr-key 人员` |
当然我这个同步方式不一定是完美的,当时也考虑过是否每次都走数据库连接然后实时获取表结构信息,但是还是不放心,就先让agent写的一个py脚本同步到本地,先尽可能的避免agent直接操作数据库。
还有这个本地 csv 格式存储也是临时方案,后面看情况可以考虑单独部署一个数据库或者其他什么方式,增加agent的查询速度,和优化获取表的关联关系汇总信息等等…
然后还有一个配置文件,用来存储数据库连接的配置信息。
## 一、数据库同步配置
在使用一键同步脚本前,需要先配置数据库连接信息。
### 配置文件位置
同步脚本支持多路径探测配置文件 `db_config.json`:
- **推荐位置**: 项目根目录的 `.agent/db_config.json`(安全性最高,IDE 兼容性最好)
- **配置模板**: 参考同级目录下的 `db_config.json.example`
--【拾柒】--:
附件输入文本文件,输出文件,这样最好了。
--【拾捌】--:
目前主要是在 codex 里面用,因为 plus 额度不是很多,一方面是怕上下文过大消耗 token,另一方面是上下文压缩多次后,好像回答会出现偏差,不知道是我用法问题还是模型问题,我试下让他生成 memory.md试试
--【拾玖】--:
保存到文件里,系统提示词里面写好每次回答问题先看文件。再精细一点就是hook+工具调用

