「LangChainとOpenAIを使用して文書の理解を向上させる方法」

『LangChainとOpenAIを活用した文書の理解力向上法』

DAAL-Eを使用して生成されたイメージ

ジェネレーティブAIと言語モデルの急成長により、文書から情報を理解し抽出する能力が向上し、GPTのようなマシンが知識抽出、解釈、抽出の向上に人間を支援する新たな時代を目撃しています。

このブログ投稿では、OpenAI APIを使用し、LangChainと組み合わせて、文書から情報を抽出し、質問に答えることができるシステムを構築する類似のユースケースを解説します。では、始めましょう。

ステップ0:環境のセットアップ

この記事では、Jupyter NotebookとOpenAI APIを使用します。

このチュートリアルには、次のモジュールが必要です。

pip install openai tiktoken chromadb langchain BeautifulSoup4

また、OpenAI APIの認証情報を設定する必要もあります

import osos.environ["OPENAI_API_KEY"] = "sk-xxxx"

これで準備が整いましたので、始めましょう。

ステップ1:ドキュメントの内容を取得する

Berkeley Artificial Intelligence Researchブログの記事を使用します。https://bair.berkeley.edu/blog/2023/07/14/ddpo/

LangChainはWebのURLからデータを読み取り、Document形式に変換する簡単な方法を提供します。ドキュ

ステップ2:ドキュメントを固定長のチャンクに変換する

ドキュメントのコンテンツを取得したら、次のステップはテキストがモデルのコンテキストウィンドウに収まるように固定サイズのチャンクに変換することです。500のチャンクサイズでRecursiveCharacterTextSplitterを使用します。

from langchain.text_splitter import RecursiveCharacterTextSplittertext_splitter = RecursiveCharacterTextSplitter(chunk_size = 500, chunk_overlap = 0)all_splits = text_splitter.split_documents(data)print(all_splits[0])print(all_splits[1])> page_content='Training Diffusion Models with  Reinforcement Learning – The Berkeley Artificial Intelligence Research Blog\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSubscribe\nAbout\nArchive\nBAIR\n\n\n\n\n\n\n\n\nTraining Diffusion Models with  Reinforcement Learning\n\nKevin Black \xa0\xa0\n  \n  \n  Jul 14, 2023\n  \n  \n\n\n\n\n\n\n\n\n\n\nTraining Diffusion Models with Reinforcement Learning\n\n\n\n\n\n\nreplay' metadata={'source': 'https://bair.berkeley.edu/blog/2023/07/14/ddpo/', 'title': 'Training Diffusion Models with  Reinforcement Learning – The Berkeley Artificial Intelligence Research Blog', 'description': 'The BAIR Blog', 'language': 'No language found.'}page_content='Diffusion models have recently emerged as the de facto standard for generating complex, high-dimensional outputs. You may know them for their ability to produce stunning AI art and hyper-realistic synthetic images, but they have also found success in other applications such as drug design\xa0and continuous control. The key idea behind diffusion models is to iteratively transform random noise into a sample, such as an image or protein structure. This is typically motivated as a maximum likelihood' metadata={'source': 'https://bair.berkeley.edu/blog/2023/07/14/ddpo/', 'title': 'Training Diffusion Models with  Reinforcement Learning – The Berkeley Artificial Intelligence Research Blog', 'description': 'The BAIR Blog', 'language': 'No language found.'}

ステップ3:ベクトルストアを使用してドキュメントのチャンクを保存する

ドキュメントをチャンクに分割した後、次のステップはテキストの埋め込みを作成して、ベクトルストアに保存することです。以下に示すように実行できます。

from langchain.embeddings import OpenAIEmbeddingsfrom langchain.vectorstores import Chromavectorstore=Chroma.from_documents(documents=all_splits, embedding=OpenAIEmbeddings())retriever=vectorstore.as_retriever()

ステップ4:クエリに基づいて類似ドキュメントを取得する

テキストの埋め込みを生成した後、ベクトル類似検索を使用してクエリに関連するドキュメントのチャンクを取得できます。

