RAG 入门教程(Qwen)

本教程使用了Qwen1.5-0.5B-Chat 作为嵌入的小模型

使用 Qwen1.5-1.8B-Chat 作为推理模型

当然,你也可以使用同一个模型或是其他模型

1. 嵌入模型

构建文本嵌入的模型有很多,不同的模型适用于不同的任务和需求。在选择模型时,您应该考虑您的具体应用场景,比如处理语言的种类、任务的复杂性、以及您的系统资源。以下是一些常用于构建文本嵌入的模型类别和具体模型:

1.1. 预训练语言模型(Pre-trained Language Models)

这些模型通常基于大规模文本数据集预训练,能够捕捉丰富的语言特征。

  • BERT(Bidirectional Encoder Representations from Transformers)
    • 适用于广泛的自然语言处理任务,能够捕获上下文中的双向关系。
    • 变种包括 RoBERTa、DistilBERT、ALBERT 等。
  • GPT(Generative Pre-trained Transformer)
    • 基于 Transformer 的自回归模型,适合生成任务。
    • 各种版本如 GPT-2, GPT-3 等。
  • T5(Text-To-Text Transfer Transformer)
    • 将所有文本任务转换为文本到文本的问题。
  • XLNet
    • 结合了自回归和自编码特点,优于 BERT 的性能在某些任务上。

1.2. 句子嵌入模型(Sentence Embedding Models)

专门设计用来直接输出句子或段落级别的嵌入。

  • Sentence-BERT(SBERT)
    • 一个 BERT 的修改版本,优化了句子级别的相似性比较。
  • Universal Sentence Encoder
    • Google 开发,支持多种语言,适合大范围的任务。

1.3. 专门化嵌入模型

针对特定应用或领域优化的模型。

  • FastText
    • 由 Facebook 开发,特别适用于包括稀有词汇在内的文本处理。
  • ELMo(Embeddings from Language Models)
    • 使用双向 LSTM 网络结构,可以生成上下文相关的词嵌入。

1.4. 适应性嵌入模型

能够通过微调适应特定任务或领域的模型。

  • AdaptBERT
    • 通过对特定领域数据的微调,提高模型在该领域的性能。

1.5. 多语言和跨语言模型

支持多种语言,适合跨语言的应用。

  • mBERT(Multilingual BERT)
    • 支持多种语言的 BERT 版本。
  • XLM
    • 针对跨语言理解优化的模型。

选择模型时,除了考虑模型的性能,还需要考虑实现的复杂度、运行时的资源需求、以及是否需要支持特定的语言或领域。一般来说,预训练模型能提供良好的通用性和性能,但在特定情况下可能需要进一步的调整或优化。

2. 安装必要的库

3. 导入库

4. 加载模型

5. 加载文件

这个例子使用了保罗·格雷厄姆(Paul Graham)的文章“我做了什么”的文本。

获取它的最简单方法是通过此链接下载它并将其保存在 data 目录下,文件名为:paul_graham_essay.txt

里面的 1000, 可以修改为更大的值,比如10000,这样内容可能更精确,当然取得内容的大小,可能影响推理的输入长度。

6. 创建FAISS索引,并产生提问

对于英文文档,应该以英文提示,中文文档以中文提示。

如果应中文提示英文的文档,需要把嵌入修改一下

对于英文文档,如果需要中文回答,可以在后面强制要求:

你希望检索的相关文档数量,通过设置 k 来实现

下面是输出的结果:

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部