使用 Elastic 和 Mistral 构建多语言 RAG

news2025/1/23 22:31:35

作者:来自 Elastic Gustavo Llermaly

使用 Elastic 和 Mixtral 8x22B 模型构建多语言 RAG 应用程序。

Mixtral 8x22B 是性能最高的开放式模型,其最强大的功能之一是能够流利使用多种语言;包括英语、西班牙语、法语、意大利语和德语。

想象一下,一家跨国公司拥有不同语言的支持单和解决方案,并希望跨部门利用这些知识。目前,知识仅限于代理使用的语言。让我们解决这个问题!

在本文中,我将向你展示如何通过创建多语言 RAG 系统来测试 Mixtral 的语言能力。

你可以按照此笔记本在此处复现本文的示例。

步骤

  1. 创建嵌入端点
  2. 创建映射
  3. 索引数据
  4. 提出问题

创建嵌入端点

我们针对此示例的支持票(suport tickets)将以英语、西班牙语和德语提供。Mistral 嵌入模型不是多语言的(嵌入模型和大模型还不是一回事!),但我们可以使用 e5 模型生成多语言嵌入,因此我们可以索引不同语言的文本并将其作为单一来源进行管理,从而为我们提供更丰富的上下文。

要创建 e5 多语言嵌入,你可以使用 Kibana:

或者 _inference API:

PUT _inference/text_embedding/multilingual-embeddings
 {
    "service": "elasticsearch",
    "service_settings": {
        "model_id": ".multilingual-e5-small",
        "num_allocations": 1 ,
        "num_threads": 1
    }
}

创建映射

对于映射,我们将使用 semantic_text 映射类型,这是我最喜欢的功能之一。它可以为你处理数据分块、生成嵌入和查询嵌入的过程!

PUT multilingual-mistral
{
  "mappings": {
    "properties": {
      "super_body": {
        "type": "semantic_text",
        "inference_id": "multilingual-embeddings"
      }
    }
  }
}

我们将文本字段称为 super_body,因为它通过单一映射类型来处理块和嵌入。

索引数据

我们将用两种语言索引几张包含问题和解决方案的支持单,然后用第三种语言询问有关许多文档中的问题。

以下文档将添加到索引中:

1. 英语支持单:日历同步问题

Support Ticket #EN1234 Subject: Calendar sync not working with Google Calendar

Description: I'm having trouble syncing my project deadlines with Google Calendar. Whenever I try to sync, I get an error message saying "Unable to connect to external calendar service."

Resolution: The issue was resolved by following these steps:

  1. Go to Settings > Integrations
  2. Disconnect the Google Calendar integration
  3. Clear browser cache and cookies
  4. Reconnect the Google Calendar integration
  5. Authorize the app again in Google's security settings

The sync should now work correctly. If problems persist, ensure that third-party cookies are enabled in your browser settings.

2. 德语支持单:文件上传问题

Support-Ticket #DE5678 Betreff: Datei-Upload funktioniert nicht

Beschreibung: Ich kann keine Dateien mehr in meine Projekte hochladen. Jedes Mal, wenn ich es versuche, bleibt der Ladebalken bei 99% stehen und dann erscheint eine Fehlermeldung.

Lösung: Das Problem wurde durch folgende Schritte gelöst:

  1. Überprüfen Sie die Dateigröße. Die maximale Uploadgröße beträgt 100 MB.
  2. Deaktivieren Sie vorübergehend den Virenschutz oder die Firewall.
  3. Versuchen Sie, die Datei im Inkognito-Modus hochzuladen.
  4. Wenn das nicht funktioniert, leeren Sie den Browser-Cache und die Cookies.
  5. Als letzten Ausweg, versuchen Sie einen anderen Browser zu verwenden.

In den meisten Fällen lag das Problem an zu großen Dateien oder an Interferenzen durch Sicherheitssoftware. Nach Anwendung dieser Schritte sollte der Upload funktionieren.

3. 营销活动创意(噪音)

Q3 Marketing Campaign Ideas

  1. Social media contest: "Share Your Productivity Hack"

    • Users share tips using our software, best entry wins a premium subscription.
  2. Webinar series: "Mastering Project Management"

    • Invite industry experts to share insights using our tool.
  3. Email campaign: "Unlock Hidden Features"

    • Series of emails highlighting lesser-known but powerful features.
  4. Partner with a productivity podcast for sponsored content.

  5. Create a "Project Management Memes" social media account for lighter, shareable content.

