腾讯云ES RAG最佳实践:百行代码轻松实现帮助文档的智能问答

手把手部署 Elasticsearch :打造你的 RAG 向量数据库底座 本文将以Elasticsearch 8.15.0为例,从目录规划到插件配置,手把手带你完成生产级部署 —— 无论是单节点测试环境,还是多节点集群,都能快速上手;特别针对 RAG 场景优化了分词器配置与权限管理,确保后续向量入库、语义检索环节稳定高效。跟着操作,10 分钟内即可搭建好你的 RAG 向量底座!在大模型与知识库结合的浪潮中,RAG(检索增强生成)技术凭借其精准匹配、可控输出的特性,已成为落地场景中的 “刚需”。 阅读详情

 导读  

腾讯云大数据Elasticsearch Service首发上线ES 8.8.1版本,提供强大的云端AI增强与向量检索能力,支持在端到端搜索与分析平台中实现自然语言处理、向量搜索以及与大模型的集成,10亿级向量检索平均响应延迟控制在毫秒级,助力客户实现由AI驱动的高级搜索能力,为搜索与分析带来全新的前沿体验。本文将结合腾讯云ES与ChatGPT,演示如何通过百行代码轻松实现ES帮助文档的智能问答系统。

作者:Elastic中国区首席架构师 李捷

引言

信息化技术的飞速发展,使得海量数据爆发式增长。一方面,越来越多的数据可以为我们的生活带来便利,但另一方面,也给软件开发带来巨大的挑战——图片、声音、视频等不同结构的数据越来越多地出现,为搜索分析带来巨大的挑战,传统的关键词搜索,搜索结果局限于输入的关键词,用户体验较差。向量检索的出现,给我们提供了一个新的思路,向量数据库将非结构化、半结构化甚至是结构化等数据以向量形式存储,实现相似度搜索、聚类、降维等操作,结合机器学习模型,为用户更加智能的搜索服务。

然而,集文本搜索➕向量检索➕AI能力于一身,且成熟稳定、值得信赖的云端搜索引擎,在业内屈指可数,腾讯云大数据Elasticsearch Service近期首发上线的ES 8.8.1版本,提供了强大的云端AI增强与向量检索能力,支持在端到端搜索与分析平台中实现自然语言处理、向量搜索以及与大模型的集成,10亿级向量检索平均响应延迟控制在毫秒级,助力客户实现由AI驱动的高级搜索能力,为搜索与分析带来全新的前沿体验。

本文将结合腾讯云ES与ChatGPT,演示如何通过百行代码实现AI问答。

RAG介绍

在进入正式的介绍之前,我们先来聊聊RAG,随着搜索引擎技术的不断发展,我们对于查询的需求也日益提高。传统的关键词搜索已经无法满足用户对于查询准确性和效率的要求。为此,我们引入了语义搜索技术。通过使用先进的自然语言处理(NLP)技术,语义搜索能够更好地理解用户的查询意图,并返回更相关的搜索结果。而随着机器学习技术的持续发展,特别是ChatGPT等生成式大模型的火爆,一个新的技术方向应运而生 —— RAG。

但是真正的理解什么是RAG并不容易,实现RAG就更难。现状是大多数时候用户会简单地把实现RAG理解为在企业中加入一个向量数据库。但RAG是一个复杂的概念,它不仅仅是一个向量数据库,实现RAG需要对业务场景有深入的理解,并且需要进行大量的数据处理和算法优化,用户的行为的理解和反馈也是最终效果达成的重要关键。因此,我们需要的更多地是一个解决方案,而非仅仅一个高性能的向量数据库。

一、什么是RAG

RAG是 Retrieval Augmented Generation 的缩写,意思是检索增强生成。它是一种利用大语言模型(LLM)和 Elasticsearch等搜索引擎,从海量的文本数据中检索出相关的信息,然后结合这些信息生成新的文本的方法。RAG可以用于实现多种应用,如知识问答、文本摘要、对话生成等。RAG最终效果的达到,关键在于准确的理解用户的问题,准确且丰富的上下文数据,优秀的生成式大模型,合适的prompt等。

777b85fe9aeebf40f3c74aa27b07bc56.png

图一

二、为什么要做RAG

举个列子,在官网文档上,目前的文本检索方式存在以下问题:

1、词汇不匹配(lexical mismatch):当文档和查询使用不同的词语来表达相同或相似的意思时,传统的搜索方法可能无法找到相关的文档。比如对于ELK技术栈来说,“logstash”和“ls”在语境中是一个意思,但是它们在词汇上是不同的。

