Qwen RAG LangChain 精选:2024 AI技术榜单推荐

2026-06-22阅读 0热度 0
ai 人工智能

在人工智能时代,从海量数据中高效提取有价值的信息已成为企业与个人必须攻克的核心命题。检索增强生成(RAG)正是为此诞生的关键技术——它将生成式AI与实时信息检索深度融合,使系统既能生成流畅文本,又能精准引用外部知识。这种融合带来的结果是:回复既富含上下文,又具备可验证的准确性。

在深入探讨这项技术之前,先明确这条船上的三大支柱:生成式AI、大型语言模型(LLM)、LangChain、HuggingFace,以及今天的主角——RAG。

大型语言模型与生成式AI:创新的双引擎

整个旅程的起点,是我们熟悉的LLM和生成式AI——它们就像推动创新之船前进的两个强大引擎。

大型语言模型(LLM)

LLM(例如Qwen、GPT系列)无疑是文本处理领域的巨人。它们在海量文本数据上完成训练,能大规模理解并生成与人类语言无异的文本。从翻译、内容创作到问答系统,它们都是背后的核心支撑。

生成式AI(GenAI)

生成式AI则像是AI世界里的创造天才,能生成与训练数据相似的全新数据实例——图像、音乐,当然还有我们最关心的文本。在我们讨论的语境下,生成式AI代表一种能力:不仅复现已知模式,更能创造前所未有、内容丰富且信息量大的回应。它让AI从单纯的模仿者,变成一个能发明和创新的参与者。

LangChain:编排AI应用的架构师

LangChain的角色好比AI工作流的总设计师,精心设计了各AI组件之间无缝集成和交互的框架。有了它,我们不再需要手动处理连接LLM、检索系统等复杂模块的繁琐过程,信息提取和自然语言理解等任务也变得更加简单。

Hugging Face:AI模型的集市

Hugging Face是一个令人兴奋的生态系统,众多AI模型在这里蓬勃发展。它就像一个巨大的“AI模型商店”,为我们提供海量预训练模型。你只需一个Hugging Face账号,就能访问这个资源宝库,开启AI之旅。

RAG:借助向量数据库加速智能

RAG(检索增强生成)是一种精妙的技术,它将生成式AI的创造力与知识检索的精确性合二为一,打造出一个既清晰又信息丰富的系统。为了释放RAG的全部潜力,系统通常会集成向量数据库——一个能高效筛选海量信息的强大工具。下面是RAG与向量数据库协作的具体流程:

  1. 使用向量数据库进行检索:RAG首先查询一个向量数据库,里面存放着海量信息的向量化表示。这些向量本质上是高维的数字编码,捕获了文档或数据片段的语义特征。向量数据库能进行闪电般的相似性搜索,精准定位与查询最相关的内容——就像AI快速穿越数字图书馆,找到最合适的那本书。

  2. 上下文增强:从向量数据库中检索到的相关信息被作为上下文提供给生成模型。这一步为AI提供了精准的知识,让它在回答时既有创造力,又充满上下文细节。

  3. 生成知情响应:有了这些上下文,生成模型便开始工作。与单纯依赖学习模式的传统模型不同,RAG会将检索到的数据细节编织到输出中,让结果既富有想象力,又扎根于真实知识。这使得生成的内容更准确、信息更丰富,也更符合实际背景。

向量数据库的引入是RAG效率提升的关键。传统的元数据搜索方法往往又慢又不精准,而向量数据库能实现近乎实时的上下文检索,即使面对海量数据集也能快速响应。这不仅节省了宝贵时间,更确保了AI的回复始终基于最合适、最新的信息。

RAG的优势在聊天机器人、数字助理、复杂研究工具等应用中尤为突出。在这些场景中,提供精准、可靠、有上下文支撑的信息至关重要。RAG的最终目标不是生成听起来令人信服的回复,而是生产出以可验证数据和真实世界知识为基础的内容。

