尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
RAG 系统 Embedding 流程分析与自托管 API 适配
1. 问题背景在构建一个轻量化 RAG检索增强生成系统时使用了 LangChain 框架结合自托管的 FreeLLMApi兼容 OpenAI 格式进行文本向量化。在开发过程中遇到了运行时类型错误并对 Embedding 模型如何处理文本以及自托管服务与 OpenAI 原生服务的差异产生了疑问。2. 运行时问题分析2.1 错误现象错误日志TypeError: Document.__init__() got an unexpected keyword argument page_content2.2 根本原因该错误发生在load_chunks_from_file函数中。代码尝试通过Document(page_content..., metadata...)实例化对象。原因实例化时传递的参数名page_content与当前环境中安装的Document类定义不匹配。这通常是因为导入了错误的Document类或者使用了版本不兼容的 LangChain 核心库。解决方案确保从langchain_core.documents正确导入Document类并核对该版本类构造函数的参数名。3. 深度技术探讨Embedding 工作机制3.1 文本是如何转换为向量的调用embeddings.embed_documents(batch_texts)时内部执行流程如下原始文本→\rightarrow→Tokenizer分词→\rightarrow→Token IDs (整数序列)→\rightarrow→神经网络→\rightarrow→Embedding向量核心结论神经网络无法直接处理字符串必须经过 Token 化转换为数字 ID 才能进行矩阵运算。3.2_tokenize方法的作用在 LangChain 的OpenAIEmbeddings实现中_tokenize方法的作用不是预处理文本而是计数量长度。目的计算当前文本包含多少个 token以判断是否超过模型最大长度限制例如 8191 tokens。逻辑如果超限→\rightarrow→执行截断或切分→\rightarrow→再次检查如果不超限→\rightarrow→进入_get_len_safe_embeddings阶段。3.3_get_len_safe_embeddings解析该方法名为 “Length Safe”意味着它假设输入文本已经通过了长度校验因此它会跳过所有校验步骤直接将原始字符串batch_texts发送给 API 接口。4. 自托管服务 vs OpenAI 原生 API4.1 推理逻辑对比特性OpenAI 原生 API自托管推理服务 (如 FreeLLMApi)传输内容原始字符串 (str)可能是字符串也可能是Token IDsTokenize 位置服务端完成可能在客户端完成→\rightarrow→传输 IDsAPI 接口https://api.openai.com/v1私有 IP (如172.21.6.101) 自定义端口模型定义明确的模型名 (如text-embedding-3)可能使用auto等路由别名4.2 如何判断是否为自建推理服务IP 地址使用私有 IP 段10.x,172.16-31.x,192.168.x。端口号使用非标准 HTTPS 端口如3001。客户端类型self.client的类型不是标准openai.OpenAI类。输入参数API 调用时传递的是batch_tokens(List[int]) 而非batch_texts(List[str])。5. 适配方案让自托管服务走 OpenAI 逻辑若自托管服务兼容 OpenAI 格式但其 SDK 强制要求传递batch_tokens而你希望传输原始文本可采取以下方案方案 A重写 Embedding 类 (推荐)继承OpenAIEmbeddings并重写embed_documents绕过内部的 Token 转换逻辑强制发送原始字符串。方案 B直接使用 HTTP 请求不使用 LangChain 的封装直接通过requests或httpx调用/v1/embeddings端点确保input字段传递的是字符串列表。# 伪代码示例responserequests.post(urlhttp://172.21.6.101:3001/v1/embeddings,json{model:auto,input:[原始文本1,原始文本2]},headers{Authorization:fBearer{API_KEY}})6. 总结运行时错误→\rightarrow→检查类导入与参数匹配。Embedding 流程→\rightarrow→本地 Tokenize 仅用于长度校验→\rightarrow→传输原始文本→\rightarrow→服务端 Tokenize→\rightarrow→生成向量。自托管识别→\rightarrow→通过私有 IP、非标端口及self.client类型判断。适配关键→\rightarrow→确认 API 接收的是string还是token_ids通过重写方法或直接调用 REST API 解决不兼容问题。
RELATED