4. Mitarbeiter des Monats (noise)

Mitarbeiter des Monats: Juli 2023

Wir freuen uns, bekannt zu geben, dass Sarah Schmidt zur Mitarbeiterin des Monats Juli gewählt wurde!

Sarah hat außergewöhnliche Leistungen in folgenden Bereichen gezeigt:

  • Kundenbetreuung: Sarah hat durchschnittlich 95% positive Bewertungen erhalten.
  • Teamarbeit: Sie hat maßgeblich zur Verbesserung unseres internen Wissensmanagementsystems beigetragen.
  • Innovation: Sarah hat eine neue Methode zur Priorisierung von Support-Tickets vorgeschlagen, die unsere Reaktionszeiten um 20% verbessert hat.

Bitte gratulieren Sie Sarah zu dieser wohlverdienten Anerkennung!

文档在 Elasticsearch 中的样子如下:

{
    "took": 9,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 0.9155389,
        "hits": [
            {
                "_index": "multilingual-mistral",
                "_id": "1",
                "_score": 0.9155389,
                "_source": {
                    "super_body": {
                        "text": "\n        _Support Ticket #EN1234_\n        **Subject**: Calendar sync not working with Google Calendar\n\n        **Description**:\n        I'm having trouble syncing my project deadlines with Google Calendar. Whenever I try to sync, I get an error message saying \"Unable to connect to external calendar service.\"\n\n        **Resolution**:\n        The issue was resolved by following these steps:\n        1. Go to Settings > Integrations\n        2. Disconnect the Google Calendar integration\n        3. Clear browser cache and cookies\n        4. Reconnect the Google Calendar integration\n        5. Authorize the app again in Google's security settings\n\n        The sync should now work correctly. If problems persist, ensure that third-party cookies are enabled in your browser settings.\n    ",
                        "inference": {
                            "inference_id": "multilingual-embeddings",
                            "model_settings": {
                                "task_type": "text_embedding",
                                "dimensions": 384,
                                "similarity": "cosine",
                                "element_type": "float"
                            },
                            "chunks": [
                                {
                                    "text": "passage: \n        _Support Ticket #EN1234_\n        **Subject**: Calendar sync not working with Google Calendar\n\n        **Description**:\n        I'm having trouble syncing my project deadlines with Google Calendar. Whenever I try to sync, I get an error message saying \"Unable to connect to external calendar service.\"\n\n        **Resolution**:\n        The issue was resolved by following these steps:\n        1. Go to Settings > Integrations\n        2. Disconnect the Google Calendar integration\n        3. Clear browser cache and cookies\n        4. Reconnect the Google Calendar integration\n        5. Authorize the app again in Google's security settings\n\n        The sync should now work correctly. If problems persist, ensure that third-party cookies are enabled in your browser settings.",
                                    "embeddings": [
                                        0.0059651174,
                                        0.0016363655,
                                        -0.064753555,
                                        0.0093298275,
                                        0.05689768,
                                        -0.049640983,
                                        0.02504726,
                                        0.0048340675,
                                        0.08093895,
                                        ...
                                    ]
                                }
                            ]
                        }
                    }
                }
            }
        ]
    }
}

问问题

现在,我们要用西班牙语提出一个问题:

Hola, estoy teniendo problemas para ocupar su aplicación, estoy teniendo problemas para sincronizar mi calendario, y encima al intentar subir un archivo me da error.

预期是检索文档 #1 和 #2,然后将它们作为附加上下文发送给 LLM,最后得到西班牙语的答案。

检索文档

为了检索相关文档,我们可以使用这个简短的查询,它将对嵌入进行搜索,并返回与问题最相关的支持票。

GET multilingual-mistral/_search
{
   "size": 2,
   "_source": {
    "excludes": ["*embeddings", "*chunks"]
   },
  "query": {
    "semantic": {
      "field": "super_body",
      "query": "Hola, estoy teniendo problemas para ocupar su aplicación, estoy teniendo problemas para sincronizar mi calendario, y encima al intentar subir un archivo me da error."
    }
  }
}

关于参数设置的说明:size: 2 因为我们知道我们想要前 2 个文档。excludes 为了响应清晰。文档很短,因此每个文档的长度为一个块。

回答问题

现在我们可以使用 Python 库调用 Mistral 完成 API 来回答问题。

from mistralai.client import MistralClient
from mistralai.models.chat_completion import ChatMessage

api_key = os.environ["MISTRAL_API_KEY"]
model = "open-mixtral-8x22b"

