Gemma 2 :使用 Ollama 或 Hugginface 构建 RAG(检索增强生成)管道。了解高级 RAG、部署策略。
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1em;letter-spacing: 0.1em;color: rgb(80, 80, 80);"> Hi,这里是Aitrainee,欢迎阅读本期新文章。 没错,这两天关于Gemma2 9B、27B开源的消息又刷屏了,如果你还不知道的话,可以搜搜看看,还是挺不错的。 
▲从这组官方的对比数据看出,能力已经力压llama3,甚至gemma:27b的能力也接近了llama3 70b,看来模型真的是在往小了发展,越来越接地气,我们老百姓的普通电脑配置也能跑起来! 既然老百姓的普通电脑都能跑了(9B),那我们就介绍使用 Gemma 2 构建 RAG的全过程: ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.1em;font-weight: bold;margin-top: 2em;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(0, 152, 116);color: rgb(63, 63, 63);">步骤一:下载和安装Gemma 2ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">首先,您需要在本地计算机上安装Ollama,这是一个终端应用程序,可以帮助您下载大型语言模型,例如Gemma 2。只需打开终端,复制并粘贴以下命令即可:ollama run gemma2。这将把模型下载到你的计算机上。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">我已经完成了这一步,现在我们继续在代码编辑器中安装必要的包。#要下载的软件包列表
```python #安装所需的软件包 #!pipinstalltransformers #!pipinstalllangchain-chroma #!pipinstalllangchain #!pipinstalllangchain_community #!pipinstalllangchainhub #pipinstalllangchain-huggingface #pipinstall--upgrade--quietlangchainsentence_transformers #!pipinstall-U"huggingface_hub[cli]" #!huggingface-clilogin ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.1em;font-weight: bold;margin-top: 2em;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(0, 152, 116);color: rgb(63, 63, 63);">步骤二:加载和转换数据接下来,我们将从一个网站加载数据,这里选择了关于LeBron James的网站。尽管有观众在我之前的视频中表示偏好其他球员,但我选择这个网站是因为它包含了复杂的数据,能够很好地测试模型的性能。我们将使用一个网络数据加载器来加载数据,并将其转换为一个名为Chroma DB的向量数据库。  ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;margin: 10px 8px;">fromlangchain_community.document_loadersimportWebBaseLoader
#加载数据 loader=WebBaseLoader("https://www.nba.com/player/2544/lebron-james") data=loader.load() data
 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 2em auto 1em;padding-right: 1em;padding-left: 1em;border-bottom: 2px solid rgb(0, 152, 116);color: rgb(63, 63, 63);">将数据转换为向量数据库ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;margin: 10px 8px;">fromlangchain.vectorstoresimportChroma fromlangchain_huggingfaceimportHuggingFaceEmbeddings
#使用HuggingFace的嵌入模型 embeddings_model=HuggingFaceEmbeddings()#例如sentence-transformers/all-mpnet-base-v2
#创建Chroma向量数据库 vectorstore=Chroma.from_documents(documents=data,embedding=embeddings_model,persist_directory="./chroma_db") ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.1em;font-weight: bold;margin-top: 2em;margin-right: 8px;margin-bottom: 0.75em;padding-left: 8px;border-left: 3px solid rgb(0, 152, 116);color: rgb(63, 63, 63);">步骤三:构建RAG管道在这个步骤中,我们将导入所需的各种包,如chatolama、output parser、chat prompt等,并导入Transformers包。接着,使用chatolama加载Gemma 2模型,并从Lang chain Hub导入一个RAG prompt。我们会创建一个QA链,传入我们选择的LLM(Gemma 2)、检索器和RAG prompt,然后运行这个链,传入问题并检视结果。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;overflow-x: auto;border-radius: 8px;margin: 10px 8px;">fromlangchain_community.chat_modelsimportChatOllama fromlangchain_core.output_parsersimportStrOutputParser fromlangchain_core.promptsimportChatPromptTemplate fromlangchain.chainsimportRetrievalQA fromlangchainimporthub fromlangchain_huggingface.llmsimportHuggingFacePipeline fromtransformersimportAutoModelForCausalLM,AutoTokenizer,pipeline
#使用ChatOllama模型 llm=ChatOllama(model="gemma2")
#拉取RAG提示模板 prompt=hub.pull("rlm/rag-prompt")
#使用向量数据库创建检索器 vectorstore=Chroma(persist_directory="./chroma_db",embedding_function=HuggingFaceEmbeddings())
#创建RetrievalQA链 qa_chain=RetrievalQA.from_chain_type( llm, retriever=vectorstore.as_retriever(), chain_type_kwargs={"prompt":prompt} )
#提问并获取结果 question="这些统计数据属于谁?" result=qa_chain({"query":question})
#输出结果 print(result["result"])
以上代码包含了所有步骤,从安装软件包、加载数据、创建向量数据库到创建 RAG 管道,并最终进行问答。
|