为什么不应该在调用 LLM 时持有数据库连接

AI 延迟不仅仅是模型思考的时间,还包括你如何管理数据库连接。

在等待 LLM 或 embedding API 时持有数据库连接会耗尽你的连接池。缓慢的外部调用会让会话保持开启的时间远超实际需求。

我研究了 Honcho 的仓库来查看他们的修复方案。他们将单一的长连接会话替换成了短促的、针对特定任务的会话。

旧模式

  • 开启数据库会话
  • 读取用户设置
  • 调用 LLM(慢)
  • 调用 embedding API(慢)
  • 保存结果
  • 关闭数据库会话

新模式

  • 为预检开启数据库会话
  • 将所需值读取到变量中
  • 关闭数据库会话
  • 调用 LLM 和 embedding API(不持有数据库连接)
  • 开启一个新的、短促的数据库会话以保存结果
  • 关闭数据库会话

目的并不是要放弃数据库,而是要将事务一致性与网络等待分离。

管理连接的五个步骤

  1. 定义你的一致性边界。
  2. 在进行任何外部 API 调用之前,将所有所需值提取到变量中。
  3. 关闭数据库作用域。
  4. 执行缓慢的外部任务。
  5. 开启一个新的、短促的写入作用域以持久化最终结果。

注意: 如果你使用 pgvector,搜索是在数据库内部运行的,因此在操作期间你必须保持会话开启。

缩短会话生命周期可以提高扩展性,但要注意 ORM 中的游离对象(detached-object)错误,并验证数据在事务快照中保持一致。

来源:https://dev.to/junhyun-dev/neurin-llm-hocul-jung-db-connectioneul-jabji-anhneun-iyu-3abg

可选学习社区:https://t.me/GyaanSetuAi