现在,我们对LangChain、Hugging Face、LLM、GenAI以及向量数据库增强型RAG有了清晰了解。是时候动手编码,把这些技术变为现实了。接下来的Python脚本将展示这些元素如何协同工作,打造一个既能创造性地回答问题,又能基于深度理解做出响应的AI系统。

开始编码之旅

开始之前:要点

在正式开始前,先确认一下准备工作是否到位:

  • Linux服务器:最好配备GPU卡——毕竟速度是关键。

  • Python 3.6+:编程的魔法棒。

  • pip 或 Anaconda:贴心的包管理器。

  • 若使用GPU:NVIDIA驱动、CUDA Toolkit 和 cuDNN——GPU加速的三位一体。

准备好了?那么让我们开始动手(当然是比喻性的)。

运行代码

先管理好Python依赖项,确保你的AI项目建立在稳定可靠的基础上。依赖项和环境设置妥当后,就能运行脚本,亲眼见证RAG和LangChain的强大之处。

设置阶段:导入库与加载变量

在使用LangChain框架和Hugging Face的Transformers库开始探索AI之前,建立一个安全且配置良好的环境至关重要。这一步包括导入必要的库,并通过环境变量妥善管理敏感信息(如API密钥)。

from torch import cuda
from langchain_community.vectorstores import FAISS
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_community.embeddings.huggingface import HuggingFaceEmbeddings
from transformers import AutoModelForCausalLM, AutoTokenizer
from langchain_community.llms.huggingface_pipeline import HuggingFacePipeline
from transformers import pipeline
from dotenv import load_dotenv

load_dotenv()

使用Hugging Face的AI模型时,通常需要访问其API,这需要一个API密钥。它是在请求时识别你身份的凭证,让你能够加载模型并在应用中使用它们。

以下是安全设置环境的步骤:

  1. 获取API密钥:创建Hugging Face账号后,在“访问令牌”部分的账户设置中找到它。

  2. 保护API密钥:这是敏感信息,应严格保密。不要硬编码在脚本里,而是使用环境变量。

  3. 创建.env文件:创建一个名为.env的文件,用于存储环境变量。

  4. 添加API密钥:用文本编辑器打开.env文件,按以下格式添加密钥:

HUGGINGFACE_API_KEY=your_api_key_here

your_api_key_here替换成你从Hugging Face获取的实际密钥。

定义模型路径与配置

modelPath = "sentence-transformers/all-mpnet-base-v2"
device = 'cuda' if cuda.is_a vailable() else 'cpu'
model_kwargs = {'device': device}

这里设置了用于嵌入的预训练模型路径,并配置了设备:如果GPU可用则使用GPU加速,否则默认使用CPU。

初始化HuggingFace嵌入与FAISS向量存储

embeddings = HuggingFaceEmbeddings(
    model_name=modelPath,
    model_kwargs=model_kwargs,
)

# 假设的示例数据
vectorstore = FAISS.from_texts(
    ["Harrison worked at Alibaba Cloud"], embedding=embeddings
)

retriever = vectorstore.as_retriever()

这里初始化了HuggingFaceEmbeddings实例,并用FAISS创建了一个向量库(用于高效的高维相似性搜索),最后实例化了一个检索器。

设置聊天提示模板

template = """Answer the question based only on the following context:
{context}
Question: {question}
"""

prompt = ChatPromptTemplate.from_template(template)

这个提示模板定义了与AI交互的结构:包含上下文和问题的占位符,在链执行时会动态填充。

准备分词器与语言模型

在NLP世界里,分词器和语言模型是一对默契搭档。分词器将文本分解成模型可理解的片段,语言模型则基于这些输入进行预测和生成。这里我们使用Hugging Face的AutoTokenizerAutoModelForCausalLM类。不过,选择语言模型时,并非“一刀切”。

模型大小与计算资源