client = MistralClient(api_key=api_key)

system_message = "You are a helpful multilingual agent that helps users with their problems. You have access to a knowledge base of different languages and you must answer in the same language the question was asked."

user_message = """
## Question:

Hola, estoy teniendo problemas para ocupar su aplicación, estoy teniendo problemas para sincronizar mi calendario, y encima al intentar subir un archivo me da error. 

## Related knowledge:

Support Ticket #EN1234 Subject: Calendar sync not working with Google Calendar...
(the rest of the content of the document)

\n

Support-Ticket #DE5678 Betreff: Datei-Upload funktioniert nicht... 
(the rest of the content of the document)

ANSWER:

"""

messages = [
    ChatMessage(role="system", content=system_message),
    ChatMessage(role="user", content=user_message)
]

chat_response = client.chat(
    model=model,
    messages=messages,
)

print(chat_response.choices[0].message.content) 

答案是完美的西班牙语,而且切中要点!

答案是:

Hola, me alegra que te hayas comunicado con nosotros. Parece que hay dos problemas distintos.

En cuanto a la sincronización del calendario, puedes seguir estos pasos para resolver el problema:

Ve a Configuración > Integraciones
Desconecta la integración del Calendario de Google
Borra la caché y las cookies del navegador
Vuelve a conectar la integración del Calendario de Google
Autoriza de nuevo la aplicación en la configuración de seguridad de Google
Si sigues teniendo problemas, asegúrate de que las cookies de terceros están habilitadas en la configuración de tu navegador.

En cuanto al problema de subir un archivo, hay varias cosas que puedes probar:

Comprueba el tamaño del archivo. El tamaño máximo de carga es de 100 MB.
Desactiva temporalmente el antivirus o el cortafuegos.
Intenta cargar el archivo en modo incógnito.
Si eso no funciona, borra la caché y las cookies del navegador.
Como último recurso, prueba a usar un navegador diferente.
En la mayoría de los casos, el problema se debe a archivos demasiado grandes o a interferencias causadas por software de seguridad. Al seguir estos pasos, deberías poder cargar el archivo correctamente.

¡Espero que esto te ayude a resolver tus problemas! Si tienes alguna otra pregunta, no dudes en preguntar.

结论

Mixtral 8x22B 是一个强大的模型,它使我们能够利用不同语言的数据源,能够回答、理解和翻译多种语言。这种能力——与多语言嵌入一起 —— 使你能够在数据检索和答案生成阶段获得多语言支持,完全消除语言障碍。

如果你有兴趣重现本文的示例,你可以在此处找到包含请求的 Python Notebook。

准备好自己尝试一下了吗?开始免费试用。
Elasticsearch 集成了 LangChain、Cohere 等工具。加入我们的高级语义搜索网络研讨会,构建你的下一个 GenAI 应用程序!

原文:Building multilingual RAG with Elastic and Mistral — Search Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1978037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

质量属性-系统架构师(四十)

质量属性 1性能: 指系统响应能力。如响应时间、吞吐量。 设计策略:优先级队列,增加计算机资源,减少计算机开销,引入并发机制,采用资源调度。 2可靠性: 在一定时间内正常运行的情况下&#x…

PTA—基础编程题目集(7-21)

7-21 求特殊方程的正整数解 目录 题目描述 输入格式: 输出格式: 输入样例1: 输出样例1: 输入样例2: 输出样例2: 参考代码 总结 题目描述 本题要求对任意给定的正整数N,求方程X2Y2N的…

《Milvus Cloud向量数据库指南》——关于Ivy.ai:重塑沟通效率与数据安全的创新先锋

关于Ivy.ai:重塑沟通效率与数据安全的创新先锋 在数字化转型的浪潮中,Ivy.ai以其前瞻性的视野和专业团队的匠心独运,正逐步成为高等教育、医疗保健及公共部门沟通效率提升的引领者。这家企业不仅代表了人工智能技术在服务领域的最新进展,更以其旗舰产品IvyQuantum™的横空…

搬瓦工香港CMI VPS测评

搬瓦工香港cmi怎么样?搬瓦工香港VPS分CN2 GIA和CMI两种不同接入的网络,其中CMI网络的回程是强制三网全部都走移动CMI线路,相对CN2 GIA来说有一定的差距。实际的情况测评数据送上,可供参考。 CPU型号未知,主频2.7GHz&a…

【C++】一堆数组 冒泡排序