219424db16026615efd7e1932b3b8918.png

图二

2、语义不匹配(semantic mismatch):当文档和查询使用相同或相似的词语来表达不同或不相关的意思时,传统的搜索方法可能会找到不相关的文档。比如,“Elastic”可以指弹性,也可以指代一家科技公司,但是它们在语义上是不同的。

3、语言不匹配(language mismatch):当文档和查询使用不同的语言时,传统的搜索方法可能无法找到相关的文档。比如,“Serverless架构”和“无服务器架构”都可以指代同一种架构,但是它们在语言上是不同的。

e950d6857708bbe16fcbba68c2ffc6ce.png

图三

因此,我们需要通过语义搜索的方式解决以上问题,找到对应的文档。但客户实际的需求可能会更复杂,客户的问题可能是:

  • ES Serverless服务如何收费?请给我一个详细的例子。

  • 如何销毁ls实例,给我具体的步骤。

在这种需要学习文档并给出指导性意见的场景中,仅仅依靠全文检索、语义搜索或混合搜索是无法达到令人满意的效果的。为了实现这一目标,我们需要结合大模型,并在企业私有数据的基础上,通过检索增强生成(RAG)来提升效率和准确性,同时给出指导性的步骤。

使用腾讯云ES进行RAG

腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。

腾讯云ES近期上线的8.8.1版本,包含了实现 RAG 所需的所有功能的综合性引擎,从向量存储和搜索到向量生成和混合搜索排序,甚至还包括了专有的向量模型

e0a200794262c20c7cc523f757faa1e8.png

图四

为了给大家展示完整的使用Elasticsearch进行RAG的过程,我们将通过腾讯云ES和ChatGPT,在腾讯云ES的官网文档实现一个案例。步骤如下:

1、创建一个ES集群,并配置相关的参数和插件。

2、收集并了解我们的数据,在本例中,腾讯云ES帮助文档将作为我们的知识库,用来研究如何通过语义搜索并结合大模型来增强。

3、处理数据,使其能进行语义搜索。使用BAAI/bge-base-zh模型将文本转换为向量,并将向量和文本一起存储到ES中。

4、使用ES提供的API或者Kibana工具来进行向量+文本的混合搜索。

5、使用大模型提供的API或者SDK来进行RAG的对话生成。

下面我们将详细介绍每个步骤的具体操作。

一、创建ES集群

在腾讯云ES 上申请 ES 8.8.1 集群。

c5ba0e59bdca47bbbc96f49def3c6655.png

图五

注意,因为部署 embedding 模型的需要,我们尽量所选足够的内存。要实现本例中的内容,建议选择配置8G及以上内存的数据节点。

二、收集并了解我们的数据

要在具体的场景下实现RAG,带给我们的第一个问题是我们要如何收集该场景下可能会用到的数据。很不幸的是,这些数据大多数时候并非是管理良好的结构化数据,比如最新的监管文档,企业内部的员工手册,传感器数据和日志,促销记录等。这些数据可能是放在wiki中,放在网盘里,发在邮件里,存在日志里,或者分散在多个不同的数据库中。如何采集它们,理解它们,并且如何将其转换为搜索比重不同的字段,就会存在很大的问题,而且是留给开发者自己处理的问题。

43d8c15006148ad9c6740dd703a44e1a.png

图六

以腾讯云ES的帮助文档为例子,文档是以 markdown 的格式存储在 github 上的。并且会随时更新。在其上做 RAG ,你需要联系对应的业务团队,获取数据的同步权限,而且还需要定期同步更新。另外,这是一个典型的半结构化数据,虽然有 HTML 和 Markdown 的标签,但实际上,每一篇文章的内容和格式是不固定的,如何提取合适的 “context window”,需要我们在搜索引擎中重新有效的组织数据。

aa7c0dcfd5f06425d08d3bacf7633865.png

图七

面对这些问题,ES提供的企业搜索功能,为我们最大程度的减少了对应的工作。从沟通,到采集,以及信息的提取,再到数据的理解。

为了减少阅读的时间,这里制作了一个短视频,方便大家快速了解,我们是如何通过爬虫,抓取页面数据的,以及抓取下来的数据,如何通过管道进行处理和清洗。具体参考如下视频演示:

如果您需要使用企业搜索功能进行数据摄入,请联系我们进行相关操作。

