Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何在隔离环境中使用GPU加速的LocalAI进行文本嵌入

如何在隔离环境中使用GPU加速的LocalAI进行文本嵌入

原创
作者头像
点火三周
发布于 2025-02-07 12:43:50
发布于 2025-02-07 12:43:50
1621
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

简介

你是否希望在Elasticsearch向量数据库之上构建一个RAG应用程序?是否需要对大量数据进行语义搜索?或者你需要在隔离环境中本地运行?这篇文章将告诉你如何实现这些需求。

Elasticsearch提供了多种方式为你的数据创建嵌入进行对称搜索。其中一种流行的方法是使用Elasticsearch开放推理API与OpenAI、Cohere或Hugging Face模型。这些平台支持许多大型、强大的模型,可以在GPU上运行嵌入。然而,第三方嵌入服务并不适用于隔离系统,或者对于有隐私顾虑和法规要求的客户来说是禁用的。

作为替代方案,你可以使用ELSER和E5在本地计算嵌入。这些嵌入模型在CPU上运行,并针对速度和内存使用进行了优化。它们也适用于隔离系统,并且可以在云中使用。然而,这些模型的性能不如运行在GPU上的模型。

如果你能在本地计算数据的嵌入岂不是很棒?使用LocalAI,你可以做到这一点。LocalAI是一个免费且开源的推理服务器,与OpenAI API兼容。它支持使用多个后端进行模型推理,包括用于嵌入的Sentence Transformers和用于文本生成的llama.cpp。LocalAI还支持GPU加速,因此你可以更快地计算嵌入。

这篇文章将向你展示如何使用LocalAI计算数据的嵌入。我们将一步步地指导你如何设置LocalAI,配置它来计算数据的嵌入,并运行它以生成嵌入。你可以在你的笔记本电脑上,在隔离系统中,或者在任何需要计算嵌入的地方运行它。

你感兴趣了吗?让我们开始吧!

如何设置LocalAI来计算数据的嵌入

第一步:使用docker-compose设置LocalAI

要开始使用LocalAI,你需要在你的机器上安装Dockerdocker-compose。根据你的操作系统,你可能还需要安装NVIDIA容器工具包来支持Docker容器中的GPU。

旧版本不支持NVIDIA运行时指令,因此确保你安装了最新版本的docker-compose

代码语言:shell
AI代码解释
复制
sudo curl -L https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

检查docker-compose的版本:

代码语言:shell
AI代码解释
复制
docker-compose --version

你需要使用以下docker-compose.yaml配置文件:

代码语言:yaml
AI代码解释
复制
# file: docker-compose.yaml
services:
  localai:
    image: localai/localai:latest-aio-gpu-nvidia-cuda-12
    container_name: localai
    environment:
      - MODELS_PATH=/models
      - THREADS=8
    ports:
      - "8080:8080"
    volumes:
      - $HOME/models:/models
    tty: true
    stdin_open: true
    restart: always
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

注意:

  1. 我们将$HOME/models目录挂载到容器内的/models目录。这是模型存储的位置。你需要根据你想存储模型的目录调整路径。
  2. 我们指定了用于推理的线程数和使用的GPU数量。你可以根据你的硬件配置调整这些值。

第二步:配置LocalAI使用Sentence Transformers模型

在本教程中,我们将使用mixedbread-ai/mxbai-embed-large-v1,它目前在MTEB排行榜上排名第四。然而,任何可以由sentence-transformers库加载的嵌入模型都可以以相同的方式工作。

创建目录$HOME/models并创建一个配置文件$HOME/models/mxbai-embed-large-v1.yaml,内容如下:

代码语言:yaml
AI代码解释
复制
# file: mxbai-embed-large-v1.yaml
name: mxbai-embed-large-v1
backend: sentencetransformers
embeddings: true
parameters:
  model: mixedbread-ai/mxbai-embed-large-v1

第三步:启动LocalAI服务器

在分离模式下启动Docker容器,运行以下命令:

代码语言:shell
AI代码解释
复制
docker-compose up -d

从你的$HOME目录运行。

通过运行docker-compose ps验证容器是否正确启动,检查localai容器是否处于Up状态。

你应该看到类似以下的输出:

代码语言:shell
AI代码解释
复制
~$ docker-compose ps
WARN[0000] /home/valeriy/docker-compose.yaml: `version` is obsolete 
NAME      IMAGE                                           COMMAND                  SERVICE   CREATED              STATUS                                 PORTS
localai   localai/localai:latest-aio-gpu-nvidia-cuda-12   "/aio/entrypoint.sh"     localai   About a minute ago   Up About a minute (health: starting)   0.0.0.0:8080->8080/tcp