冒泡排序,一种很常见的排序法师 这章要划重点,很重要!! 排序思路为前一个元素与后一个元素比大小,一直循环一轮,找出最大/最小的那个元素后,进行下一轮,找到第二大/小的元素......…

ZLM推流

ZLM推流 ffmpeg -re -i D:\work\gb28181-client\target\classes\device\videofile.h264 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000把这个复制出来然后将defaultVhost_改成127.0.0.1

题海战术,面试必胜秘诀

目录 1.Java 的优势是什么?2.什么是 Java 的多态特性?3.Java 中的参数传递是按值还是按引用?4.为什么 Java 不支持多重继承?5.什么是 Java 中的不可变类?总结 题目 来自面试鸭刷题神器 1.Java 的优势是什么? Java 的跨平台性、垃圾回收机制以及其强…

【EtherCAT】Windows+Visual Studio配置SOEM主站——源码配置

目录 一、准备工作 1. Visual Studio 2022 2. Npcap 1.79 3. SOEM源码 二、源码部署 1. 新建Visual Studio工程 2. 创建文件夹 3. 创建主函数 4. 复制源代码 5. 删除无关项 6. 将soem源码添加进工程 7. 添加soem头文件 8. 配置头文件路径 9. 配置静态库和静态库路…

xdma的linux驱动编译给arm使用(中断检测-测试程序)

1、驱动链接 XDMA驱动源码官网下载地址为:https://github.com/Xilinx/dma_ip_drivers 下载最新版本的XDMA驱动源码,即master版本,否则其驱动用不了(xdma ip核版本为4.1)。 2、驱动 此部分来源于博客:xd…

多模态MLLM都是怎么实现的(12)-Florence-2

最近一直在打艾尔登法环DLC,疏于更新了,罪过罪过,今天把拉塔恩给过了,也该更新了,停更期间,催更的信息主要是啥时候更新GPU系列的第五篇,不是不更,是刚打完,正好有客户要…

C# Unity 面向对象补全计划 七大原则 之 里氏替换

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 请看专栏:http://t.csdnimg.cn/mIitr,尤其是关于继承的两篇文章&#xff…

算法022:寻找峰值

寻找峰值. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/find-peak-element/ 这个题跟上一个题很像,也是寻找一个峰值。此题还特意强调了如果有多个峰…

【数学思维培养】罗博深小学数学青少年数学思维分级课程(3-4年级)

【数学思维培养】罗博深小学数学青少年数学思维分级课程(3-4年级) 背景前摇: 虽然我是学理工科计算机的,但我感觉我在数学方面一直都存在劣势,无论是写程序到了涉及数学计算的地方(比如向量、余弦等&#…

【数据分析--带你认识数据分析,了解数据分析的】

前言: 💞💞大家好,我是书生♡,本阶段和大家一起分享和探索数据分析—基础介绍,本篇文章主要讲述了:数据分析的介绍,Python开源库,配置Jupyter等等。欢迎大家一起探索讨论…

C++程序的编译链接过程

一、预处理 (1) 将所有的#define删除,并且展开所有的宏定义 (2) 处理所有的条件预编译指令,如#if、#ifdef (3) 处理#include预编译指令,将被包含的文件插入到该预编译…

html+css 实现hover边框彩色流动

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

人工智能深度学习系列—深入探索IoU Loss及其变种:目标检测与分割的精度优化利器

文章目录 1. 背景介绍2. Loss计算公式3. 使用场景4. 代码样例5. 总结 1. 背景介绍 在深度学习的目标检测和分割领域,评估预测结果与真实标注之间的一致性是提升模型性能的关键。IoU Loss(Intersection over Union Loss)及其变种损失函数&…

【人工智能五】人工智能基础习题

文章目录 壹. 内容补充一. VR/AR/MR的区别1. 三者概念2. 区别 二. 深度学习重要算法及人物介绍1. 反向传播算法2. 卷积神经网络 贰. 习题精选1一. 选择二. 判断题三. 填空题四. 简单题1. 综合2. 深度学习与神经网络 壹. 内容补充 一. VR/AR&…

人工智能与机器学习的相关介绍

文章目录 人工智能的发展历程人工智能与机器学习关系图谱数据处理机器学习ML和深度学习DL的区别人工智能按照学习方式划分监督学习算法无监督学习算法总结 人工智能的发展历程 重要的时间点了解一下: 早在1950年人工智能就已经开始兴起 1997年deep blue战胜了人类国…