人工智能学习

从头到尾的先进RAG项目,使用Groq技术及开源大型语言模型。

本文主要是介绍从头到尾的先进RAG项目,使用Groq技术及开源大型语言模型。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

这篇博客文章介绍了如何利用Groq,一个非常强大的开源推理引擎,来创建一个基于RAG(检索增强生成)的问答系统。我们还将使用开源的大型语言模型(LLMs)来处理和回答用户的问题。

为什么选Groq?为大规模语言模型提供卓越性能 🤔

Groq 是一家领先的 AI 基础设施公司,专注于开发世界上最快的 AI 推理技术。他们的 LPU™(语言处理单元(LPU™))推理引擎是一款专为卓越的计算速度、高质量和能效设计的软硬件平台。Groq 的独特之处在于:

  • 卓越的速度针对大语言模型: LPU解决了大语言模型面临的两大瓶颈:计算密度和内存带宽。它在处理大语言模型时,提供了更强大的计算能力。这使得单个词的处理速度更快,生成文本序列的速度显著提高。
  • 消除内存瓶颈: 传统的GPU依赖外部内存,为大语言模型制造了瓶颈。LPU解决了这个问题,性能提高了几个数量级,优于GPU。
LPU™ 推理引擎是什么?🤔

LPU™ 推理引擎是一款专为语言处理任务设计的软硬件平台。与擅长并行计算的GPU不同,LPU 更侧重于顺序处理,使其成为像 LLM 推理这样需要序列生成的任务的理想选择,其中序列生成尤为重要。

Groq的开发者友好程度 👉

Groq提供了多种途径开始使用并集成他们的技术。

  • 自助服务平台: 开发者可以通过GroqCloud上的Playground完全独立地自助访问。该平台提供API密钥、文档以及使用条款。您还可以加入他们的Discord社区以进行进一步的交流。
  • 轻松迁移至OpenAI API: 如果您已经在使用OpenAI的API,迁移到Groq只需三步即可。

Groq API密钥

网址

模型名

Groq Engine 中可用的大型语言模型

Groq 通过其 API 提供了一系列预训练的大型语言模型(LLM)的访问权限。虽然这些具体的模型可能会随着时间而有所变化,但以下是一些当前可用的示例(截至 2024 年 5 月 27 日的)。

  • Gemma-7b-It: 一个具有70亿参数的大语言模型,训练数据包括大量的文本和代码。
  • Llama3–70b-8192: 一个具有70亿参数的事实型语言模型,专注于提供详尽和全面的答案。
  • Llama3–8b-8192: 一个较小的Llama3版本,具有8亿参数,在性能和资源效率之间找到平衡。
  • Mixtral-8x7b-32768: 一个专门为问答任务设计的大语言模型,具有87亿参数。(这是代码示例中使用的模型)
项目的流程以及代码的实现
  1. 环境配置和Groq API密钥配置
     import streamlit as st  
    import os  
    from langchain_groq import ChatGroq  
    from langchain_community.document_loaders import WebBaseLoader  
    from langchain.embeddings import OllamaEmbeddings  
    from langchain.text_splitter import RecursiveCharacterTextSplitter  
    from langchain.chains.combine_documents import create_stuff_documents_chain  
    from langchain_core.prompts import ChatPromptTemplate  
    from langchain.chains import create_retrieval_chain  
    from langchain_community.vectorstores import FAISS  
    import time  
    from dotenv import load_dotenv  
    load_dotenv()  
    ## 加载Groq API密钥  
    groq_api_key = os.environ['GROQ_API_KEY']

这段代码导入了所需的库,并从环境变量中获取您的Groq API密钥(API key)。您可以通过遵循以下步骤免费获取Groq API密钥。

  • 前往GroqCloud: 访问Groq平台。
  • 探索Playground: 点击“Playground on GroqCloud”以访问一个自助开发区。在这里,您可以尝试Groq的功能并获取您的API密钥。
  • 创建您的API密钥: 进入Playground后,点击“API密钥”标签页。在这里,您会找到“创建API密钥”的选项。按照屏幕提示生成您的API密钥。

第二. 数据加载及预处理

这一部分侧重于使用WebBaseLoader从网站加载文档。然后,将文档拆分成更小的片段以便处理,并创建向量嵌入以高效地根据文档的意义进行比较,从而提高效率。

如果没有 'vector' 在 st.session_state 中:  
  st.session_state.embeddings=OllamaEmbeddings()  
  st.session_state.loader=WebBaseLoader("https://docs.smith.langchain.com/")  
  st.session_state.docs=st.session_state.loader.load()  
  st.session_state.text_splitter=RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)   
  st.session_state.final_documents=st.session_state.text_splitter.split_documents(st.session_state.docs[:50])   
  st.session_state.vectors=FAISS.from_documents(st.session_state.final_documents,st.session_state.embeddings)

3. 大型语言模型集成与Prompt设计

在这里,我们使用ChatGroq类,以及您的Groq API密钥来创建一个LLM实例。指定的模型名称(“mixtral-8x7b-32768”)是Groq引擎中可用选项之一。

我们接着用ChatPromptTemplate类定义一个提示。这个提示让LLM基于给定的文档内容来回答用户的问题。

最后呢,我们创建了两个这样的重要链条:

  1. _documentchain: 准备好了文档和提示给LLM。
  2. _retrievalchain: 这个链把通过向量嵌入进行文档检索的步骤和LLM处理文档的过程结合了起来。
    st.title("ChatGroq 演示")  
    llm=ChatGroq(groq_api_key=groq_api_key,  
    model_name="mixtral-8x7b-32768")  
    prompt=ChatPromptTemplate.from_template(  
    """  
    仅根据提供的上下文回答问题。  
    请根据问题提供最准确的回答  
    <context>  
    {context}  
    </context>  
    问题:{input}  
    """  
    )  
    document_chain = create_stuff_documents_chain(llm, prompt)  
    retriever = st.session_state.vectors.as_retriever()  
    retrieval_chain = create_retrieval_chain(retriever, document_chain)

4. 用户输入及响应生成

prompt=st.text_input("在此输入您的提示")
if prompt:
    start=time.process_time()
    response=retrieval_chain.invoke({"input":prompt})
    print("响应时间:", time.process_time()-start)
    st.write(response['answer'])

    # 使用 Streamlit 展开器
    with st.expander("文档相似性搜索"):
        # 查找相关的内容
        for i, doc in enumerate(response['context']):
            st.write(doc.page_content)
结论部分

使用了Groq技术的网页

响应时间:0.09375,这里响应速度挺快的。

这篇关于从头到尾的先进RAG项目,使用Groq技术及开源大型语言模型。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!