从头到尾的先进RAG项目,使用Groq技术及开源大型语言模型。
2024/10/8 21:03:04
本文主要是介绍从头到尾的先进RAG项目,使用Groq技术及开源大型语言模型。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
这篇博客文章介绍了如何利用Groq,一个非常强大的开源推理引擎,来创建一个基于RAG(检索增强生成)的问答系统。我们还将使用开源的大型语言模型(LLMs)来处理和回答用户的问题。
为什么选Groq?为大规模语言模型提供卓越性能 🤔Groq 是一家领先的 AI 基础设施公司,专注于开发世界上最快的 AI 推理技术。他们的 LPU™(语言处理单元(LPU™))推理引擎是一款专为卓越的计算速度、高质量和能效设计的软硬件平台。Groq 的独特之处在于:
- 卓越的速度针对大语言模型: LPU解决了大语言模型面临的两大瓶颈:计算密度和内存带宽。它在处理大语言模型时,提供了更强大的计算能力。这使得单个词的处理速度更快,生成文本序列的速度显著提高。
- 消除内存瓶颈: 传统的GPU依赖外部内存,为大语言模型制造了瓶颈。LPU解决了这个问题,性能提高了几个数量级,优于GPU。
LPU™ 推理引擎是一款专为语言处理任务设计的软硬件平台。与擅长并行计算的GPU不同,LPU 更侧重于顺序处理,使其成为像 LLM 推理这样需要序列生成的任务的理想选择,其中序列生成尤为重要。
Groq的开发者友好程度 👉Groq提供了多种途径开始使用并集成他们的技术。
- 自助服务平台: 开发者可以通过GroqCloud上的Playground完全独立地自助访问。该平台提供API密钥、文档以及使用条款。您还可以加入他们的Discord社区以进行进一步的交流。
- 轻松迁移至OpenAI API: 如果您已经在使用OpenAI的API,迁移到Groq只需三步即可。
Groq Engine 中可用的大型语言模型Groq API密钥
网址
模型名
Groq 通过其 API 提供了一系列预训练的大型语言模型(LLM)的访问权限。虽然这些具体的模型可能会随着时间而有所变化,但以下是一些当前可用的示例(截至 2024 年 5 月 27 日的)。
- Gemma-7b-It: 一个具有70亿参数的大语言模型,训练数据包括大量的文本和代码。
- Llama3–70b-8192: 一个具有70亿参数的事实型语言模型,专注于提供详尽和全面的答案。
- Llama3–8b-8192: 一个较小的Llama3版本,具有8亿参数,在性能和资源效率之间找到平衡。
- Mixtral-8x7b-32768: 一个专门为问答任务设计的大语言模型,具有87亿参数。(这是代码示例中使用的模型)
- 环境配置和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基于给定的文档内容来回答用户的问题。
最后呢,我们创建了两个这样的重要链条:
- _documentchain: 准备好了文档和提示给LLM。
- _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技术及开源大型语言模型。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15Tailwind开发入门教程:从零开始搭建第一个项目
- 2024-11-14Emotion教程:新手入门必备指南
- 2024-11-14音频生成的秘密武器:扩散模型在音乐创作中的应用
- 2024-11-14从数据科学家到AI开发者:2023年构建生成式AI网站应用的经验谈
- 2024-11-14基于AI的智能调试助手创业点子:用代码样例打造你的调试神器!
- 2024-11-14受控组件学习:从入门到初步掌握
- 2024-11-14Emotion学习入门指南
- 2024-11-14Emotion学习入门指南
- 2024-11-14获取参数学习:初学者指南
- 2024-11-14受控组件学习:从入门到实践