完成数据的采集,以及简单的处理后,我们可以直接在 Kibana 中了解我们场景中的数据:

df229eaec644ecc7bff9fae4a2401020.png

图八

可以看到,核心的内容包含在body_cotent,headings,title等三个字段中。如果要以语义搜索的方式来支持 RAG,那么,需要为这三个字段生成向量,并且需保留原始的文本字段用于页面展示引用,并发送给大模型。特别是其中的heading字段(该字段由爬虫自动生成),包含了文档中所有章节的标题。这种有效的概括和总结性的文字,特别适合在不进行chunk、不分段存储的情况下,作为文本内容的向量表示,比如:

"headings":"集群规格和容量配置评估#本页目录:#存储容量评估#计算资源评估#实例类型选择及测试#分片数量评估"

而剩余的字段中,url则可用于链接到源文档。剩下的字段均可删除。而因为是数组类型,需要转化为 text 才能被转化为向量,因此,通过以下数据管道后:

PUT _ingest/pipeline/search-tencent-es-doc@custom
{
  "version": 1,
  "description": "Enterprise Search customizable ingest pipeline for the 'search-tencent-es-doc' index",
  "processors": [
    {
      "rename": {
        "field": "doc_content",
        "target_field": "body_content",
        "ignore_missing": true
      }
    },
    {
      "join": {
        "field": "headings",
        "separator": "#"
      }
    },
    {
      "remove": {
        "keep": [
          "headings",
          "body_content",
          "url",
          "title"
        ],
        "ignore_missing": true,
        "description": "移除多余字段"
      }
    }
  ]
}

清洗后的数据为:

ef92b0b0caa99692517a608f15003cd1.png

图九

三、处理数据,使其能进行语义搜索

因为在一个 RAG 系统中,用户是通过自然语言对话的方式进行提问的,因此,检索本地数据的引擎必须支持语义搜索。通常,我们可以稀疏向量检索和密集向量检索两种方式来实现语义搜索。

ES上支持两种方式,并且为稀疏向量检索提供了ELSER专有模型。但在本例中,我们将使用密集向量检索作为演示。为此,我们先添加一个机器学习的推理管道,用于向量的生成:

1756f4b8af09e4d08ea465b150e829d0.png

图十

这里,我们使用的模型是 BAAI/bge-base-zh (但实际上,我们可以在ES中部署多个 embedding 模型,通过调试及更换模型,在不同的场景上可以获得不同的效果),该模型将输入转化为768维的向量,因此,我们需要定义一个密集向量字段,用以存储该模型生成的数据:

b1fb34d0b2797964dc5a35522a821f8b.png

图十一

最后的包含向量的数据为:

746389921844d27d9a4dae59f9d2d87a.png

图十二

四、使用ES进行向量检索+文本搜索的混合搜索

在常见的一些教程中,要进行语义搜索还需要结合Langchain等封装好的模块工具才能快速的开展语义搜索。而使用腾讯云ES,我们只需要短短几行代码就能实现。

注意,到目前为止,我们还没有写任何一行代码,所有的数据采集和清洗,以及数据的向量生成,都可以在UI界面上通过提供的工具来完成。对于一个熟练能使用ES上各种工具的程序员来说,上面的过程整体花费可能不超过30分钟。这使得我们能够更快速地进入到向量模型和大模型调试的阶段。

而在进行混合搜索的阶段,得益于 ES 将向量检索功能与原有的全文检索进行有有效的整合,整个过程也几乎不需要花费太长时间。从代码上看,写一个函数就能进行测试:

from elasticsearch import Elasticsearch




# Search ElasticSearch index and return
def search(es, index_name, embedding_model, query_text):


    source_fields = ["body_content", "url", "title"]
    query = {
        "bool": {
            "must": [{
                "match": {
                    "title": {
                        "query": query_text,
                        "boost": 1
                    }
                }
            }]
        }
    }
    knn = [{
        "field": "ml.inference.headings_embeddings.predicted_value",
        "query_vector_builder": {
            "text_embedding": {
                "model_id": embedding_model,
                "model_text": query_text
            }
        },
        "k": 5,
        "num_candidates": 10,
        "boost": 24
    }, {
        "field": "ml.inference.body_content_embeddings.predicted_value",
        "query_vector_builder": {
            "text_embedding": {
                "model_id": embedding_model,
                "model_text": query_text
            }
        },
        "k": 5,
        "num_candidates": 10,
        "boost": 24
    },
    ]
    resp = es.search(
        index= index_name,
        fields=source_fields,
        query=query,
        knn=knn,
        size=3,
        source=False)


    return resp

