news 2026/5/1 5:22:22

大模型应用开发必需了解的基本概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型应用开发必需了解的基本概念

背景

AI/LLM 大模型最近几年毋庸置疑的是热度第一,虽然我日常一直在用 AI 提效,但真正使用大模型做一个应用的机会还是少。

最近正好有这么个机会,需要将公司内部的代码 repo 转换为一个 wiki,同时还可以基于项目内容进行对话了解更具体的内容。

实际效果大概和上半年很火的 deepwiki 类似。

而我们是想基于开源的 deepwiki-open进行开发,提供的功能都是类似的。

在这个过程中我也从一个大模型应用开发的小白逐步理解了其中的一些关键概念,以及了解了一个大模型应用的运行原理。

LLM

LLM(Large Language Model,大语言模型)大家应该都比较熟悉了:

  • 本质:一个通过海量文本训练出来的概率模型
  • 能力:理解/生成文本、代码,做推理、对话等
  • 特点:
    • 参数固定:训练完之后“记忆”是固化在参数里的
    • 知识有时间点:只知道训练截止前的数据(有知识截止时间)

可以把LLM当成一个“通用大脑”,但不一定知道最新的、你的私有数据。

目前的 AI 也就是大模型本质上还是概率预测,当你给它一段话(Prompt)时,它在后台做的事情是:“根据我读过的几万亿字,接在这段话后面,概率最高的下一个字(Token)是什么?”

所以大模型每次回答的内容可能不同,也不能 100% 的告诉你准确答案。

Token

大模型并不直接认识javaRust或者“编程”这些词。在模型内部,所有的文字都会先被转换成一系列数字。

  • 字/词 ≠ Token:一个 Token 既不是一个字符,也不是一个单纯的单词。
  • 灵活切分
    • 常见的词(如the,apple)通常对应1 个 Token
    • 罕见的词或长的复合词(如microservices)可能会被拆分成几个 Token(如micro+services)。
    • 中文通常比较特殊:一个常用的汉字可能是 1 个 Token,但不常用的汉字可能会占用 2-3 个 Token。

在做大模型应用开发的时候尤其需要注意 token 的用量,毕竟这是计费的标准。

还有一个是上下文窗口的限制,每个模型都会有最大 token 的限制(如 8k, 32k, 128k)。

如果你的 Prompt 加上模型的回复超过了这个限制,模型就会丢掉前面的记忆或者直接报错。

在日常开发估算中,可以大概估算一下这个比例:

  • 英文文本:1000 Tokens ≈ 750 个单词。
  • 中文文本:1000 Tokens ≈ 500 到 600 个汉字(随着模型词表的演进,现在的模型处理中文的效率在不断提升。)。
  • 代码:代码中的空格、缩进和特殊符号都会消耗 Token。Python 等由于缩进较多,消耗通常比纯文本快。

也有相关的库可以帮我们计算 token:

/* by 01130.hk - online tools website : 01130.hk/zh/androidmanifest.html */ # Choose encoding based on embedder type if embedder_type == 'ollama': # Ollama typically uses cl100k_base encoding encoding = tiktoken.get_encoding("cl100k_base") elif embedder_type == 'google': # Google uses similar tokenization to GPT models for rough estimation encoding = tiktoken.get_encoding("cl100k_base") else: # OpenAI or default # Use OpenAI embedding model encoding encoding = tiktoken.encoding_for_model("text-embedding-3-small") return len(encoding.encode(text))

也可以通过 openai 的一个实例网站来可视化查看 token 的计算规则:

RAG

RAG 的全程是Retrieval-Augmented Generation(检索增强生成),他不是类似于 LLM 的模型,而是一种架构模式。

举个例子:
比如你问 ChatGPT 关于你们公司的某一个规章制度,大概率 ChatGPT 的训练语料是你没有你们公司的内部数据的。

所以他回复你的多半是瞎编的内容,或者直接告诉你不知道。

此时就需要 RAG 了,他可以在真正询问 LLM 之前先到内部的资料库里通过用户的问题将相关上下文查询出来,然后再拼接成一个完整的 prompt 发送给 LLM,让 LLM 根据你通过的数据进行回答。

这样能解决一下三个问题:

  1. 幻觉问题:你问它一个它不知道的事情,它会一本正经地胡说八道。
  2. 知识过时:大模型的知识停留在它训练结束的那一天。
  3. 私有数据安全:你不能为了让 AI 懂你的业务代码,就把几百万行私有代码全发给模型提供商训练一个新模型,那太贵且不安全。

使用 RAG 时还需要额外考虑到数据清洗的步骤,比如我们这里的 repo wiki 的场景,我们需要把一些第三方库、编译后产生的 target 目录等不需要的内容排除掉。

避免在查询时带上这些内容,干扰最终的结果。

向量数据库

上文里提到 RAG 模式,需要一个非常关键的组件,那就是向量数据库。

我们先要在 RAG 里检索出相关的上下文就是在向量数据库里做查询,具体流程如下:

  1. 把文档切块(段落级别)
  2. 用一个Embedding 模型把每个块转成向量
  3. 把这些向量存进向量数据库
  4. 用户提问时,也把问题转成向量
  5. 用向量相似度检索出最相关的文档块
  6. 把这些文档块 + 问题喂给 LLM,让它生成答案

