知识库领域的 LLM 大模型和 Embedding 大模型有区别么?为什么在 RAG 领域,需要单独设置 embedding 大模型?
在人工智能领域,大型语言模型(LLM)和嵌入模型(Embedding Model)是自然语言处理(NLP)中的两大关键技术,尤其在知识库构建和信息检索中发挥着重要作用。
尽管它们都属于 NLP 范畴,但它们在功能、应用场景和资源需求上存在显著差异。
Embedding 模型的主要任务是将文本转换为数值向量表示。这些向量可以用于计算文本之间的相似度、进行信息检索和聚类分析。
Embedding 模型的输出是数值向量。计算机在理解词句含义的时候,是不具备能力的,计算机只能看到一段 01010111 这样的结果。然而,人类看到的词句,是赋予了内部的含义,还带了大量的普世认知。
参考台大李宏毅老师的一张图,做一下说明。
当我们人类理解 猫 vs 狗 和 狗 vs 花的差异的时候,能自然的理解,觉得猫和狗是更加相近的物种;而狗和花,一个是动物,另一个是植物,偏差会更多。
那么,如何让计算机能理解这些词背后的含义呢。所使用的技术就是 Embedding。一句话简单说,embedding 就是把计算机无法理解的字词,转换成一个向量矩阵。
比较相似,或者含意比较接近的词向量之间的距离,是更加接近的。比如 dog 和 cat,dog 和 rabbit; 然而,flower 和 dog,就会隔得比较远。
Embedding 模型广泛应用于文本相似度计算、信息检索、聚类和推荐系统。
在大模型知识库领域中,单独设置 Embedding 模型可以降低系统资源占用和响应延迟,特别是在大规模知识库构建和信息检索中,可以极大程度提升经济型和效率。一般的应用包含以下几个部分:
\1. 知识库构建阶段
\2. 检索阶段
\3. 回答生成阶段
Crew.ai 官方组件支持的 Embedding 模型有:
接下来,我们看一下如何在本地安装 Ollama 提供的 embedding 模型。本案例选用的是 nomic-embed-text。
项目参考链接:https://ollama.com/search?c=embedding
先激活对应的工作环境。
- source crewai-env/bin/activate
-
每次开始新的终端会话时,都需要重新激活虚拟环境。如果您看到命令提示符前面有 (crewai) 这样的标识,说明环境已经正确激活。
安装依赖
- pip install crewai ollama
-
看到这个代表已经激活
启动 ollama
- ollama serve
-
安装 embedding 模型
- ollama pull nomic-embed-text
-
因为要配置给其他的服务用,所以需要解决 Ollama 的 embedding host获取问题。
要获取 Ollama 的 embedding host,有以下几种方法:
默认地址:
Ollama 默认运行在 http://localhost:11434。如果您是在本地机器上安装的 Ollama,通常不需要更改这个地址。
如果不确定是否这个端口,验证 Ollama 服务是否运行及其地址,可以按照这个方法执行。
- # 检查 Ollama 服务状态curl http://localhost:11434/api/version
-
看到 11434 的监听结果,说明这个端口就是 ollama 的embedding 模型开放的端口。
到这一步,就代表着 ollama 的embedding 模型已经安装成功。可以对接给其他的应用和服务了。