4.1 接入Langchain
首先我们导入所有需要的库文件
import google.generativeai as genai
import os
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain.prompts import PromptTemplate
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
import sys
from langchain.vectorstores.chroma import Chroma
import gradio as gr
我们使用langchain_google_genai中的ChatGoogleGenerativeAI导入模型另外Langchain现在还没有把genai并入所有要想安装相应的包还需要运行
!pip install -U langchain-google-genai
另外出来使用 API 密钥设置 GOOGLE_API_KEY 的环境变量
你还可以显式的使用 google_api_key kwarg 将您的 API 密钥传递给 ChatGoogle 构造函数
llm = ChatGoogleGenerativeAI(model="gemini-pro",google_api_key=api_key)
# 这里换成自己的代理端口
os.environ['http_proxy'] = 'http://127.0.0.1:10809'
os.environ['https_proxy'] = 'http://127.0.0.1:10809'
GOOGLE_API_KEY="AIzaSyBZFSrCWg7Ow2D3I2rMbf37qXp1SlF9T5k"
os.environ["GOOGLE_API_KEY"] =GOOGLE_API_KEY
llm = ChatGoogleGenerativeAI(model="gemini-pro")
result = llm.invoke("Write a ballad about LangChain")
print(type(result))
print(result.content)
下面的图片是相应的结果
4.2 向量库的搭建
4.2.1 加载向量数据库
path = '输入自己的持久化向量库的位置记得改'
embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001",task_type="retrieval_document")
vectordb=Chroma(
persist_directory=path,
embedding_function=embeddings
)
print(f"向量库中存储的数量:{vectordb._collection.count()}")
question = "什么是prompt engineering?"
docs = vectordb.similarity_search(question,k=3)
print(f"检索到的内容数:{len(docs)}")
for i, doc in enumerate(docs):
print(f"检索到的第{i}个内容: \n {doc.page_content}", end="\n-----------------------------------------------------\n")
下面是导入我的向量库的结果
4.2.2 构建检索问答链
PromptTemplate函数是Langchain官方提供语言模型的提示模板,提示模板由字符串模板组成。它接受来自用户的一组参数,这些参数可用于生成语言模型的提示,而且可以使用f-strings(默认)或 jinja2 语法对模板进行格式化。下面的Code中的{context}和{input}就是相应的需要输入的参数。然后使用from_template把我们预定义的模板template转换成PromptTemplate对象。接着我们使用create_stuff_documents_chain函数去创建一个链用于讲输入的
这样我们就构建好了检索问答链retrieval_chain
template = """
You are a helpful AI assistant.
Answer based on the context provided.
context: {context}
input: {input}
answer:
"""
retriever=vectordb.as_retriever()
prompt = PromptTemplate.from_template(template)
combine_docs_chain = create_stuff_documents_chain(llm, prompt)
retrieval_chain = create_retrieval_chain(retriever, combine_docs_chain)
标签:RAG,google,chain,langchain,API,构建,LLM,import,genai
From: https://www.cnblogs.com/zzddkkhome/p/18154461