如果出现问题,请检查日志。你还可以使用日志来验证LocalAI是否能看到GPU。运行以下命令:

代码语言:shell
AI代码解释
复制
docker logs localai

应该能看到类似以下的信息:

代码语言:shell
AI代码解释
复制
$ docker logs localai
===> LocalAI All-in-One (AIO) container starting...
NVIDIA GPU detected
Thu Mar 28 11:15:41 2024       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.86.10              Driver Version: 535.86.10    CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  Tesla T4                       Off | 00000000:00:04.0 Off |                    0 |
| N/A   59C    P0              29W /  70W |      2MiB / 15360MiB |      6%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+
NVIDIA GPU detected. Attempting to find memory size...
Total GPU Memory: 15360 MiB

最后,你可以通过查询已安装的模型列表来验证推理服务器是否正常工作:

代码语言:shell
AI代码解释
复制
curl -k http://localhost:8080/v1/models

应产生如下输出:

代码语言:json
AI代码解释
复制
{"object":"list","data":[{"id":"tts-1","object":"model"},{"id":"text-embedding-ada-002","object":"model"},{"id":"gpt-4","object":"model"},{"id":"whisper-1","object":"model"},{"id":"stablediffusion","object":"model"},{"id":"gpt-4-vision-preview","object":"model"},{"id":"MODEL_CARD","object":"model"},{"id":"llava-v1.6-7b-mmproj-f16.gguf","object":"model"},{"id":"voice-en-us-amy-low.tar.gz","object":"model"}]}

第四步:创建Elasticsearch _inference 服务

我们已经创建并配置了LocalAI推理服务器。由于它是OpenAI推理服务器的替代品,我们可以在Elasticsearch中创建一个新的openai推理服务。此功能在Elasticsearch 8.14中实现。

要创建新的推理服务,请在Kibana中打开开发工具并运行以下命令:

代码语言:json
AI代码解释
复制
PUT _inference/text_embedding/mxbai-embed-large-v1
{
  "service": "openai",
  "service_settings": {
    "model_id": "mxbai-embed-large-v1",
    "url": "http://localhost:8080/embeddings",
    "api_key": "ignored"
  }
}

注意:

  1. api_key参数对于openai服务是必需的,必须设置,但对于我们的LocalAI服务,其具体值并不重要。
  2. 对于大型模型,如果模型第一次下载到LocalAI服务器需要较长时间,PUT请求可能会超时。此时请稍后重试PUT请求。

最后,你可以验证推理服务是否正常工作:

代码语言:json
AI代码解释
复制
POST _inference/text_embedding/mxbai-embed-large-v1
{
  "input": "It takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!"
}

应产生如下输出:

代码语言:json
AI代码解释
复制
{
  "text_embedding": [
    {
      "embedding": [
        -0.028375082,
        0.6544269,
        0.1583663,
        0.88167363,
        0.5215657,
        0.05415681,
        0.62085253,
        0.069351405,
        0.29407632,
        0.51018727,
        0.8183201,
        ...
      ]
    }
  ]
}

结论