question = "DDPOアルゴリズムのステップは何ですか?"docs = vectorstore.similarity_search(question)print(f"取得されたドキュメント数:{len(docs)}")print(docs[0].page_content)> 取得されたドキュメント数:4私たちのアルゴリズムであるdenoising diffusion policy optimization(DDPO)の主な洞察は、最終的なサンプルの報酬を最大化するために、私たちはそこにたどり着くためのすべてのdenoisingステップのシーケンスに注意を払うことであり、これを実現するために、私たちは拡散プロセスを多段階マルコフ決定過程(MDP)として再構成することです。 MDPの用語では、各denoisingステップはアクションであり、エージェントは最終サンプルが生成される各denoisingトラジェクトリの最終ステップでのみ報酬を得ます。

ステップ5:蒸留ドキュメントを使用して応答を生成する

クエリに対して蒸留ドキュメントを取得したので、contextvectorstoreリトリーバーによって提供される基づいてクエリに回答するLLM連鎖を作成できます。疑問の場合には、不確実性時に確定されたメッセージを指定します。

from langchain.prompts import PromptTemplatetemplate = """以下のコンテキストを使って、最後の質問に答えてください。答えがわからない場合は、わからないと答えるだけで、答えをでっちあげないでください。回答は最大3文で簡潔にしてください。回答の最後には必ず「完了」と言ってください。{context}質問:{question}回答:"""prompt = PromptTemplate.from_template(template)

このプロンプトを使用して、以下のようなLLMチェーンを作成します。

from langchain.schema.runnable import RunnablePassthroughfrom langchain.chat_models import ChatOpenAIllm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)qa_chain = (    {"context": retriever, "question": RunnablePassthrough()}     | prompt     | llm )

上記のコードでは、RunnablePassThroughという新しい用語がいくつかあります。それは、カスタムLLMチェーンを簡単に作成するためのプロトコルであり、上記のようにコンポーネントをパイプでつなぐことができます。

さて、LLMチェーンを使用してクエリに答えることができます。

qa_chain.invoke("DDPOアルゴリズムに使用されるステップは何ですか?").content> 'DDPOアルゴリズムでは、最終サンプルの報酬を最大化するために、ノイズ除去ステップのシーケンスが使用されます。各ノイズ除去ステップは、多段階マルコフ決定プロセス(MDP)のアクションと見なされます。エージェントは、最終的なサンプルが生成されたときにのみ報酬を受け取ります。完了!'qa_chain.invoke("記事で議論されている主なアイデアは何ですか?").content> '記事で議論されている主なアイデアは、過剰最適化の問題とそれを防ぐための汎用的な手法の必要性です。完了!'

Pythonノートブックの完全なコードはこちらで確認できます。

これにより、文書の解釈と理解を支援するために簡単に利用できる機能的なシステムを手に入れました。

Generative AIとLangChainの素晴らしい機能を使用して何ができるかに興味がある場合は、今後の記事にご期待ください。そこでは、さまざまな他のユースケースについて詳しく掘り下げていきます。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

あなたの究極のチャットGPTおよびその他の略語ガイド

ChatGPTについて、誰もが熱狂しているようですこれは文化現象になりましたまだChatGPTの利用者でない場合、この記事はこの革...

AI研究

このAI研究は、ロボット学習および具現化人工知能の研究のための包括的なソフトウェアプラットフォームとエコシステムであるRoboHiveを提案しています

近年、人工知能(AI)の進歩は、言語モデリング、タンパク質折りたたみ、およびゲームプレイなどで特に顕著なものがありまし...

AIニュース

高度なAIの約束とリスクについて、ジェフリー・ヒントンが語る

「2019年ACM A.M.チューリング賞の受賞者であるイギリスのコンピュータ科学者であるジェフリー・ヒントンは、進化した人工知...

データサイエンス

このAI研究は、近くの電話によって記録されたキーストロークを聞くことで、95%の正確さでデータを盗むことができるディープラーニングモデルを紹介しています

ディープラーニングの進歩とマイクロフォンの普及に伴い、個人デバイスを通じたオンラインサービスの人気が高まる中、キーボ...

機械学習

費用効率の高いGPT NeoXおよびPythiaモデルの訓練における節約と正確性:AWS Trainiumの活用

大規模言語モデル(またはLLMs)は、日々の会話のトピックとなっていますその迅速な採用は、1億人のユーザーに到達するまでに...

AIニュース

「OpenAIは、『精度が低い』ため、AI文章検出器の提供を中止する」

研究によると、AIの文章検出器は打破可能であり、誤検知も非常に多いことが示されています