こんにちは。今回はKrishakさんの動画を参考に、OpenAIの最新モデルであるGPT-4oと、オープンソースのベクターデータベースであるObjectBoxを使用して、エンドツーエンドのRAG(リトリーバル・オーグメンテッド・ジェネレーション)アプリケーションを構築する方法を紹介します。
概要
このチュートリアルでは、以下のステップに従ってRAGアプリケーションを構築します。
Google Colaboで試してみました。
- 環境変数の設定
- ドキュメントのロードとチャンクへの分割
- テキストをベクターに変換し、ベクターデータベースに保存
- クエリと応答生成のためのRAGパイプラインの構築
1. 環境変数の設定
OpenAI APIキーなどの環境変数をロードします。
import os
from google.colab import userdata
# 環境変数にAPIキーを設定
os.environ["OPENAI_API_KEY"] = userdata.get('OPENAI_API_KEY')
ご自身の環境にあわせてAPI_KEYを設定する実装にしてください。
必要なモジュールをインストールします。
!pip install langchain_community
!pip install langchain_objectbox
!pip install langchainhub
!pip install langchain_openai
2. ドキュメントのロードとチャンクへの分割
次に、Webサイトのコンテンツを読み込み、ドキュメントローダーを使用してドキュメントを取得します。その後、ドキュメントをチャンクに分割します。
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://docs.smith.langchain.com/user_guide")
data = loader.load()
data
3. テキストをベクターに変換し、ベクターデータベースに保存
取得したドキュメントをOpenAIの埋め込みを使用してベクターに変換し、ObjectBoxベクターデータベースに保存します。
from langchain_objectbox.vectorstores import ObjectBox
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter()
documents = text_splitter.split_documents(data)
from langchain_openai import OpenAIEmbeddings
vector = ObjectBox.from_documents(documents, OpenAIEmbeddings(), embedding_dimensions=768)
vector
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain.chains import RetrievalQA
from langchain import hub
llm = ChatOpenAI(model="gpt-4o") ## Calling Gpt-4o
prompt = hub.pull("./rlm/rag-prompt")
prompt
4. クエリと応答生成のためのRAGパイプラインの構築
最後に、RAGパイプラインを構築し、クエリに対する応答を生成します。
qa_chain = RetrievalQA.from_chain_type(
llm,
retriever=vector.as_retriever(),
chain_type_kwargs={"prompt": prompt}
)
question = "Explain what is langsmith"
result = qa_chain({"query": question })
result
結論
Krishakさんの動画を参考に、OpenAIのGPT-4oモデルとローカルのObjectBoxベクターデータベースを使用して、RAGアプリケーションを構築する方法を紹介しました。これにより、データセットを効率的に扱いながら、高度な質問応答システムを実現できます。
注意事項
2024年5月18日時点ではこのコードで動作を確認していますが、ライブラリのバージョン更新などで動作しなくなる可能性があります。それについては、ご了承ください。
pythonのライブラリのバージョン
langchain 0.2.0
langchain-community 0.2.0
langchain-core 0.1.52
langchain-objectbox 0.1.0a4
langchain-openai 0.1.7
langchain-text-splitters 0.2.0
langchainhub 0.1.15