简单来说就是将一些非结构化的数据(图片、视频、文字)通过Embedding 模型转换成一串数字数组,即向量(例如:[0.12, -0.59, 0.88, ...])。

查询的时候也会将查询内容转换为向量,然后返回在向量空间里相近的数据。

Q&A

此时也许你会有以下一些问题:

LLM + RAG + 向量数据库,是不是类似于用 LLM 训练私有化数据?这两者的效果是否类似? 如果不同,区别在哪里?

LLM + RAG + 向量数据库:

  • 本质是:

    不改模型参数,用检索到的外部资料来“喂”模型,让它查完再答

  • 你的数据在外部(向量数据库里),只是当作参考材料塞进 prompt。

在私有数据上训练(微调 / 预训练):

  • 本质是:

    用你的数据更新模型参数,让模型“记住”这些模式和知识。

  • 你的数据被“烤进”模型权重里,调用时不需要再查这份数据。

维度RAG(向量库)微调 / 私有训练
知识存放外部向量库模型参数里
更新成本改文档即可,重建 / 增量向量索引需要重新训练部署
生效时间几分钟级训练+上线,小时~天级
支持频繁变更很适合很不适合
透明度/可解释性(可以追溯到原文出处)(模型直接给出,无法确切知道来源)

总的来说使用 RAG 外挂私有化向量数据的成本更低,也更灵活。
对于一些更垂直的场景,可以考虑使用私有数据训练模型。

总结

总体下来的感受是 LLM 应用大部分的代码都是 prompt 提示词,普通 app 的主要内容是代码,而不同大模型应用的主要区别是提示词;反而代码大部分都是趋同的。

区别就是用了什么框架,但是共同的就是调用大模型 API,将传统的 request/reponse 的请求模式换为流式响应(大模型的响应很慢)。

在开发应用时,需要了解System Prompt(系统预设角色)、User Prompt(用户提问)和Few-shot(给模型几个例子引导它)。好的 Prompt 是让 RAG 结果准确的关键。

后续还需要更加完善deepwiki-open

  • 优化 splitter,使用更适合代码分割的 splitter,比如 tree-sitter
  • 将存储在本地的向量替换为一个独立的向量数据库
  • 持续优化提示词,更加符合我们的项目背景

Blog

作者: crossoverJie

出处: https://crossoverjie.top

欢迎关注博主公众号与我交流。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(crossoverJie#gmail.com)咨询。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 16:00:28

2025最新!10个AI论文平台测评:研究生开题报告必备神器

2025最新!10个AI论文平台测评:研究生开题报告必备神器 2025年AI论文平台测评:精准匹配学术需求的工具指南 随着人工智能技术在学术领域的广泛应用,越来越多的研究生开始依赖AI论文平台来提升写作效率、优化研究思路。然而&#xf…

作者头像 李华
网站建设 2026/4/18 9:08:09

还在手动写代码?Open-AutoGLM自动编程场景已覆盖80%日常任务

第一章:Open-AutoGLM自动编程的现状与趋势Open-AutoGLM作为新兴的开源自动编程框架,融合了生成式语言模型与代码理解能力,正在重塑开发者编写、优化和维护代码的方式。其核心优势在于能够基于自然语言描述生成高质量代码片段,并支…

作者头像 李华
网站建设 2026/5/1 4:49:23

24、Elasticsearch聚合引擎深入解析

Elasticsearch聚合引擎深入解析 1. 聚合引擎内部原理 在Elasticsearch中,聚合操作是基于查询返回的结果进行的。当我们在发送给Elasticsearch的请求中包含查询的聚合部分时,具体执行流程如下: graph LRA[查询请求包含聚合部分] --> B[各相关分片执行聚合]B --> C[…

作者头像 李华
网站建设 2026/4/24 15:30:59

29、Elasticsearch 地理形状与建议器使用指南

Elasticsearch 地理形状与建议器使用指南 在数据处理和搜索场景中,Elasticsearch 提供了强大的功能,包括地理形状查询和建议器功能。本文将详细介绍如何使用 Elasticsearch 进行地理形状查询以及利用各种建议器来提升搜索体验。 地理形状查询 地理形状查询允许我们根据地理…

作者头像 李华
网站建设 2026/4/23 12:02:16

GPT-SoVITS在语音百科全书项目中的大规模应用

GPT-SoVITS在语音百科全书项目中的大规模应用 你有没有想过,让爱因斯坦亲自为你讲解相对论?或者听林徽因朗读她写下的诗篇?这听起来像是科幻小说的情节,但在“语音百科全书”项目中,这些正在变成现实——不是靠演员模仿…

作者头像 李华
网站建设 2026/4/30 11:37:40

Open-AutoGLM本地部署手机环境,99%的人都忽略的关键配置项

第一章:Open-AutoGLM本地部署手机环境概述Open-AutoGLM 是一款基于 AutoGLM 架构的开源语言模型推理框架,支持在移动设备上实现轻量化本地部署。通过优化模型压缩与推理引擎,开发者可在安卓手机端运行高效、低延迟的自然语言处理任务&#xf…

作者头像 李华