You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LlamaIndex嵌入被禁用致node_mappings为空,如何启用嵌入?

解决LlamaIndex中Embeddings被禁用导致node_mappings为空的问题

问题根源

出现Embeddings have been explicitly disabled. Using MockEmbedding.提示,说明LlamaIndex未配置有效的嵌入模型,自动使用了MockEmbedding——这是仅用于测试的假嵌入,不会生成真实向量表示。后续构建索引时,无法基于向量创建节点与索引的关联映射,最终导致node_mappings_2021为空字典。

解决方案

要启用真实的Embeddings,需完成以下配置:

1. 选择并配置嵌入模型

根据需求选择合适的嵌入模型,以下是两种常用方案:

方案一:使用OpenAI官方嵌入模型(需API密钥)
  • 首先在Colab中设置OpenAI API密钥环境变量:
    import os
    os.environ["OPENAI_API_KEY"] = "你的OpenAI API密钥"
    
  • 显式初始化嵌入模型:
    from llama_index.embeddings.openai import OpenAIEmbedding
    embed_model = OpenAIEmbedding(model="text-embedding-ada-002")
    
方案二:使用开源HuggingFace嵌入模型(免费无API)
  • 先安装依赖(Colab中执行):
    !pip install llama-index-embeddings-huggingface
    
  • 初始化嵌入模型:
    from llama_index.embeddings.huggingface import HuggingFaceEmbedding
    embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
    

2. 将嵌入模型传入LlamaIndex组件

确保在构建索引或处理节点时,将初始化好的embed_model传入对应组件。例如:

  • 直接从文档构建索引时:
    from llama_index.core import VectorStoreIndex
    index = VectorStoreIndex.from_documents(docs_2021, embed_model=embed_model)
    
  • 如果是先解析节点再构建索引,需在索引初始化时传入embed_model:
    raw_nodes_2021 = node_parser.get_nodes_from_documents(docs_2021)
    index = VectorStoreIndex(raw_nodes_2021, embed_model=embed_model)
    

3. 检查并移除禁用嵌入的配置

查看notebook中是否存在类似以下的代码,若有需删除或修改:

from llama_index.core import Settings
Settings.embed_model = "mock"  # 这类配置会强制使用MockEmbedding

验证效果

重新运行代码后,若不再出现MockEmbedding的提示,说明嵌入模型已生效。此时node_mappings_2021会包含节点与索引的关联映射,不再是空字典。

内容的提问来源于stack exchange,提问作者Javier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:52:35