LLamaIndex 接入硅基流动(SiliconFlow)Embedding 模型踩坑记录:OpenAI接口无法访问问题
1. 背景介绍
最近在使用 LlamaIndex 构建 RAG 应用时,我选择了接入 硅基流动 (SiliconFlow) 的 Embedding 服务,不过还是因为有它的免费额度hhh。现在有送免费额度,个人觉得还是不错的
https://cloud.siliconflow.cn/i/1rELEvcO
在安装依赖并编写初始化代码后,本以为能顺利运行,结果却遇到了一个无法正常访问服务的问题,排查许久才发现是配置细节上的疏忽。特此记录,希望能帮到同样遇到此问题的朋友。
2. 问题现象
首先,我的API key是没有问题的,能够访问硅基流动的对话模型。在访问Embedding模型,我一开始使用的OpenAI API,因为之前使用的openai库是可以访问第三方大模型提供商的,就像下面这样:
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxxxx",
base_url="https://api.siliconflow.cn/v1"
)
response = client.embeddings.create(
model="BAAI/BGE-m3",
input="这是一个文本"
)
return response.data[0].embedding
因此第一时间我选择了LlamaIndex中的OpenAI库,为我向量搜索的索引添加Embedding模型,当我按照以下代码配置时:
from llama_index.embeddings.openai import OpenAIEmbedding
embed_model = OpenAIEmbedding(
model="BAAI/BGE-m3",
api_key="sk-xxx",
base_url="https://api.siliconflow.cn/v1",
)
index = VectorStoreIndex.from_vector_store(vector_store, embed_model=embed_model)
# 省略后面向量搜索的业务代码
在运行业务代码后,出现了如下报错/异常行为:
Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-***************************************rmtk. You can find your API key at https://platform.openai.com/account/api-keys. ', 'type': 'invalid_request_error', 'code': 'invalid_api_key', 'param': None}, 'status': 401}
起初我以为是 API Key 过期或者网络问题,但检查了 SilliconFlow 控制台,Key 是正常的,网络也是通的,但报错信息明显需要我接入OpenAI平台的api-key,无法正常识别硅基流动服务的URL。这里可以选择使用OpenAI的服务,但是由于本人的项目之前一些模块已经基于硅基流动的服务实现了,为了不增加复杂度,还是继续选择了硅基流动。
3. 解决方案
3.1 补充api_key
使用OpenAIEmbedding接口的话,不是使用base_url,而是使用api_base中填入硅基流动的就可以了,即https://api.siliconflow.cn/v1
from llama_index.embeddings.openai import OpenAIEmbedding
embed_model = OpenAIEmbedding(
model_name=embedding_model,
api_key=api_key,
api_base="https://api.siliconflow.cn/v1",
)
3.2 使用SilliconFlow服务
通过查阅官方文档,发现LlamaIndex支持SiliconFlow服务的库,安装如下:
pip install llama-index-embeddings-siliconflow
而Embedding模型的配置方式如下:
from llama_index.embeddings.siliconflow import SiliconFlowEmbedding
embed_model = SiliconFlowEmbedding(
model="BAAI/BGE-m3",
api_key="sk-xxxx",
base_url="https://api.siliconflow.cn/v1/embeddings"
)
按照这样配置之后,我的相关代码就能跑通了,这里需要注意几个点:
- 模型名称参数名是model="xx",不是model_name="xx",这里很多不同库的规范不一样,在使用其他LLM库需要注意
- base_url是"https://api.siliconflow.cn/v1/embeddings",这里一定要把embeddings给加上
4. 补充建议
在使用第三方 LLM 或 Embedding 集成库时,建议大家:
- 优先查阅集成库的 GitHub Issues:很多适配问题社区里已经有讨论。
- 是否真的需要借助框架:事实上,在个性化需求多的情况下,LlamaIndex的引入可能并不会加速开发,效率还不如自己手搓,而且很容易遇到上述这样的坑,参考文档和源码调试十分麻烦。
- 打印原始 Request:如果可能,开启 debug 模式查看实际发送的 HTTP 请求体,能快速定位是参数错了还是鉴权错了。
5. 结语
这个小坑虽然不大,但确实浪费了不少调试时间。希望这篇笔记能让大家少走弯路。如果你在使用 LlamaIndex 对接国内大模型时遇到其他问题,欢迎在评论区交流!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)