Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >RAG 实践:基于腾讯云 ES 与混元,十分钟构建你的专属 AI 助手

RAG 实践:基于腾讯云 ES 与混元,十分钟构建你的专属 AI 助手

原创
作者头像
腾讯云大数据
发布于 2025-02-10 08:59:32
发布于 2025-02-10 08:59:32
17700
代码可运行
举报
运行总次数:0
代码可运行

背景概述

随着数据智能技术的不断发展,以大语言模型(LLM)驱动的 AIGC 为代表的内容生成技术已经成为企业数据智能能力中不可或缺的一部分,但传统的内容生成技术存在信息更新不及时、垂直领域知识匮乏、模型幻觉等问题,如何推进大模型在各行业、各业务场景落地是各方普遍关注的问题,而检索增强生成(Retrieval-Augmented Generation,RAG)技术则为此提供了有效的解决方案,成为数据智能时代的一大趋势。

RAG 是一种结合了检索和大语言模型内容生成的技术方案,它通过引用外部知识库,在用户输入 Query 时检索出知识,然后让模型基于可信的知识进行用户回答。RAG 具有较高的可解释性和定制能力,可大幅降低大语言模型的幻觉,适用于问答系统、文档生成、智能助手等多种自然语言处理任务中。本文将通过介绍腾讯云 ES 一站式 RAG 方案,演示如何通过结合腾讯云 ES 与混元大模型,快速构建 RAG 应用。

腾讯云 ES 一站式 RAG 方案

腾讯云 ES 是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成 X-Pack,支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。在自研内核方面,腾讯云 ES 依托腾讯内外部海量业务的运营经验,针对 ES 内核进行了成本、性能、稳定性、拓展性等方面的优化,是亚太地区开源贡献第一的团队,使用腾讯云 ES 您可以高效构建在线搜索、向量检索、日志分析、运维监控、智能问答等服务。

在 RAG 方面,腾讯云 ES 支持了一站式向量检索、文本 + 向量混合搜索、倒数排序融合、与大模型集成、GPU 高性能推理、字段级别权限控制等能力,同时针对查询性能做了大量优化,有效的提升了数据检索效率。

同时,作为国内公有云首个从自然语言处理、到向量生成/存储/检索、并与大模型集成的端到端一站式技术平台,腾讯云 ES 也作为核心参编单位参与了由信通院组织的 RAG 标准制定,同时成为首个通过 RAG 权威认证的企业。

AI 助手构建

购买 ES 集群

1. 登录腾讯云 ES 控制台,进入ES 集群管理 页面,单击新建

2. 进入新建页面,产品类型选择为:通用版

3. 选择版本:计费模式为按量计费、ES 版本为 8.13.3、商业特性为白金版

4. ES 节点配置,测试环境可选择为 ES.S1(2核4G),节点数为2,磁盘为通用型 SSD,磁盘容量为20GB

5. 其余配置选择默认即可。

登录 Kibana

1. 访问 Kibana,设置公网访问策略。

2. 单击 Kibana 公网访问地址访问 Kibana。

部署 embedding 模型

集群购买完成后,前往 Kibana 部署 Embedding 模型、创建知识库索引与向量化管道。

1. 开启节点出站访问,仅开启数据节点即可,如有专用主节点,仅开启专用主节点即可。(该功能为白名单,请联系 工单 处理)

注意:

如需上传自定义模型或第三方平台(例如 Huggingface)模型,可参见 文档

2. 登录 Kibana 后,在左侧导航栏找到 Machine Learning 功能。

3. 进入模型管理页面,并找到类型为 text_embedding 的模型。

4. 如为未下载状态,选中模型,并单击 Add trained model,本次演示我们使用 .multilingual-e5-small_linux-x86_64 模型。

5. 下载完成后,单击部署

6. 为快速体验,配置使用默认值即可。

创建索引与向量化管道

1. 单击进入 Dev tools 页面。

2. 创建知识库索引

