使用LlamaIndex + Gemini时遭遇OpenAI嵌入模型API密钥错误
问题原因
你已将LLM设置为Gemini,但LlamaIndex默认会加载OpenAI的嵌入模型,而你未配置OpenAI的API密钥,导致初始化失败。
解决方案
有两种可行方案:
方案1:使用Gemini嵌入模型(与已用LLM统一)
- 先安装Gemini嵌入模型依赖:
pip install llama-index-embeddings-google
- 修改代码,添加Gemini嵌入模型配置:
import os GOOGLE_API_KEY = "abcd" # 替换为你的GOOGLE API密钥 os.environ["GOOGLE_API_KEY"] = GOOGLE_API_KEY from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, Settings from llama_index.llms.gemini import Gemini from llama_index.embeddings.google import GeminiEmbedding # 配置LLM和嵌入模型 Settings.llm = Gemini(model="models/gemini-pro") Settings.embed_model = GeminiEmbedding(model_name="models/embedding-001") documents = SimpleDirectoryReader("./data").load_data() index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine() response = query_engine.query("which fruit is Green in color?") print(response)
方案2:使用本地嵌入模型
如果不想依赖云服务,可改用本地嵌入模型:
- 安装依赖:
pip install llama-index-embeddings-huggingface
- 修改配置:
# 替换嵌入模型配置为本地模型 Settings.embed_model = "local" # 或指定具体HuggingFace模型: # Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
原报错信息
Traceback (most recent call last):
File "/Users/navdeepparmar/opt/anaconda3/envs/dev/lib/python3.10/site-packages/llama_index/core/embeddings/utils.py", line 59, in resolve_embed_model
validate_openai_api_key(embed_model.api_key)
File "/Users/navdeepparmar/opt/anaconda3/envs/dev/lib/python3.10/site-packages/llama_index/embeddings/openai/utils.py", line 104, in validate_openai_api_key
raise ValueError(MISSING_API_KEY_ERROR_MESSAGE)
ValueError: No API key found for OpenAI.
Please set either the OPENAI_API_KEY environment variable or openai.api_key prior to initialization.
API keys can be found or created at https://platform.openai.com/account/api-keys在处理上述异常时,又触发了另一个异常:
Traceback (most recent call last):
File "/Users/navdeepparmar/Documents/python/Llama/Llamaindex.py", line 22, in
index = VectorStoreIndex.from_documents(documents)
File "/Users/navdeepparmar/opt/anaconda3/envs/dev/lib/python3.10/site-packages/llama_index/core/indices/base.py", line 145, in from_documents
return cls(
File "/Users/navdeepparmar/opt/anaconda3/envs/dev/lib/python3.10/site-packages/llama_index/core/indices/vector_store/base.py", line 71, in init
else embed_model_from_settings_or_context(Settings, service_context)
File "/Users/navdeepparmar/opt/anaconda3/envs/dev/lib/python3.10/site-packages/llama_index/core/settings.py", line 274, in embed_model_from_settings_or_context
return settings.embed_model
File "/Users/navdeepparmar/opt/anaconda3/envs/dev/lib/python3.10/site-packages/llama_index/core/settings.py", line 67, in embed_model
self._embed_model = resolve_embed_model("default")
File "/Users/navdeepparmar/opt/anaconda3/envs/dev/lib/python3.10/site-packages/llama_index/core/embeddings/utils.py", line 66, in resolve_embed_model
raise ValueError(
ValueError:无法加载OpenAI嵌入模型。若您打算使用OpenAI,请检查您的OPENAI_API_KEY。
原始错误:
未找到OpenAI的API密钥,请在初始化前设置OPENAI_API_KEY环境变量或openai.api_key。API密钥可在https://platform.openai.com/account/api-keys获取或创建。
考虑使用embed_model='local'。更多嵌入选项请查阅文档:https://docs.llamaindex.ai/en/stable/module_guides/models/embeddings.html#modules
内容的提问来源于stack exchange,提问作者Navdeep Parmar