相关推荐

同时降重降AIGC率能降到多少?实测两项都压到达标以内

同时降重降AIGC率能降到多少?实测两项都压到达标以内

同时降重降AIGC率能降到多少?实测两项都压到达标以内 你现在最想知道的,大概就是一个具体的数:如果重复率和 AI 率一起降,到底能降到多少?是勉强压到线上,还是能踏踏实实落到合格区间里?你手里…

📅 2026/10/5 18:36:48
2026年电销外包服务商怎么选?合规要求与选型标准解析

2026年电销外包服务商怎么选?合规要求与选型标准解析

2026年,随着通信监管持续收紧与AI技术普及,电销外包市场进入深度调整期。部分服务商存在低价引流后增加隐形收费、以AI冒充真人、数据不透明等问题。企业在选择服务商时,需重点关注合规资质、坐席真实性、数据透明度和行业适配度等维度。下文…

📅 2026/11/11 9:09:05
Vue.js+uni-app构建电商小程序与后台管理系统实战指南

Vue.js+uni-app构建电商小程序与后台管理系统实战指南

在实际电商项目开发中,小程序商城和后台管理系统往往是密不可分的整体。特别是对于一番赏手办这类垂直领域,既要保证前端用户体验的流畅性,又要确保后台管理的高效性。基于 Vue.js 和 uni-app 的技术栈组合,能够实现一套代码多端发…

📅 2026/10/6 21:07:33
MORE NEWS

更多资讯

📰

葛店电工证怎么考?真实经历告诉你外省证怎么转

葛店电工证怎么考?真实经历告诉你外省证怎么转 之前考的证在外省能不能转过来?这是不少电工朋友在考虑考取葛店电工证时最关心的问题。我身边就有朋友因为这个问题浪费了不少时间和钱。今天我就用 真实经历…

📰

昌邑在哪考电工证到期换证流程通过率揭秘

昌邑在哪考电工证到期换证流程通过率揭秘 证书过期了不知道怎么复审延期?昌邑电工证换证流程你得知道,不然可能面临停工、罚款甚至被追究法律责任。别再等,现在就了解清楚,保住你的电工证,也保住你的工作饭碗。 一、昌邑电工证报考与复审地点全解析…

📰

城阳河套电工证怎么转?保姆级教程教你一步到位

城阳河套电工证怎么转?保姆级教程教你一步到位 之前考的证在外省能不能转过来?别急,这期保姆级教程专门针对【城阳河套电工证】,手把手带你搞清楚怎么操作、怎么备考、怎么避免踩坑。…

📰

怀化芷江电工证怎么考良心建议:电工证过期了不知道怎么复审延期?

怀化芷江电工证怎么考良心建议:电工证过期了不知道怎么复审延期? 证书过期了不知道怎么复审延期?很多人在面对特种作业操作证复审时,都犯了同样的错误,要么错过了时间,要么流程搞错了,最后只能重新考试,浪费时间和金钱。今天就来跟大家讲讲【怀化芷江…

📰

昌邑在哪考电工证全流程办理指南,多少钱能搞定?

昌邑在哪考电工证全流程办理指南,多少钱能搞定? 你急需特种作业证才能上岗找工作,但又不知道昌邑在哪考电工证?别急,这篇文章从报名、考试到拿证,全流程告诉你,还附带多少钱的详细费用清单,省心省力,直接上手。…

📰

汉中那里能考电工证良心建议:实操考试心里没底怕挂科?这3步帮你稳过

汉中那里能考电工证良心建议:实操考试心里没底怕挂科?这3步帮你稳过 实操考试心里没底怕挂科?你是汉中那边打算考电工证的新手,对考试流程、报名地点、证书有效期这些事一头雾水。别担心,我在这行摸爬滚打了十年,见过太多人因为准备不充分而挂科,甚至…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