index-name 为索引名称,实际可按需命名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT /index-name
{
  "mappings": {
    "properties": {
    "title": {
        "type": "keyword"
      },
      "content": {
        "type": "text"
      },
      "url": {
        "type": "keyword"
      }
    }
  }
}

3. 创建推理管道,该管道可用于写入数据时进行数据向量化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT /_ingest/pipeline/index-name-pipeline
{
  "description": "Text embedding pipeline",
  "processors": [
    {
      "inference": {
        "model_id": ".multilingual-e5-small_linux-x86_64",
        "input_output": [
          {
            "input_field": "content",
            "output_field": "content_embedding"
          },
          {
            "input_field": "title",
            "output_field": "title_embedding"

          }
        ]
      }
    }
  ]
}

上述管道,将字段 content、title 的内容,调用 .multilingual-e5-small_linux-x86_64 模型向量化后存储到新的字段中。

写入知识库数据

通过 Bulk API 批量写入数据,可将 title 、content 、url 的内容替换为您实际的知识库数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
POST index-name/_bulk?pipeline=index-name-pipeline&refresh
{ "index" : {} }
{ "title" : "标题 1","content": "内容 1","url": "https:url1"  }
{ "index" : {} }
{ "title" : "标题 2","content": "内容 2","url": "https:url2"  }

调用混元大模型

1. Python 文件命名为 hunyuan.py

2. 进入 API Explorer 页面, 安装相关库,参考如下:

3. 进入 API 密钥管理 界面,获取 SecretID、SecretKey。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models

def hunyuan_gpt(system_prompt, content):
    try:
        # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
        cred = credential.Credential("SecretId", "SecretKey")        
        # 实例化一个http选项,可选的,没有特殊需求可以跳过
        httpProfile = HttpProfile()
        httpProfile.endpoint = "hunyuan.tencentcloudapi.com"

        # 实例化一个client选项,可选的,没有特殊需求可以跳过
        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        
        # 实例化要请求产品的client对象,clientProfile是可选的
        client = hunyuan_client.HunyuanClient(cred, "", clientProfile)

        # 实例化一个请求对象,每个接口都会对应一个request对象
        req = models.ChatCompletionsRequest()
        params = {
            "Model": "hunyuan-standard",
            "Messages": [
                {"Role": "system", "Content": system_prompt},
                {"Role": "user", "Content": content}
            ]
        }
        req.from_json_string(json.dumps(params))

        # 返回的resp是一个ChatCompletionsResponse的实例,与请求对象对应
        resp = client.ChatCompletions(req)
    
        return resp
        
    except TencentCloudSDKException as err:
        return str(err)

智能问答系统构建

1. 安装 streamlit。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install streamlit

2. 获取 ES 访问地址。

用户名为 elastic、密码在创建集群时设置,使用本地 mac 测试时,可开启公网访问,实际生产时,建议使用内网访问地址。

3. 运行如下代码,文件命名为 demo.py(需与 hunyuan.py 在一个目录下)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import streamlit as st
from elasticsearch import Elasticsearch
from hunyuan import hunyuan_gpt

es_client = Elasticsearch(
    "ES 集群访问地址",basic_auth=("用户名", "密码"))

def get_elasticsearch_results(query):
    es_query = {
        "knn": {
            "field": "content_embedding",
            "num_candidates": 100,
            "query_vector_builder": {
                "text_embedding": {
                    "model_id": ".multilingual-e5-small_linux-x86_64",
                    "model_text": query
                }
            }
        },
        "query":{
            "match":{
                "content":query
            }
        },
        "rank":{
            "rrf":{
                "window_size":100,
                "rank_constant":20
            }
        }
    }
    result = es_client.search(index="index-name", body=es_query)
    return result["hits"]["hits"]

def create_hunyuan_prompt(results,question):
    context = ""
    for hit in results:
        source_field = hit["_source"]["content"]
        hit_context = source_field
        context += f"{hit_context}\n"
    prompt = f"""
Instructions:

回答此问题:{question}
回答时,你只能参考文档{context} 生成答案,如果无法生成答案,请回复:对不起,该问题我无法回答

"""
    return prompt