通过本文中的步骤,你可以设置LocalAI来使用GPU加速计算数据的嵌入,而无需依赖第三方推理服务。使用LocalAI,Elasticsearch的用户在隔离环境或有隐私顾虑的情况下,可以利用世界一流的向量数据库为他们的RAG应用程序提供服务,而不会牺牲计算性能或选择最佳AI模型的能力。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
文介绍了如何在隔离环境中使用LocalAI进行GPU加速的文本嵌入,适用于需要在本地环境中运行且有隐私顾虑的用户。通过详细的步骤指导,读者可以设置和配置LocalAI,并与Elasticsearch集成,实现高效的语义搜索和数据嵌入
文介绍了如何在隔离环境中使用LocalAI进行GPU加速的文本嵌入,适用于需要在本地环境中运行且有隐私顾虑的用户。通过详细的步骤指导,读者可以设置和配置LocalAI,并与Elasticsearch集成,实现高效的语义搜索和数据嵌入
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
本地化部署文本嵌入向量模型(AI知识库中间最重要一环)的爬坑过程
前言:嵌入向量模型排行榜,可以在这个网站上进行查看。可以手动选择不同的模型进行横向对比:
Wesky
2025/04/04
1130
本地化部署文本嵌入向量模型(AI知识库中间最重要一环)的爬坑过程
LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发
Ollama 是一个开源框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。,这是 Ollama 的官网地址:https://ollama.com/
汀丶人工智能
2024/08/17
1.4K0
LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发
AI智能体研发之路-工程篇(四):大模型推理服务框架Xinference一键部署
上一篇大语言模型推理服务框架—Ollama介绍了Ollama,Ollama以出色的设计一行命令完成推理框架部署,一行命令完成大模型部署,模型的下载不依赖梯子,速度非常快,大幅提升模型部署效率,同时,当有多卡GPU时,Ollama可以自动将模型分片到各个GPU上,博主使用V100显卡(单卡32G显存)部署llama3 70B(预计需要40G显存),自动完成了显存分配。
LDG_AGI
2024/08/13
3.1K0
AI智能体研发之路-工程篇(四):大模型推理服务框架Xinference一键部署
基于 Deepseek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知
LLM 本身只是一些 神经网络参数, 就拿 DeepSeek-R1 来讲,模型本身存储了 权重矩阵,以及 混合专家(MoE)架构, 实际运行起来需要行业级别的服务器配置, 消费级别的个人电脑不能直接运行,实际还涉及到硬件适配,需手动配置 CUDA/PyTorch 环境,编写分布式推理代码,处理量化与内存溢出问题
山河已无恙
2025/02/25
1.4K0
基于 Deepseek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知
langchain4j+local-ai小试牛刀
本文主要研究一下如何本地运行local-ai并通过langchain4j集成调用。
code4it
2025/03/03
1000
langchain4j+local-ai小试牛刀
本地测试 DeepSeek R1 用于 RAG 与 Ollama 和 Kibana
最近大家都在讨论DeepSeek R1,这是中国幻方推出的新大型语言模型。新闻中充满了对这个具备链式推理能力且权重公开的LLM对行业影响的猜测。对那些好奇尝试这个新模型与 RAG 以及 Elasticsearch 向量数据库的功能的人来说,这里有一个快速教程,教你如何使用本地推理来使用 DeepSeek R1。在此过程中,我们将使用 Elastic 的 Playground 功能,并发现 Deepseek R1 对 RAG 的一些优缺点。
点火三周
2025/02/04
7521
本地测试 DeepSeek R1 用于 RAG 与 Ollama 和 Kibana
使用TensorRT-LLM进行生产环境的部署指南
TensorRT-LLM是一个由Nvidia设计的开源框架,用于在生产环境中提高大型语言模型的性能。该框架是基于 TensorRT 深度学习编译框架来构建、编译并执行计算图,并借鉴了许多 FastTransformer 中高效的 Kernels 实现,并且可以利用 NCCL 完成设备之间的通讯。
deephub
2024/03/11
1.8K0
使用TensorRT-LLM进行生产环境的部署指南
检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统
LLM 会产生误导性的 “幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。
汀丶人工智能
2024/05/07
4.1K0
检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统
容器环境下部署Open-webui、One-api、Ollama、Deepseek
浏览器访问 http://ip:3000 (注意:首次登录不要去注册,直接登录,默认超管账号:root,密码:123456),登录后直接跳转到更新用户信息界面修改后再重新登陆,如下截图:
用户2141488
2025/03/07
3411
AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署
身处2024年,大模型技术从底层模型到AI应用都卷的要命,我们可以说是幸运的,也可以是幸福的,当然,学习的路上,不停的追赶,必定是疲惫的。分享一些丝滑的大模型技术栈内的项目,让大家疲惫并快乐着。
LDG_AGI
2024/08/13
1.2K0
AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署
Anything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。
汀丶人工智能
2024/01/24
1.7K0
Anything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
如何通过开源项目 LocalAI 运行本地 LLM
我们研究了一种开源方法,用于在本地运行大型语言模型。LocalAI 是私有公司 Ollama 的替代品。
云云众生s
2024/04/08
1.1K0
如何通过开源项目 LocalAI 运行本地 LLM
详解几种常见本地大模型个人知识库工具部署、微调及对比选型(2)
这里首先介绍的是大模型侧的工具安装部署实践,至于为什么先提大模型侧后提知识库侧呢?这是因为大模型通常是知识库操作和应用的基础与核心,是提供智能决策的引擎。它们构建了理解和生成文本、图像、语音等多模态反应的基础能力,是整个智能应用的心脏,同时,由于这次主题是本地大模型个人知识库,所以大模型的安装、配置、优化和部署是首要步骤,也是确保知识库工具能够顺畅运行的基石。
zhouzhou的奇妙编程
2024/06/12
4.1K0
寻找最佳的RAG开源嵌入模型
寻找适合您 RAG 应用的最佳开源嵌入模型?我们分享一个比较工作流程,以便您可以停止支付 OpenAI 的费用。
云云众生s
2024/12/24
1.3K0
寻找最佳的RAG开源嵌入模型
使用 LangChain 和 Elasticsearch 实现隐私优先的人工智能搜索
过去几个周末,我一直沉浸在“即时工程”的迷人世界中,学习Elasticsearch® 等向量数据库如何通过充当长期记忆和语义知识存储来增强 ChatGPT 等大型语言模型 (LLM)。然而,困扰我和许多其他经验丰富的数据架构师的一件事是,许多教程和演示完全依赖于向大型网络公司和基于云的人工智能公司发送您的私人数据。
点火三周
2023/07/25
2.7K0
使用 LangChain 和 Elasticsearch 实现隐私优先的人工智能搜索
FauxPilot :可本地运行的开源 GitHub Copilot (Copilot Plugin)
GitHub Copilot 是 GitHub 去年 6 月推出的人工智能模型,这是一个利用机器学习技术为开发者提供代码建议和代码补全的工具,能够帮助开发者更快完成编程任务。但由于 GitHub Copilot 训练使用的数据集,以及该工具如今成为了一款向开发者收费的商业性产品,GitHub Copilot 也引发了一些争议。
一个会写诗的程序员
2022/09/28
5.3K0
FauxPilot :可本地运行的开源 GitHub Copilot (Copilot Plugin)
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。
汀丶人工智能
2024/01/22
2K0
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
腾讯云ES AI增强搜索:十分钟快速入门自然语言处理(NLP)与向量检索
| 导语 本文从腾讯云ES AI增强搜索相关能力介绍出发,通过集群部署、模型上传、效果验证等全流程演示,从零到一完成基于腾讯云ES的自然语言处理(NLP)与向量检索实践。
腾讯QQ大数据
2023/11/24
9711
腾讯云ES AI增强搜索:十分钟快速入门自然语言处理(NLP)与向量检索
langchain4j+local-ai小试牛刀
本文主要研究一下如何本地运行local-ai并通过langchain4j集成调用。
code4it
2025/03/01
860
langchain4j+local-ai小试牛刀
本地AI新选择:LocalAI如何实现低成本硬件也能轻松训练AI大模型
嗨大家好!今天我要和大家分享一个超实用的教程——在本地服务器上无需高昂价格的GPU也能运行离线AI项目的开源神器:LocalAI,并结合cpolar内网穿透工具实现轻松远程使用的详细步骤。
YY的秘密代码小屋
2025/02/14
3130
本地AI新选择:LocalAI如何实现低成本硬件也能轻松训练AI大模型
推荐阅读
本地化部署文本嵌入向量模型(AI知识库中间最重要一环)的爬坑过程
1130
LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发
1.4K0
AI智能体研发之路-工程篇(四):大模型推理服务框架Xinference一键部署
3.1K0
基于 Deepseek LLM 本地知识库搭建开源方案(AnythingLLM、Cherry、Ragflow、Dify)认知
1.4K0
langchain4j+local-ai小试牛刀
1000
本地测试 DeepSeek R1 用于 RAG 与 Ollama 和 Kibana
7521
使用TensorRT-LLM进行生产环境的部署指南
1.8K0
检索增强生成(RAG)实践:基于LlamaIndex和Qwen1.5搭建智能问答系统
4.1K0
容器环境下部署Open-webui、One-api、Ollama、Deepseek
3411
AI智能体研发之路-工程篇(三):大模型推理服务框架Ollama一键部署
1.2K0
Anything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
1.7K0
如何通过开源项目 LocalAI 运行本地 LLM
1.1K0
详解几种常见本地大模型个人知识库工具部署、微调及对比选型(2)
4.1K0
寻找最佳的RAG开源嵌入模型
1.3K0
使用 LangChain 和 Elasticsearch 实现隐私优先的人工智能搜索
2.7K0
FauxPilot :可本地运行的开源 GitHub Copilot (Copilot Plugin)
5.3K0
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答
2K0
腾讯云ES AI增强搜索:十分钟快速入门自然语言处理(NLP)与向量检索
9711
langchain4j+local-ai小试牛刀
860
本地AI新选择:LocalAI如何实现低成本硬件也能轻松训练AI大模型
3130
相关推荐
本地化部署文本嵌入向量模型(AI知识库中间最重要一环)的爬坑过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档