什么是RAG?

RAG 是 "Retrieval-Augmented Generation" 的缩写,这是一种结合信息检索和生成模型的自然语言处理技术。RAG 模型通常用于提高生成模型在特定任务(如问答、对话生成等)中的性能。

1.大模型的缺陷

知识局限性:缺少垂直领域/非公开知识

知识时效性:训练周期长,成本高

幻觉问题:模型生成的内容与现实世界事实或用户输入不一致

2.RAG系统工作流程图解:

3.向量检索

3.1 检索的方式

1.关键字搜索:通过用户输入的关键字来查找文本数据。

2.语义搜索:不仅考虑关键字的匹配,还考虑词汇之间的语义(文字,语音,语词...)关系,以提供更精准的搜索。

3.2向量与Embeddings(嵌入)的定义

1.向量:向量是一个具有大小和方向的数学对象,通常被表示为有序的数值列表。向量可以存在于任意维度中.

2.Embeddings(嵌入):嵌入是将高维数据映射到低维空间的技术,通常用于捕捉数据中的潜在关系和语义信息。嵌入在自然语言处理中特别常见,用于将单词、句子或其他离散数据表示为向量。

- 词嵌入(Word Embeddings):如Word2Vec、GloVe等模型,将单词转换为固定长度的向量,使得语义相似的单词在向量空间中彼此接近。这有助于在机器学习模型中进行文本分析和理解。

- 图像嵌入(Image Embeddings):在计算机视觉中,图像可以被转换为向量表示,以便进行分类和识别等任务。

嵌入的主要优点是能有效压缩数据维度,同时保留重要的结构和语义信息。通过这种方式,模型可以更好地理解和处理复杂的数据。

from openai import OpenAI
import os

api_key=os.getenv("OPENAI_API_KEY")

client=OpenAI(api_key=api_key)

# 参数一 =》 texts 是一个包含要获取嵌入表示的文本列表
# 参数二 =》 model 则是用来指定要使用的模型的名称

def get_embeddings(texts,model="text-embedding-3-large"):
    # 创建一个嵌入向量,结果存储在data中
    data =client.embeddings.create(input=texts,model=model).data
    # 列表推导式
    return [x.embedding for x in data]

if __name__ == '__main__':
    test_query=["我爱你"]
    vec=get_embeddings(test_query)
    print("--------------------")
    # "我爱你"文本嵌入表示的列表。
    print(vec)
    # "我爱你" 文本的嵌入表示
    print(vec[0])
    # "我爱你" 文本的嵌入表示的维度=3072
    print(len(vec[0]))

3.3向量间的相似的计算

1.欧式距离

2.余弦距离

### RAG框架概念 检索增强生成(Retrieval-Augmented Generation, RAG)是一种结合了传统信息检索技术和现代自然语言处理中的生成模型的方法。这种方法允许机器学习系统不仅依赖于训练数据内部的知识,还能动态访问外部知识源,在面对新问题时获取最新、最准确的信息[^4]。 RAG 技术特别适用于那些需要持续更新或扩展背景资料的任务场景,比如问答系统、对话代理以及文档摘要等应用。通过引入外部资源作为补充材料,可以有效地减少由纯神经网络预测带来的不确定性——即所谓的“幻觉”现象,从而提高输出内容的真实性和可靠性。 ### 开源实现汇总 #### 1. **RAGFlow** 作为一个新兴的开源项目,RAGFlow 致力于简化基于 RAG 架构的应用开发过程。此工具包提供了多个预先配置好的模块和支持自动化的工作流设计,使得开发者能够更便捷地集成各种类型的数据库和服务接口,进而加速原型搭建和技术验证的速度[^2]。 - 显著特性: - 提供了一套完整的预构建组件; - 支持多种主流的数据存储方案; - 集成了先进的索引机制以优化查询效率; ```python from ragflow import PipelineBuilder pipeline = PipelineBuilder().add_retriever('elasticsearch').add_generator('transformers') ``` #### 2. **基于ChatGLM 和LangChain 实现的大规模离线部署方案** 这类解决方案专注于为企业级用户提供安全可控且高效的本地化部署选项。借助强大的中文理解能力(如 ChatGLM),再加上灵活易用的应用编程接口(APIs),这套组合拳可以在不连接互联网的情况下完成复杂的语义理解和响应生成任务[^3]。 ```bash git clone https://github.com/your-repo/chatglm-langchain.git cd chatglm-langchain pip install -r requirements.txt python app.py ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值