关于以上代码,重点需要关注的地方在于:

1、我们通常需要结合混合搜索的方式才能获得最佳效果。

2、同时,在执行向量搜索的时候,我们可以在多字段上进行向量检索。

3、而我们将 embedding_model 作为变量传入,使得我们可以在调试的过程中,选择不同的模型组合来查看语义检索的性能,看看哪些文档会被召回。

4、因为我们需要将检索出来的内容交给大模型来理解,受限于模型 token的限制,我们通常只召回1~3篇文档。这种场景下,精确率比召回率重要!

通过语义搜索,对比一下原来的全文检索,同样是搜索 “如何销毁ls节点” 我们可以查到原先无法获得的信息:

es = Elasticsearch(hosts=["https://es-7cu6zx9m.public.tencentelasticsearch.com:9200"],
                       http_auth=(username, password))
print(search(es,"moka-ai__m3e-base","如何销毁ls节点?"))
>>>>>>>>>>>>>
{'took': 79, 'timed_out': False, '_shards': {'total': 2, 'successful': 2, 'skipped': 0, 'failed': 0}, 'hits': {'total': {'value': 24, 'relation': 'eq'}, 'max_score': 47.651337, 
'hits': [{'_index': 'search-tencent-es-doc', '_id': '6542334ead3b4de80cb57864', '_score': 47.651337, 
'fields': {
'body_content': ['操作场景 当 Logstash 实例无法满足您的需求,需要退货时,您可以在 Elasticsearch Service 控制台对实例进行销毁,以避免服务继续运行而产生费用。如果是实例配置无法满足需求,您也可以通过调整实例配置把实例调整到合适的规格,详情可参见 实例扩缩容 。不同计费模式退费说明 不同计费模式下的实例,销毁实例的条件如下:预付费包年包月的实例,如果实例还未到期,需要提前销毁时,可参见 包年包月退费 。后付费按量计费的实例,根据使用量计费,可以随时销毁实例,销毁后,就不再产生费用。注意 实例被销毁后,数据无法恢复,请谨慎操作。操作步骤 1. 登录 Elasticsearch Service 控制台 ,在左侧导航栏单击 Logstash 管理 ,进入 Logstash 实例列表页。\ufeff 2. 在实例列表页,选择需要销毁的实例,选择 操作 > 更多 > 销毁 进行销毁;或单击实例 ID/名称 进入实例基本信息页,选择右上角 更多操作 > 销毁 进行销毁。\ufeff 3. 在销毁实例页面中,单击 确定 ,系统将清空实例数据,并回收资源, 数据清空后,无法恢复 。包年包月的费用退还方式,可参见 包年包月退费 。'], 
'title': ['Elasticsearch Service 销毁实例-Logstash 指南-文档中心-腾讯云'], 
'url': ['https://cloud.tencent.com/document/product/845/55114']}},

如果是搜索 “无服务器ES”,也能找到相关的结果,而不会因为语言的原因无法识别 “Serverless” 和 “无服务器” 之间的关系。

e42be97f23721624043efb79fd1faf97.png

图十三

五、使用大模型进行RAG的对话生成

但正如我们之前说的,客户实际的需求可能会更复杂,客户的问题可能是:

  • 无服务器es如何收费?请给我一个详细的例子

  • 如何销毁ls实例,给我具体的步骤

我们需要把查出来的文档交给大模型进行指导性内容的生成,受限于大模型 token的限制,我们不可能无限的把召回的内容交给大模型去理解和学习;同时,召回的不相关的文档,也可能会导致产生幻觉;而根据场景,设定良好的prompt,也是大模型能够按照我们的期望为我们提供答案的关键。因此,其实现如下:

def truncate_text(text, max_tokens):
    tokens = text.split()
    if len(tokens) <= max_tokens:
        return text
    return ' '.join(tokens[:max_tokens])
# Generate a response from ChatGPT based on the given prompt
def chat_gpt(prompt, model="gpt-3.5-turbo", max_tokens=1024, max_context_tokens=4000, safety_margin=5):
    # Truncate the prompt content to fit within the model's context length
    truncated_prompt = truncate_text(prompt, max_context_tokens - max_tokens - safety_margin)
    print(truncated_prompt)
    response = openai.ChatCompletion.create(engine="gpt-35-turbo",
                                            messages=[{"role": "system",
                                                       "content": "你现在是腾讯云Elasticsearch Service的专家."},
                                                      {"role": "user", "content": truncated_prompt}])
    return response["choices"][0]["message"]["content"]
    
negResponse = "根据检索出来的文档,我无法回答这个问题。"
resp = search(es,embedding_model,query)
retrival_result = []
for hit in resp['hits']['hits']:
    #避免产生幻觉
    if hit['score'] > 30:
        retrival_result.append(hit['fields']['body_content'][0])
# 组合召回的内容,也可以只选择 top 1        
combine_result = ";".join(retrival_results)
print(combine_result)
prompt = f"回答此问题: {query}\n 如果所提供的文档中没有答案,请回复:'{negResponse}'\n 回答时,参考来自腾讯云ES的帮助文档: {combine_result} "
answer = chat_gpt(prompt)

关于以上代码,重点需要关注的地方在于:

1、要注意大模型的限制,所以定义了 truncate_text() 函数与 max_context_tokens 等参数避免因超过token而调用失败

2、限制交给大模型的上下文信息。通过 if hit['score']>30 避免不相关的文档误导大模型的理解

3、设置合理的Prompt,让大模型理解自己的角色,以及角色该如何处理问题:

  • "role":"system","content":"你现在是腾讯云Elasticsearch Service的专家."

  • "role":"user","content":""回答此问题: {query}\n 如果所提供的文档中没有答案,请回复: '{negResponse}'\n 回答时,参考来自腾讯云ES的帮助文档: {combine_result} "

简单的运行上面的代码,我们可以得到如下结果:

8ac93d6a70cd6a50820878d66b018ff0.png

图十四

上图中,我们看到,通过提问 “无服务器es如何收费?给我一个详细的例子”,我们得到了一个详细的,由大模型生成的例子。成功实现 RAG! 结合 streamlit 等简单的 python 框架,我们可以非常轻松的构建出一个智能助手程序。

f688e4b21182e3932b8f44ca3e7fbfae.png

图十五

如果大家想体验,可以移步尝试。

总结

在本文中,我们介绍了如何通过腾讯云ES与ChatGPT 快速搭建一个检索增强的生成式人工智能助手。通过腾讯云ES的数据采集、数据清洗、数据分析等功能,以及向量生成、向量存储、向量检索等向量库的功能,再结合原有的全文检索能力,我们可以快速实现与大模型的结合,只需区区百行代码即可完成一个带用户界面的人工智能助手。

不仅仅是玩票性质的应用开发,对于规模更大的企业级生产环境来说,腾讯云ES能够带来更高的效能和更稳定的表现。多年的历程使得腾讯云ES经过了千锤百炼的考验,成为一个值得信赖的平台。

在未来,我们将继续优化腾讯云ES,以满足企业级生产环境的更多需求,并为用户提供更好的使用体验。我们将不断努力,为人工智能助手的开发和应用带来更多创新和便利。

欢迎扫码加入腾讯云ES AI增强与向量检索交流群:

4fb3bca40de80580fbd6fc3769145569.jpeg

推荐阅读

b03a49c60787e68685940ff31eca5109.jpeg

5e32488651ed9c4f516c4f74a98adc6c.jpeg

b0e064fc76d8f1fc27a218261842e00e.jpeg

关注腾讯云大数据公众号

邀您探索数据的无限可能

75183332b5aa048ebb4bde6372677b16.png

点击阅读原文,了解更多资讯

↓↓↓

【解决方案】RAG理论:ES混合搜索BM25+kNN(cosine)以及归一化 (1)ES中如何通过BM25计算关键词搜索分数; (2)kNN如何通过consine计算语义/向量搜索**最终**分数,不是直接使用consine距离; (3)**混合搜索最终得分**是如何计算的,如何进行归一化优化。 阅读详情

相关推荐

【解决方案】RAG实践:ES混合搜索BM25+kNN(cosine)

本系列分为两大部分:**实践**和**理论**。 **先讲**实践,**应对快速开发迭代**,可快速上手实践; **再讲**理论,**应对优化**,如归一化。

天然玩家的博客 3394

腾讯云ES RAG最佳实践:向量+文本混合搜索的相关性调优

‍‍| 导语腾讯云ES近期上线的8.8.1版本,提供了强大的云端AI增强能力,支持在统一技术栈中完成文本+向量的混合搜索,实现自然语言处理以及与大模型的集成,本文将从向量检索的优势与局限性介绍出发,说明混合搜索的原理、优势及其必要性,并通过效果演示为大家呈现腾讯云ES混合搜索的强大能力。引言我们在上一篇文章《腾讯云ES RAG最佳实践:百行代码轻松实现ES帮助文档的智能问答》中给大家介绍了如何通...

cloudbigdata的博客 2468

展锐双摄帧同步实战:从配置到调试的完整避坑指南

本文深入剖析了在展锐平台上实现双摄帧同步的完整流程与核心技术。详细对比了硬件帧同步与软件帧同步的差异、应用场景及核心挑战,提供了从XML配置、驱动层适配到调试验证的实战指南。重点强调了硬件帧同步必须与固定帧率强绑定这一关键避坑点,并分享了针对景深虚化等场景的同步质量验证方法及长稳测试策略。

kiwi8的博客 401

哈啰:构建智能出行RAG,ES还是向量数据库?

在2024年的Inclusion·外滩大会上,哈啰集团宣布已经构建了全面的AI布局,以迎接大模型时代的到来。如同一匹黑马,哈啰在智能时代脱颖而出,其服务版图从最初的单车扩张到如今的本地出行及生活服务平台。在技术探索的征途上,哈啰通过构建基于向量数据库的RAG(Retrieval-Augmented Generation)应用,不断强化业务效能。大模型应用,如海螺机器人、交易机器人、光子引擎、贾维斯幻视大模型平台等,均已实现落地应用,不仅能够有效提升内部效能和客户体验,也推动了整个行业的数字化转型和智能化升级

m0_59235945的博客 2360

WIN下使用visual studio 2022安装GMSSL命令行工具

2.1 使用管理员权限打开visual studio(非常重要,否则最后一步 nmake install会失败)右键vs2022,以管理员身份运行即可。2.4 配置环境变量,gmssl可执行程序默认会被安装到如下目录。将如下路径添加到系统环境变量即可。添加后的环境变量如下。2.编译解压后的gmssl源码,编译过程主要参考install.md中的内容,README.md中的步骤不完整。2.2 打开vs2022的命令终端,右键文件,选择在终端中打开。1.下载gmssl源码,解压到相应目录。

qq_45794382的博客 1269

[特殊字符]交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

🚦交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

cver123的博客 2075

Elasticsearch: 基于Text Embedding的文本相似性搜索

本文探讨了Text Embedding和ElasticSearch的向量类型如何用于支持文本相似性搜索。本文将首先概述Text embedding技术,介绍该技术的一些应用场景,最后使用ElasticSearch完成一个简单的基于Text embedding的文本相似性搜索demo。 从一开始Elasticsearch就作为全文搜索引擎提供快速而强大的全文搜索功能。在Elasticsearch 7.0中,ES引入了高维向量的字段类型,现在7.3版本支持在文档评分中使用这些向量。 相似性搜索的一个简单方法

朝闻道 3563

AI 生成 CAN 通信测试用例实战

本文分享了AI辅助汽车电子测试用例编写的实战经验。通过某车企CAN网络测试项目案例,对比传统方式(需27天)与AI辅助方式(仅5天)的效率差异,展示81%的效率提升。文章详细介绍了从DBC文件提取信号信息的方法,包括DBC文件结构解析、信号定义说明,并提供了完整的Python解析脚本代码,可将信号信息导出为JSON或Excel格式,为后续AI批量生成测试用例奠定基础。

小明的博客 693

基于ES8的RAG

RAG全称是索引增强生成(Retrieval Argumented Generation)它是使用自己的私人知识库或外部数据源来辅助文本生成的技术。RAG是将检索模型和生成模型结合到一起的一个技术。通过更多的数据源来增强对LLM的输入,RGA能提升搜索体验的相关性。在改善了LLM的输出的同时,又不需要重新训练LLM。

weixin_45352653的博客 1114

告别切换烦恼!用Parallels Desktop的Host-Only网卡,在macOS上直接访问虚拟机里的公司内网

本文详细介绍了如何在macOS上使用Parallels Desktop的Host-Only网卡直接访问虚拟机内的公司内网,告别频繁切换操作系统的烦恼。通过配置Host-Only网络模式,实现主机与虚拟机的安全高效通信,特别适合需要频繁访问内网资源的IT从业者。文章包含分步指南、自动化脚本和常见问题解决方案,帮助用户优化工作流程。

weixin_28739079的博客 363

嵌入式开发:用状态机实现STM32按键消抖,告别阻塞延时

在嵌入式系统开发中,处理异步事件和实时响应是核心挑战。状态机作为一种强大的编程模型,通过定义有限的状态、事件和状态转换规则,将复杂的、非线性的控制逻辑转化为清晰、确定且易于维护的代码结构。其技术价值在于实现逻辑的模块化、异步化和非阻塞化,能显著提升代码的可读性、可扩展性和系统实时性。这一思想广泛应用于协议解析、用户界面交互、传感器数据处理等场景。本文以嵌入式开发中基础的按键处理为例,针对传统“延时消抖”方法会阻塞主循环、影响实时性的痛点,深入讲解如何运用状态机思维重构按键消抖逻辑。通过分析状态机的核心三要素

weixin_33377602的博客 339

【原创】使用ElasticSearch存储向量实现大模型RAG

检索增强生成(Retrieval-Augmented Generation,RAG)已成为大型语言模型(LLM)应用的重要架构,通过结合外部知识库来增强模型的回答能力,特别是在处理专业领域知识、最新信息或企业私有数据时。本报告将系统梳理使用 Elasticsearch(ES)作为向量数据库实现 RAG 系统的优缺点,与传统向量数据库及其他存储解决方案的对比,以及基于 Deepseek V3 和 Qwen2.5 大模型的实现方案。多层图结构:HNSW 构建一个多层的图结构,顶层包含少量节点,底层包含所有节点。

heiyeluren的blog(黑夜路人的开源世界) 4588

sas协议(SAS PL-3)之Zoning功能

1 Zoning overview SAS zoning is implemented by a set of zoning expander devices with zoning enabled that define a zoned portion of a service delivery subsystem (ZPSDS)服务子系统. The zoning expander devices control whether a phy is permitted to participate in

sinat_37817094的博客 1530

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

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

cloudbigdata的博客 1184

FANUC机器人S523 新款PN板卡与西门子PLC通信配置介绍

FANUC机器人S523 新款PN板卡与西门子PLC通信配置介绍

Robot_PLC_HMI_Automation 354

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Elasticsearch:使用你的 RAG 来进行聊天

检索增强生成 (RAG),与你的文档聊天的超级英雄,架起信息检索和文本生成世界的桥梁!这就像福尔摩斯和莎士比亚联手解决需要大量知识的复杂任务。RAG 突然介入,从维基百科或公司知识库等外部来源获取最相关的信息,将其与输入混合,瞧!它生成带有参考的综合输出。如果你还想对 RAG 有更多的了解,请详细阅读我之前的文章 “🔍 解开 RAG:RAG 将从庞大数据库中检索信息的能力与生成类人文本的艺术无缝地结合起来。这就像图书管理员取到了合适的书,而讲故事的人则完美地讲述它!

Elastic 中国社区官方博客 1287

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Elasticsearch:评估 RAG - 指标之旅

2020年,Meta发表了一篇题为 “知识密集型NLP任务的检索增强生成” 的论文。本文介绍了一种通过利用外部数据库将语言模型 (LLM) 知识扩展到初始训练数据之外的方法。从那时起,这种方法引起了研究人员的极大关注,并且由于其巨大的好处仍然是一个突出且备受讨论的话题。这些优点包括易于更新知识数据库、使较小的模型能够在特定任务上匹配较大模型的性能、允许生成泛化到训练数据之外的领域、减少幻觉的发生等等。所有这些实验和发现总是围绕着测量模型在给定任务上的性能。

Elastic 中国社区官方博客 1428

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ES数据类型

用于存储多个JSON对象组成的数组,nested类型是object类型中的一个特例,可以让对象数组独立索引和查询。用于存储单个JSON对象,类似于JAVA中的对象类型,可以有多个值,比如LIST,可以包含多个对象。结果可以看到,这两组数据都能找出,因为每一组数据都是作为一个整体进行搜索匹配,而非具体某一条数据。对于GEO地理位置类型,分为地图Geo-point,和形状Geo-shape两种类型。数据库里的日期类型需要规范具体的传入格式,ES是可以控制,自适应处理。...

Hello World 4545

Elasticsearch 混合检索优化大模型 RAG 任务

Elastic 社区在自然语言处理上面做的很不错官方博客更新速度也很快,现阶段大模型的应用场景主要在 Rag 和 Agent 上,国内 Rag(Retrieval-Augmented Generation 检索增强生成) 的尤其多,而搜索对于 Elasticsearch 来说是强项特别是 8.9 之后的版本提供了 ESRE 模块(集成了高级相关性排序如 BM25f、强大的矢量数据库、自然语言处理技术、与第三方模型如 GPT-3 和 GPT-4 的集成,并支持开发者自定义模型与应用),经过我的各种尝试在 El

这个人很懒什么都没有~ 3562

如何使用ElasticSearch搭建LLM-RAG系统

在之前的案例视频中我们演示了使用Milvus向量数据库和腾讯向量数据库实现RAG的场景应用。今天我们演示下利用ES的向量数据存储能力来实现RAG,包括三个部分:连接ES数据库并建表;数据写入ES向量数据库流程;问答对话流程。具体操作可参照下面的视频:《玩转数据之使用ElasticSearch搭建RAG》

colorknight的专栏 2916

Elasticsearch 打造 RAG 检索增强系统

本文介绍了一个基于开源组件的本地RAG(检索增强生成)系统部署方案,使用Elasticsearch 9.3.0在Ubuntu系统上实现文本向量嵌入、混合搜索和结果重排序的全流程。系统采用Sentence-BERT生成向量,ES原生重排序功能优化结果,Llama 3 8B模型生成回答。部署过程包括:调整Ubuntu系统参数(文件描述符、虚拟内存)、安装JDK 17、配置Elasticsearch(内存设置、安全认证等)、创建专用用户启动ES服务。该方案无需高性能硬件,普通PC即可运行,所有组件均为开源免费,适

海兰 1178

Elasticsearch:智能 RAG,获取周围分块(二)

在之前的文章 “Elasticsearch:智能 RAG,获取周围分块(一)” 里,它介绍了如何实现智能 RAG,获取周围分块。在那个文章里有一个 notebook。为了方便在本地部署的开发者能够顺利的运行那里的 notebook。在本篇文章里,我来详述如何进行配置。

Elastic 中国社区官方博客 1655

使用ES和text-embedding进行模糊搜索有什么区别

使用和进行模糊搜索的主要区别在于它们的实现原理、适用场景和性能表现。

xuweilin的博客 732

【大模型 RAG技术】Elasticsearch (ES) 构建一个基于 RAG问答系统

使用预训练的模型(如 BERT 或其他语言模型)将文本数据转换为向量,并将这些向量存储在 Elasticsearch 中。然后,将这些文档作为上下文输入到生成模型中,生成相关的回答。假设你的数据是文本数据,你可以将其转换为 JSON 格式,以便存储在 Elasticsearch 中。通过以上步骤,你可以构建一个完整的 RAG 应用,利用 Elasticsearch 进行高效的语义搜索和文档检索,并结合生成模型生成相关的回答。将检索到的文档作为上下文,输入到生成模型中,生成相关的回答。

赖德发的博客 844

腾讯云ES再进化,新特性「智能搜索开发」助力LLM应用落地

与此同时,腾讯云ES本身支持常用的中文分词,如IK 分词、QQ分词,同时支持用户上传自定义插件,在内核层面,针对典型向量场景特点做了深度优化,例如分片架构优化,查询并行化,lucene查询缓存锁改造等,10亿级向量检索平均响应延迟控制在毫秒级,整体查询性能提升3 - 10倍,极大程度的提升了混合搜索的效率。更妙的是,在重排序策略上,支持权重可调RRF、归一化Score以及调用GPU Rerank模型服务,无论是关键词与语义之间的平衡,还是对可解释性、准召率要求较高的场景,都能介入调优。

cloudbigdata的博客 986

Elasticsearch 8 RAG 技术分享

本文由Elastic 中国区首席架构师 Jerry Zhu 在【AI 搜索 TechDay】上的分享整理而成。【AI 搜索 TechDay】 是 Elastic 和阿里云联合主办的 AI 技术 Meetup 系列,聚焦企业级 AI 搜索应用和开发者动手实践,旨在帮助开发者在大模型浪潮下升级 AI 搜索,助力业务增长。

Elastic 中国社区官方博客 1644
上一篇: 云上11.11 | 腾讯移动推送,1.1折秒杀,首单2.5折起,复购2.8折起,速抢!
下一篇: 腾讯云ES AI增强搜索:十分钟快速入门自然语言处理(NLP)与向量检索
腾讯云大数据
博客等级 码龄6年 348粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值