模型大小很关键。像Qwen-72B这样的大模型参数更多,通常能理解和生成更微妙的文本,但对计算资源要求也更高。如果你拥有高端GPU和充足内存,选择大模型能充分发挥其能力。而像Qwen-1.8B这样的小模型,对标准计算环境更友好,甚至可能运行在物联网或移动设备上。虽然无法完全媲美大模型的复杂性,但依然能提供出色的性能。

特定任务模型

任务性质也很重要。如果你正在构建对话式AI,使用针对聊天微调的模型(如Qwen-7B-Chat)可能会产生更好的效果,因为它们更擅长处理对话中的细微差别。

推理成本

大模型不仅硬件要求高,如果使用基于云的服务,推理成本也会更高。每个推理都消耗处理时间,大模型成本会随之增长。

Qwen系列概览

  • Qwen-1.8B:适合计算能力有限的场景,可用于原型设计和在没有强大GPU的机器上运行。
  • Qwen-7B:中型模型,在性能和计算需求间取得平衡。
  • Qwen-14B:更大的模型,能处理更复杂的任务,语言理解和生成能力更强。
  • Qwen-72B:系列最大,提供最先进的性能,适合需要深度语言理解的应用。
  • Qwen-1.8B-Chat:对话模型,专为聊天机器人设计。
  • Qwen-7B-Chat:类似但处理更复杂对话的能力更强。
  • Qwen-14B-Chat:高端的对话模型,能进行复杂交互。
  • Qwen-72B-Chat:系列最先进的对话模型,为要求苛刻的聊天应用提供卓越性能。

如何选择

决定使用哪种模型时,需要权衡大模型的优势与你的可用资源。如果刚开始或规模较小,小模型可能是最佳选择。随着需求增长,再考虑升级。请记住,Qwen系列是开源的,你可以尝试不同的模型找到最适合项目的那个。以下是模型选择部分的示例:

tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-7B", trust_remote_code=True)
model_name_or_path = "Qwen/Qwen-7B"
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, device_map="auto", trust_remote_code=True)

创建文本生成管道

pipe = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    max_new_tokens=8192,
    do_sample=True,
    temperature=0.7,
    top_p=0.95,
    top_k=40,
    repetition_penalty=1.1
)

hf = HuggingFacePipeline(pipeline=pipe)

参数说明

  • max_new_tokens(8192):输出中可生成的最大token数。
  • do_sample(True):启用概率采样,引入随机性和多样性;若为False则总是选择最可能的token,输出更确定。
  • temperature(0.7):控制采样过程中的随机程度。低温度让模型更自信,输出更集中;高温度鼓励更多多样性。
  • top_p(0.95):核采样参数,只考虑累积概率超过阈值的token,兼顾多样性和连贯性。
  • top_k(40):只从前k个最可能的token中采样,进一步控制输出质量和相关性。
  • repetition_penalty(1.1):惩罚重复的token,鼓励生成更多样化的文本。

管道设置好后,通过hf = HuggingFacePipeline(pipeline=pipe)将其包装为LangChain框架的组件,以便与检索器和解析器结合使用,构建更复杂的AI系统。

通过精心调整这些参数,你可以微调文本生成的行为,以满足应用的具体需求——无论是追求更多创意和多样性,还是更连贯和集中的输出。

构建并运行RAG链

chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | hf
    | StrOutputParser()
)

results = chain.invoke("Where did Harrison work?")
print(results)
  1. 链结构retriever根据问题获取相关信息,RunnablePassthrough()直接传递问题,然后通过prompt格式化,输入到hf(Hugging Face管道),最后由StrOutputParser()将原始输出解析为友好格式。
  2. 链调用chain.invoke(...)触发整个操作流程:检索信息、格式化输入、生成响应、解析输出。
  3. 打印结果:最终结果被打印出来,这就是RAG系统给出的回答。

结论:踏入AI世界的大门

通过RAG与LangChain,你已经向AI世界迈出了坚实的一步。理解并运行这些代码,意味着你释放了创建智能系统的潜力——这些系统能够以前所未有的方式推理并与信息交互。这不仅仅是一次技术实践,更是开启新可能性的钥匙。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策