def generate_hunyuan_completion(user_prompt, question):
    response = hunyuan_gpt(user_prompt, question)
    return response.Choices[0].Message.Content

def format_result(hit):
    title = hit["_source"]["title"]
    return f'[{title}]'

def main():
    st.title("我的专属AI助手")

    # 创建输入框和查询按钮
    question = st.text_input("请输入您的问题:")
    if st.button("查询并生成答案"):
        # 获取Elasticsearch结果并创建HunYuan提示
        elasticsearch_results = get_elasticsearch_results(question)
        user_prompt = create_hunyuan_prompt(elasticsearch_results,question)
        system_prompt = f"""
你是一个问答任务的助手。使用呈现的上下文真实、实事求是地回答问题。
"""

        # 使用HunYuan模型生成回答
        openai_completion = generate_hunyuan_completion(system_prompt, user_prompt)

        # 显示结果
        st.write(openai_completion)

        # 展示Elasticsearch查询结果
        st.write("大模型参考的文档:")
        for hit in elasticsearch_results:
            st.markdown(format_result(hit))

if __name__ == "__main__":
    main()

4. 在上述 python 文件的目录下,使用如下命令运行系统:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
streamlit run demo.py

5. 生成的界面如下:

总结

本文通过介绍腾讯云 ES 一站式 RAG 方案,演示如何通过结合腾讯云 ES 与混元大模型,快速构建 RAG 应用。腾讯云 ES 凭借其在传统 PB 级日志和海量搜索场景中积累的丰富经验,通过深度重构底层系统,成功地将多年的性能优化、索引构建和运营管理经验应用于 RAG 领域,并积极探索向量召回与传统搜索技术的融合之道,旨在充分发挥两者的优势,为用户提供更加精准、高效的搜索体验。未来,腾讯云 ES 将持续深耕智能检索领域,在成本、性能、稳定性等方面持续提升,帮助客户降本增效的同时实现业务价值持续增长,欢迎持续关注!

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RAG 实践:腾讯云ES&混元,十分钟构建你的专属 AI 助手
随着数据智能技术的不断发展,以大语言模型(LLM)驱动的 AIGC 为代表的内容生成技术已经成为企业数据智能能力中不可或缺的一部分,但传统的内容生成技术存在信息更新不及时、垂直领域知识匮乏、模型幻觉等问题,如何推进大模型在各行业、各业务场景落地是各方普遍关注的问题,而检索增强生成(Retrieval-Augmented Generation,RAG)技术则为此提供了有效的解决方案,成为数据智能时代的一大趋势。
腾讯QQ大数据
2024/10/10
5610
RAG 实践:腾讯云ES&混元,十分钟构建你的专属 AI 助手
基于腾讯云ES混合搜索与DeepSeek,十分钟构建RAG 应用
本文共计1669字 预计阅读时长6分钟 随着数据智能技术的不断发展,以大语言模型(LLM)驱动的AIGC为代表的内容生成技术已经成为企业数据智能能力中不可或
腾讯QQ大数据
2025/02/03
4K0
基于腾讯云ES混合搜索与DeepSeek,十分钟构建RAG 应用
基于腾讯云ES混合搜索与TI-ONE部署DeepSeek,快速构建RAG应用
随着数据智能技术的不断发展,以大语言模型(LLM)驱动的AIGC为代表的内容生成技术已经成为企业数据智能能力中不可或缺的一部分。但在实践过程中,LLM(例如ChatGPT)仍存在不少问题,例如信息更新不及时、垂直领域知识匮乏,且可能产生“幻觉”(即生成不准确的内容)等问题。
腾讯云大数据
2025/02/10
1660
基于腾讯云ES混合搜索与TI-ONE部署DeepSeek,快速构建RAG应用
基于腾讯云ES混合搜索与TI-ONE部署DeepSeek,快速构建RAG应用
随着数据智能技术的不断发展,以大语言模型(LLM)驱动的AIGC为代表的内容生成技术已经成为企业数据智能能力中不可或缺的一部分。但在实践过程中,LLM(例如ChatGPT)仍存在不少问题,例如信息更新不及时、垂直领域知识匮乏,且可能产生“幻觉”(即生成不准确的内容)等问题。
腾讯QQ大数据
2025/02/18
1200
基于腾讯云ES混合搜索与TI-ONE部署DeepSeek,快速构建RAG应用
Elasticsearch案例:百行代码实现腾讯ES帮助文档的RAG
随着搜索引擎技术的不断发展,我们对于查询的需求也日益提高。传统的关键词搜索已经无法满足用户对于查询准确性和效率的要求。为此,我们引入了语义搜索技术。通过使用先进的自然语言处理(NLP)技术,语义搜索能够更好地理解用户的查询意图,并返回更相关的搜索结果。而随着机器学习技术的持续发展,特别是chatGPT等生成式大模型的火爆,一个新的技术方向应运而生 —— RAG。
点火三周
2023/11/02
5.4K5
Elasticsearch案例:百行代码实现腾讯ES帮助文档的RAG
腾讯云ES RAG最佳实践:百行代码轻松实现帮助文档的智能问答
腾讯云大数据Elasticsearch Service首发上线ES 8.8.1版本,提供强大的云端AI增强与向量检索能力,支持在端到端搜索与分析平台中实现自然语言处理、向量搜索以及与大模型的集成,10亿级向量检索平均响应延迟控制在毫秒级,助力客户实现由AI驱动的高级搜索能力,为搜索与分析带来全新的前沿体验。本文将结合腾讯云ES与ChatGPT,演示如何通过百行代码轻松实现ES帮助文档的智能问答系统。
腾讯QQ大数据
2023/11/18
1K1
腾讯云ES RAG最佳实践:百行代码轻松实现帮助文档的智能问答
AI实用指南:5分钟搭建你自己的LLM聊天应用
今天,我们将迅速着手搭建一个高效且富有创意的混元聊天应用,其核心理念可以用一个字来概括——快。在这个快节奏的时代,构建一个基础的LLM(Large Language Model,大型语言模型)聊天应用并不需要耗费太多时间。市面上充斥着各种功能强大的大型语言模型,我们可以根据项目需求灵活选择,而今天的目标并非深入探讨这些模型的技术细节,而是将重点放在如何快速上手。
努力的小雨
2024/03/26
5410
混元大模型,API免费发放,又一个王炸级更新!
混元大模型(英文名:HunYuan)是由腾讯开发的大型语言模型,它可以进行丰富的语义理解和计算,为用户提供问答式的服务。基于大量的训练数据和先进的深度学习技术,混元大模型能够处理各种类型的问题和任务,涵盖知识问答、建议、解决问题等多个方面。
不惑
2024/05/08
1.6K0
混元大模型,API免费发放,又一个王炸级更新!
AI大模型全栈工程师课程笔记 - RAG 检索增强生成
课程学习自 知乎知学堂 https://www.zhihu.com/education/learning
Michael阿明
2023/12/09
1.5K0
AI大模型全栈工程师课程笔记 - RAG 检索增强生成
腾讯云大模型知识引擎 API 的开发实战:基于RAG的论文阅读助手
科研工作者,尤其是那些奋战在知识前沿的探索者们,正面临着信息洪流的巨大挑战。每天都有如潮水般涌来的学术论文,这既是机遇,也是重负。
Lion Long
2025/03/02
4961
腾讯云大模型知识引擎 API 的开发实战:基于RAG的论文阅读助手
玩转 OCR|智能Excel数据分析助手
项目地址:Excel智能分析助手: 本项目旨在构建一个智能化的Excel数据分析助手,通过结合OCR技术和自然语言处理,实现从图片到数据分析的端到端解决方案。通过腾讯云的OCR技术,将图片中的数据转化为可分析的数字资产。在加上混元大模型的自然语言的解析能力与DuckDB 的高性能查询能力相结合,实现了自动化字段解析、数据类型推断与高效数据入库等功能。无论是对复杂数据的快速处理,还是多源数据的灵活支持,满足用户对实时性和准确性的需求。
刺头
2025/01/12
1590
玩转 OCR|智能Excel数据分析助手
「最佳实践」腾讯云 Elasticsearch 8.13.3 向量混合检索
本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)。
岳涛
2025/03/08
2570
「最佳实践」腾讯云 Elasticsearch 8.13.3 向量混合检索
腾讯云ES AI增强搜索:十分钟快速入门自然语言处理(NLP)与向量检索
| 导语 本文从腾讯云ES AI增强搜索相关能力介绍出发,通过集群部署、模型上传、效果验证等全流程演示,从零到一完成基于腾讯云ES的自然语言处理(NLP)与向量检索实践。
腾讯QQ大数据
2023/11/24
9711
腾讯云ES AI增强搜索:十分钟快速入门自然语言处理(NLP)与向量检索
开发基于云的RAG应用,使用开源 LLM
按照以下步骤指南,使用 BentoML、LangChain 和 MyScaleDB 创建自定义 AI 应用程序。
云云众生s
2024/07/07
2630
开发基于云的RAG应用,使用开源 LLM
腾讯云AI绘画测试代码
腾讯云也推出了AI绘画 支持一句话生成图片 图片生成图片 下面就给大家给一段已经测试并且拿来就能用的python 代码 想测试的朋友都可以来尝试一下腾讯云的AI绘画
用户4127047
2023/07/17
4770
巧用腾讯云OCR--图片组成的PDF也能构建知识库 | 技术创作特训营第一期
随着数字化时代的到来,OCR(光学字符识别)技术在各行各业中的应用越来越广泛,如金融、医疗、教育等领域。然而,图片组成的PDF文件识别一直以来都是OCR技术的难点。腾讯云OCR技术凭借其领先的识别能力,可以快速准确地识别图片PDF文件。结合openai接口,我们可以将识别结果构建成知识库,为用户提供更高效便捷的服务。本文将以滴滴出行的行程单为例,展示腾讯云OCR技术在实际应用中的优势。
AIOPS
2023/08/25
1.3K1
如何实现参加RAG比赛但进不了复赛的总结
好久没写文章了,断更了一个多月了,刚开始一段时间主要是上班精神内耗太严重没有精力去写文了,到六月初的时候,参加了一个RAG相关的比赛,初赛本周结束,作为菜鸟的我也是理所应当的没进复赛,跟第一名差了十分多,尝试了很多办法,但的确已经到个人能力的尽头了,决定就此放弃,这也是我第一次参加跟AI相关的比赛,而且还是自己单打独斗,也不能再强求更好了,总的来说,四个字:菜就多练🐶。
叶子的技术碎碎念
2025/04/08
580
如何实现参加RAG比赛但进不了复赛的总结
「最佳实践」腾讯云 ES 8 向量化语义混合检索测试指南
本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)。
岳涛
2024/04/11
85711
「最佳实践」腾讯云 ES 8 向量化语义混合检索测试指南
使用腾讯云Elasticsearch 8.8.1实现:NLP+Vector Search+GAI
腾讯云Elasticsearch service在最近上线了8.8.1版本。该版本中的核心能力,是为AI革命提供高级搜索能力!该版本特别引入了Elasticsearch Relevance Engine™(ESRE™)—— 一款强大的AI增强搜索引擎,为搜索与分析带来全新的前沿体验。
点火三周
2023/07/13
3.1K0
使用腾讯云Elasticsearch 8.8.1实现:NLP+Vector Search+GAI
评测腾讯混元大模型,python调用混元生文接口
想丰富腾讯混元python sdk 调用混元大模型的实例。下面介绍python实现混元生文接口ChatCompletions实例。
用户9295575
2024/09/13
4710
推荐阅读
相关推荐
RAG 实践:腾讯云ES&混元,十分钟构建你的专属 AI 助手
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验