Unity中使用LLMUnity遇到的问题(五)——主要脚本的继承关系+用DuckDB对知识库升级的思考

本文部分内容为GPT问答生成, 肯定有错漏的地方,人老体衰,还请轻拍指正~~

文章目录

  • 一、LLMUnity中脚本的继承关系
  • [二、LLMUnity中RAG search的种类](#二、LLMUnity中RAG search的种类)
      • [1、 LLM 检索技术对比:SimpleSearch vs. DBSearch vs. DuckDB[向量搜索]](#1、 LLM 检索技术对比:SimpleSearch vs. DBSearch vs. DuckDB[向量搜索])
      • [2、 核心结论](#2、 核心结论)
  • [三、普通数据库 VS 列数据库 VS 向量数据库](#三、普通数据库 VS 列数据库 VS 向量数据库)
      • [1、数据库技术大比拼:普通行式 vs. 分析型列式 vs. 向量数据库](#1、数据库技术大比拼:普通行式 vs. 分析型列式 vs. 向量数据库)
  • [四、核心选型结论(检索组件 + 数据库双层维度)](#四、核心选型结论(检索组件 + 数据库双层维度))
      • [1、LLM 检索组件选型:按场景定方案,拒绝过度设计](#1、LLM 检索组件选型:按场景定方案,拒绝过度设计)
      • [2、AI 应用底层数据库选型:按核心需求选类型,兼顾场景拓展性](#2、AI 应用底层数据库选型:按核心需求选类型,兼顾场景拓展性)

一、LLMUnity中脚本的继承关系

二、LLMUnity中RAG search的种类

1、 LLM 检索技术对比:SimpleSearch vs. DBSearch vs. DuckDB[向量搜索]

在构建 RAG(检索增强生成)系统或 AI NPC 时,选择合适的检索组件至关重要。下表对比了 LLMUnity 的原生组件与目前流行的 DuckDB 方案。

维度 SimpleSearch.cs (原生) DBSearch.cs (原生) DuckDB + VSS (进阶方案)
算法原理 暴力搜索 (线性扫描) ANN (近似最近邻/HNSW) 向量化 HNSW (C++ 级优化)
检索性能 O ( N ) O(N) O(N):随数据量线性变慢 O ( log ⁡ N ) O(\log N) O(logN):大规模下极快 极快:利用 CPU SIMD 指令集加速
结果准确度 100% 准确 (绝对最优解) 近似准确 (存在极小误差) 近似准确 (精度/速度可调)
建议数据量 < 1,000 条片段 1,000 ~ 100,000 条 1,000 ~ 1,000,000+ 条
内存管理 向量常驻内存,占用较小 索引和向量常驻内存,占用较大 灵活,支持磁盘缓存和分页加载
逻辑过滤 不支持:仅语义匹配 不支持:仅语义匹配 极强:支持标准 SQL (WHERE/AND)
持久化方式 二进制/JSON 序列化 专用索引文件 (.zip/.bin) 标准数据库文件 (.db)
适用场景 简单 NPC 对话、小型原型演示 中大型世界观、长篇百科检索 专业 RAG 应用、复杂逻辑游戏系统

2、 核心结论

结合实操落地场景,补充3类检索组件的选型优先级和避坑点,少走弯路:

  1. SimpleSearch:适合"小而精"的场景。像是一页页翻书,虽然慢但保证不漏掉任何信息。

    ⚠️ 避坑:不要用于1000条以上数据,否则会严重影响LLM响应速度,降低用户体验。

  2. DBSearch:适合"大而快"的场景。通过预建索引实现毫秒级响应,是处理海量文本的工业级标准。

    ⚠️ 避坑:内存敏感场景慎用(如嵌入式设备),10万条以上建议定期清理无效索引,减少内存占用。

  3. DuckDB:适合"复杂而专业"的场景。不仅拥有 DBSearch 的速度,还能通过 SQL 实现混合搜索(例如:只搜特定章节、特定角色的记忆),是目前本地 RAG 系统的最佳实践。

    ✅ 优势:兼顾速度、灵活性和可扩展性,可无缝对接LLMUnity,适合从原型快速迭代到生产级应用。

三、普通数据库 VS 列数据库 VS 向量数据库

1、数据库技术大比拼:普通行式 vs. 分析型列式 vs. 向量数据库

在构建现代 AI 应用(如 RAG 系统)时,理解这三种数据库的差异是技术选型的关键。

维度 普通数据库 (行式 / OLTP) 分析型数据库 (列式 / OLAP) 向量数据库 (Vector DB)
核心定位 面向事务处理,解决高频单条数据的增删改查 面向批量分析,解决大规模结构化数据的计算统计 面向语义检索,解决高维向量的快速近邻匹配
代表产品 MySQL, PostgreSQL, SQLite DuckDB, ClickHouse, BigQuery, Snowflake Pinecone, Milvus, Weaviate, Qdrant
数据存储布局 按行存储:一条数据的所有字段物理连续存储,开箱即取整行数据 按列存储:同一列的所有数据物理连续存储,查询仅加载目标列 索引优先存储:专用格式存储高维向量,同时构建拓扑索引(如 HNSW),弱化行 / 列概念
硬件资源利用 侧重磁盘 IO 优化,适配机械硬盘,对 CPU 利用率低 侧重 CPU / 内存优化,充分利用多核 + SIMD,适配固态硬盘 侧重 CPU/GPU 优化,支持异构计算,对内存带宽要求高
擅长核心操作 高频 CRUD:单条 / 少量数据的增、删、改、查,支持高并发写 批量聚合计算:求和、平均值、分组统计、大批量过滤排序,支持复杂 OLAP 函数 语义向量检索:Top-K 近邻匹配、相似度计算,支持向量增删改的增量索引
检索核心原理 关键词匹配 / B-Tree/B+Tree 索引,基于字符匹配 向量化执行 (SIMD) / 列级扫描,基于数值计算 ANN 近似近邻算法 (HNSW/IVF/FAISS),基于向量空间距离
核心数据形态 结构化表格数据(姓名、年龄、订单号、时间戳等),字段维度低 大规模结构化 / 半结构化数据(日志、报表、量化数据等),支持多维列计算 高维向量数据(512/1024/1536 维,代表文本 / 图片 / 音频的语义特征)+ 少量元数据
事务支持 强 ACID:支持事务原子性、一致性、隔离性、持久性,适合核心业务交易 弱 / 无 ACID:部分支持最终一致性,牺牲事务换分析性能 弱事务:仅支持基础的向量增删改,无复杂事务,聚焦检索性能
RAG 场景核心能力 弱:无原生向量支持,需自定义函数序列化向量,仅能做简单暴力检索,效率极低 强 (潜力股):原生支持向量类型 + 相似度函数,列存架构极速计算向量距离,支持向量 + 结构化数据混合查询 最强 (原生):专为海量向量设计,专用索引 + 量化优化,检索效率是暴力计算的百倍以上,部分支持基础结构化过滤
RAG 部署成本 低:生态成熟,易上手,但需二次开发向量能力,后期维护成本高 中低:轻量产品(如 DuckDB)无部署成本,SQL 语法通用,无需额外学习成本 中高:需学习专用索引配置、向量调优,分布式产品需搭建集群,维护成本较高
生活化形象比喻 像名片夹:翻开一页就能看到一个人的所有信息,找单个人快,找一群人的某个特征慢 像财务报表:只想看 "利润" 这一列时,无需翻阅全文,批量提取某类信息效率极高 像宇宙星座图:将每个语义转化为星星,意思相近的星星聚成星座,按空间距离快速找相似星星

四、核心选型结论(检索组件 + 数据库双层维度)

1、LLM 检索组件选型:按场景定方案,拒绝过度设计

  • (1)快速验证 / 极小数据量(<1000 条):直接用 SimpleSearch,无需考虑性能,追求开发效率与结果精准度,零调优成本;
  • (2)LLMUnity 生态内 / 纯语义检索(1000-100000 条):选择 DBSearch,原生集成无依赖,ANN 索引保证大规模数据的检索速度,满足绝大多数游戏 AI/NPC 场景;
  • (3)专业 RAG / 混合检索 / 大规模数据(100000 条 +):必选 DuckDB + VSS,兼顾检索速度、灵活的 SQL 过滤、轻量部署,是本地 RAG 系统的最佳实践,同时可无缝对接后续的数据分析需求。

2、AI 应用底层数据库选型:按核心需求选类型,兼顾场景拓展性

  • (1)纯业务交易 + 少量数据检索:选普通行式数据库(MySQL/SQLite),优先保证业务数据的事务安全性,向量检索需求可通过轻量扩展实现(如 SQLite 的 vector 扩展),适合小型 AI 应用的 "一站式" 需求;
  • (2)结构化分析 + 中小规模 RAG(百万级向量内):选分析型列式数据库(DuckDB/ClickHouse),列运算 + 向量搜索双核心能力,完美适配 "结构化数据统计 + 向量语义检索" 的混合场景,一次部署满足多类需求,性价比最高;
  • (3)纯大规模向量检索 / 分布式 RAG(亿级向量 + 高并发):选原生向量数据库(Milvus/Qdrant),专用索引与分布式架构,保证海量向量的毫秒级检索与高并发支持,适合企业级生产环境的纯 AI 检索场景;
  • (4)超大型混合场景(分布式业务数据 + 亿级向量 + 复杂分析):采用 "行式数据库 + 列式数据库 + 向量数据库" 协同架构,行式数据库管业务交易,列式数据库管批量分析,向量数据库管语义检索,通过数据同步实现三者联动,打造完整的 AI 数据生态。
相关推荐
海清河晏11112 小时前
数据结构 | 单链表
数据结构·unity·dreamweaver
mxwin14 小时前
Unity URP 下 MatCap 技术详解 无视光照环境的卡通与质感渲染方案
unity·游戏引擎
Devin~Y16 小时前
高并发内容社区实战面试:从 Java 基础到 Spring Cloud、Kafka、Redis、RAG 搜索全解析
java·spring boot·redis·spring cloud·kafka·向量数据库·rag
山檐雾1 天前
OctreeNode
unity·c#·八叉树
WarPigs2 天前
Unity协程返回值的解决方案
unity·游戏引擎
WarPigs2 天前
Unity单例笔记
unity·游戏引擎
Allen74743 天前
ComfyUI 自动化生产 3D资产 工作流笔记
图像处理·opencv·unity·自然语言处理·3d模型生成·confyui
nnsix3 天前
Unity Windows11 打字中文显示不出来输入法的候选框
unity
adogai3 天前
unity mcp接入 实现一句话生成游戏!
游戏·unity·游戏引擎
mxwin3 天前
Unity Shader 逐像素光照 vs 逐顶点光照性能与画质的权衡策略
unity·游戏引擎·shader·着色器