Embedding与LangChain入门:从文本向量化到语义搜索,认识大模型应用开发生态)
◆ 博主名称 小此方-CSDN博客大家好欢迎来到小此方的博客。⭐️LangChain/LangGraph系列个人专栏 LangChain/Graph⭐️此方的GitHub github_此方⭐️我们思考 (Rethink) · 我们重建 (Rebuild) · 我们记录 (Record)文章目录概要序論一、嵌入式模型1.1 什么是嵌入模型1.1.1嵌入式模型与大语言模型的区别1.1.2嵌入式模型的核心思想1.1.3 怎么去理解把高级语言转化为数字表达1.1.4 怎么去理解用数学方式比较向量1.2 嵌入模型应用场景1.2.1 语义搜索Semantic Search1.2.2 检索增强生成Retrieval-Augmented Generation, RAG1.2.3 推荐系统Recommendation Systems1.2.4 异常检测Anomaly Detection1.3 主流的嵌入模型二、LangChainLLM 应用开发的核心框架1. LLM 领域的语言生态事实1.1 Python 生态绝对主导1.2 JavaScript/TypeScript 生态追赶与全栈1.3 Java 生态1.4 C 生态1.5 如何选择概要序論Hello大家好我是此方。本文从嵌入式模型Embedding入手理解文本如何从自然语言转化为数字向量以及向量空间和语义相似度的基本思想。随后介绍 Embedding 在各种场景中的应用并进一步进入 LLM 应用开发生态介绍 Python、JavaScript/TypeScript、Java 与 C 等主流语言生态最终引出 LangChain分析其在大模型应用开发中的定位与作用。好我们开始吧。一、嵌入式模型1.1 什么是嵌入模型1.1.1嵌入式模型与大语言模型的区别大语言模型是生成式模型。它理解输入并生成新的文本回答问题、写文章虽然它内部实际上也使用嵌入技术来理解输入但最终目标是“创造”。而嵌入模型Embedding Model是表示型模型。它的目标不是生成文本而是为输入的文本创建一个最佳的、富含语义的数值表示向量。1.1.2嵌入式模型的核心思想由于计算机天生擅长处理数字但不理解文字、图片的含义。嵌入Embedding的核心思想就是将人类世界的符号如单词、句子、产品、用户、图片转换为计算机能够理解的数值形式即向量本质上是一个数字列表并且要求这种转换能够保留原始符号的语义和关系。我们可以把它想象成一个翻译过程把人类语言“翻译”成计算机的“数学语言”。既然是“数学语言”那么我们可以用数学的方式来比较向量从而达到【度量语义】的目的1.1.3 怎么去理解把高级语言转化为数字表达例如输入“你好我叫xxx”嵌入模型会将其转化为如[0.3, 0.2, 0.9, ...]的高维数字向量。而表达相近语义的词汇如“喜悦”对应[0.6, -0.9, ...]“愉快”对应[0.6, -0.8, ...]其向量数值会高度相似以此将人类语言精准表达为数字。1.1.4 怎么去理解用数学方式比较向量我们可以用三维空间来类比高维向量空间通常有两种比较方式欧氏距离衡量两点之间的直线距离两点距离越短说明相似度越高。余弦相似度衡量两条向量夹角的大小主要关注向量方向上的差异。在文本和语义的世界里向量的“方向”代表真正的含义而“长度”仅代表文本的字数或词汇量多少如“愉快”两个字与一篇千字开心作文方向一致但长度不同。因此余弦相似度更加常用因为它能有效排除文本长度的干扰更准确地捕捉核心语义。结论维度越高能捕捉的语义复杂度就越强。嵌入模型则可以根据相似性进行匹配而不是基于精确匹配的查询如 MySQL。1.2 嵌入模型应用场景根据嵌入的特性由此延伸出了许多嵌入模型在 AI 应用的使用场景1.2.1 语义搜索Semantic Search传统搜索依赖关键词匹配搜“苹果”只能找到包含“苹果”这个词的文档。语义搜索则能将查询和文档都转换为向量通过计算向量间的相似度来找到相关内容即使文档中没有查询的确切词汇也能被检索到。即使知识库中并未直接出现“笔记本电脑无法充电”这个词组语义搜索也能通过向量相似度精准地找到该文档。1.2.2 检索增强生成Retrieval-Augmented Generation, RAGRAG技术我后面会出单独专栏哈这个非常非常重要。我们这里先简单介绍一下概念因为讲到了这个嵌入式模型。这是当前大语言模型应用的核心模式。当用户向 LLM 提问时系统首先使用嵌入模型在知识库如公司内部文档中进行语义搜索找到最相关的内容然后将这些内容和问题一起交给 LLM 来生成答案。这极大提高了答案的准确性和时效性。例如一家公司的内部客服机器人接到员工提问“我们今年新增的带薪育儿假政策具体是怎样的”系统会首先使用嵌入模型在公司的最新人事制度文档、福利更新备忘录等资料中进行语义搜索找到关于“今年育儿假规定”的具体条款然后将这些条款和问题一起提交给 LLMLLM 便能生成一个准确、具体的摘要回答而非仅凭其内部训练数据可能产生的过时或泛泛的答案。1.2.3 推荐系统Recommendation Systems将用户根据其历史行为、偏好和物品商品、电影、新闻都转换为向量。喜欢相似物品的用户其向量会接近相似的物品其向量也会接近。通过计算用户和物品向量的相似度就可以进行精准推荐。例如一个流媒体平台将用户 A喜欢观看《盗梦空间》和《黑镜》和所有电影都表示为向量。系统发现用户 A 的向量与那些也喜欢《盗梦空间》和《黑镜》的用户向量很接近而这些用户普遍还喜欢《星际穿越》。尽管用户 A 从未看过《星际穿越》但通过计算用户向量与电影向量的相似度系统会将这部电影推荐给用户 A。1.2.4 异常检测Anomaly Detection正常数据的向量通常会聚集在一起。如果一个新数据的向量远离大多数向量的聚集区它可能就是一个异常点如垃圾邮件、欺诈交易。例如一个信用卡交易反欺诈系统通过学习海量正常交易记录如金额、地点、时间、商户类型等特征的向量形成了“正常交易”的向量聚集区。当一笔新的交易发生时系统将其转换为向量。如果该向量出现在“正常聚集区”之外例如一笔发生在通常消费地之外的高额交易系统则会将其标记为潜在的欺诈交易并进行警报。1.3 主流的嵌入模型在当前的大模型生态中有几种非常主流且优秀的嵌入模型供开发者选择text-embedding-3-large (OpenAI)OpenAI 最强大的英语和非英语任务嵌入模型。默认维度 3072可降维如 1024 维输入令牌长度支持为 8192。Qwen3-Embedding-8B (阿里巴巴)开源模型支持 100 种语言上下文长度 32k嵌入维度最高 4096支持用户自定义的输出维度范围从 32 到 4096。推理需要一定的 GPU 计算资源例如至少需要 16GB 以上显存的 GPU 才能高效运行。gemini-embedding-001 (Google)支持 100 种语言默认维度 3072可选降维版本1536 维或 768 维输入令牌长度支持为 2048。其他参考Huggingface 的 MTEBMassive Multilingual Text Embedding Benchmark评测是业界比较公认的标准具体榜单可查阅https://huggingface.co/spaces/mteb/leaderboard。如何接入嵌入式大模型和我们之前介绍的接入方式完全一致。大家可以自行尝试。二、LangChainLLM 应用开发的核心框架1. LLM 领域的语言生态事实在 LLM 驱动的应用程序开发中虽然 Python 占据绝对统治地位但其他生态也有重要工具以下是主流的几大生态概况1.1 Python 生态绝对主导框架核心特点/优势适用场景LangChain生态最丰富、集成最强几乎支持所有 LLM、向量库、工具文档和社区极其强大是当前最主流的开发框架绝大多数企业级 LLM 应用、复杂 Agent 开发、知识库检索系统LlamaIndex专注于数据连接和检索对于复杂文档解析、结构化数据查询、向量索引优化有极其深入的针对性设计以 RAG检索增强生成为核心的项目、知识库问答系统、海量文档处理1.2 JavaScript/TypeScript 生态追赶与全栈框架核心特点/优势适用场景LangChain.jsPython 版的 JS/TS 移植版API 设计高度一致支持在 Node.js 和浏览器端运行天然契合全栈开发前端开发者、全栈项目、Node.js 服务端应用、边缘函数Edge Functions环境LlamaIndex.TSLlamaIndex 的 TypeScript 移植版专为 JS 生态中的 RAG 开发打造基于 JS/TS 的复杂文档检索与问答系统1.3 Java 生态框架核心特点/优势适用场景LangChain4j一个借鉴 LangChain 思想的 Java 原生库上手简单集成度高适合传统的 Java 企业级应用需要将大模型能力快速融入现有 Java 微服务系统的业务场景Spring AISpring 官方出的框架深度集成 Spring 生态体系遵循 Spring 的设计哲学是一个很有潜力的后起之秀严格遵循 Spring 生态、使用 Spring Boot / Spring Cloud 构建的现代企业级系统1.4 C 生态C 生态在 LLM 开发中扮演着极具优势的底层角色核心优势在于性能高、资源占用小主要体现在以下两个方面底层高性能推理引擎与本地部署Python/JS/Java 等语言的 SDK背后调用的大模型服务或本地推理引擎很多底层都是由 C 实现的高性能代码。C 的代表项目是llama.cpp它实现了极其高效的本地 CPU/GPU 推理使大模型能在普通电脑、甚至手机和嵌入式设备上高效运行。丰富的生态支持Python 生态生态最完整拥有 PyTorch、TensorFlow、JAX深度学习框架TransformersHugginFaceFastAPI、FlaskWeb 框架以及 LangChain、LlamaIndex大模型框架。C 生态虽然缺少开箱即用的应用层框架但底层效率更高适合对性能、内存占用要求极高的极端场景。C 在大模型生态中的“核心作用”大语言模型框架的本质是“胶水代码”负责连接模型、向量库、外部 API 等工具。类似llama.cpp开源项目地址https://github.com/ggerganov/llama.cpp这样的底层库通过极致的 C/C 优化使得低端设备也能运行大模型。许多 Python 库如llama-cpp-python实际上只是对这些 C 库的 Python 封装。1.5 如何选择对于框架的选择核心逻辑有以下几点团队技术栈优先选择团队最熟悉的语言生态以降低开发和学习成本。如果你所在的团队和技术栈是 Java想快速为企业应用添加 AI 功能LangChain4j 和 Spring AI 是绝佳的选择。如果你的需求是极致性能、离线运行或在资源受限的环境如手机、嵌入式设备中部署模型那么 C 生态的 llama.cpp 是你的不二之选。在大多数情况下一个混合架构也很常见例如用 C 实现高性能推理引擎然后用 Java 或 Python 构建业务层和 API 接口。项目需求如果项目是研究性质或需要最大灵活性PythonLangChain是不二之选。如果项目是以 RAG 为核心LlamaIndexPython/TS提供了更专业的工具。如果项目需要深度集成到现有企业级后端如 Spring 应用则选择对应的 Spring AI。如果项目是面向 Web 的全栈应用或边缘函数LangChain.js 是最佳选择。社区与支持Python 和 JS 生态的框架LangChain更新最快、社区最活跃遇到问题更容易找到解决方案是大多数人的选择。LangChain的全部前置知识全部讲完了——Welcome to the world of LangChain.好的本期内容就到这里如果对你有帮助还不要忘记点赞三联支持。我是此方我们下期再见。bye!