usomaru技術ぶろぐ

学んだことをちょこちょこメモ( ..)φ

【Azure】LangChainのRetrievalQAを使用したデータ検索をしてみる

はじめに

以前、Cosmos DBにデータを登録 → AI Searchにベクター化したデータを登録 → On Your Dataで検索する!という流れを実装しました。

(このブログではなくQiitaに試したことは投稿)

qiita.com

今回は、On Your Dataを使って試していた部分をLangChainのRetrievalQAを使って同じようなことができないか試してみました。

環境

  • Python v3.11.1 64bit
  • Azure AI Search
  • Azure Open AI
    • gpt-35-turbo
    • text-embedding-ada-002

インストールが必要なもの

  • azure-search-documents==11.4.0b8
  • azure-identity

Azure AI Searchにインデックスを作成して登録する

登録する方法はこちらの記事でまとめております。

qiita.com

qiita.com

ベクター化のほうのインデックスフィールドの名前は「contentVector」ではなく、「content_vector」にしないと下のコードは動かないので注意

ソースコード

import os
from langchain.embeddings import AzureOpenAIEmbeddings
from langchain.vectorstores.azuresearch import AzureSearch

from langchain.chains import RetrievalQA
from langchain.chat_models import AzureChatOpenAI

os.environ["AZURE_OPENAI_API_KEY"] = ""
os.environ["AZURE_OPENAI_ENDPOINT"] = ""


AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME = ""
AZURE_OPENAI_GPT35_DEPLOYMENT_NAME = ""

AZURE_SEARCH_ENDPOINT = ""
AZURE_SEARCH_API_KEY_ADMIN = ""

embeddings = AzureOpenAIEmbeddings(
    azure_deployment=AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME,
)

index_name = ""

vector_store = AzureSearch(
    azure_search_endpoint=AZURE_SEARCH_ENDPOINT,
    azure_search_key=AZURE_SEARCH_API_KEY_ADMIN,
    index_name=index_name,
    embedding_function=embeddings.embed_query
)

# チャットモデルを定義
chat = AzureChatOpenAI(
    openai_api_type="azure",
    model_name="gpt-35-turbo",
    openai_api_version="2023-07-01-preview",
    deployment_name=AZURE_OPENAI_GPT35_DEPLOYMENT_NAME,
    temperature=0
)

# RetrievalQAチェーンを定義
qa_chain = RetrievalQA.from_chain_type(
    llm=chat,
    retriever=vector_store.as_retriever(),
    return_source_documents=True
    )

# QAを実行
result = qa_chain({"query": "コンテナを使うサービスを教えて。"})
print(result)

AZURE_OPENAI_API_KEYの場所

Azure Open AIのリソース > キーとエンドポイント

AZURE_OPENAI_ENDPOINTの場所

Azure Open AIのリソース > キーとエンドポイント

AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAMEの場所

Azure AI Studio > デプロイ

AZURE_OPENAI_GPT35_DEPLOYMENT_NAMEの場所

Azure AI Studio > デプロイ

AZURE_SEARCH_ENDPOINTの場所

Azure AI SearchのリソースのURL

AZURE_SEARCH_API_KEY_ADMINの場所

Azure AI Searchのリソース > キー

結果

参考記事

qiita.com

qiita.com