サンプル集  >  Python  >  ベクトル化したコンテンツを参照してチャット
ベクトル化したコンテンツを参照してチャット
2025/11/23

コンテンツをベクトル化して保存でベクトル化したコンテンツを参照してチャットしてみます。

◆環境
OS Windows 10 Home 22H2 64bit OS x64 プロセッサ
Python 3.13.1
VS Code 1.106.0

ベクトル化したコンテンツを利用するにはベクトル化したときと同じモデルを指定する必要があります。

chat_vector_test.py
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
import os
from llama_index.core import StorageContext, load_index_from_storage
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI
from llama_index.core.prompts import PromptTemplate
from datetime import datetime, timezone, timedelta

# JST(日本時間)のタイムゾーンを定義
JST = timezone(timedelta(hours=9))

# APIキーを設定
os.environ["OPENAI_API_KEY"] = "..."

# OpenAI LLM / Embedding の設定
# ベクトル化した時と同じモデルを指定すること!
embed_model = OpenAIEmbedding(model="text-embedding-3-large")
llm = OpenAI(model="gpt-4.1-mini")

JAPANESE_QA_TEMPLATE = PromptTemplate(
    """
あなたは日本語で丁寧かつ分かりやすく回答するアシスタントです。
以下のコンテキストと質問に基づき、日本語で回答してください。

# コンテキスト
{context_str}

# 質問
{query_str}

# 回答(日本語)
"""
)

def chat_vector_test():
    storage_context = StorageContext.from_defaults(
                          persist_dir="./storage"
                      )
    index = load_index_from_storage(storage_context,
                                    embed_model=embed_model,
                                    llm=llm)

    query_engine = index.as_query_engine(
                       text_qa_template=JAPANESE_QA_TEMPLATE
                   )

    print("Chat bot ready!")

    while True:
        user_input = input("input: ")

        if user_input in ["exit""quit"]:
            break

        start = datetime.now(JST)
        response = query_engine.query(user_input)
        end = datetime.now(JST)
        proc_time = end - start
        print(f"応答時間: {proc_time} ms")
        print("AI:", response)

if __name__ == "__main__":
    chat_vector_test()

ベクトル化したコンテンツをフォルダごと読み込ませます。

実行してみます。

> py .\chat_vector_test.py
Chat bot ready!
input:

「カラーで印刷したい」と入力しEnterを押します。

input: カラーで印刷したい
実行時間: 0:00:04.098107 ms
AI: カラーで印刷したい場合は、印刷部数や印刷設定を変更した後、画面で
[カラー]をタップしてください。自動的
に排紙トレイが出てきて、印刷が開始されます。初期設定では1部が印刷され
ますが、部数や印刷設定を変更したい場合
は、画面下辺付近のメニューで変更できます。印刷部数を指定したり、印刷
設定画面を表示して設定を変更したりする 
ことができます。
input: exit

AIからの回答が表示されました。

▲ PageTop  ■ Home


Copyright (C) 2025 ymlib.com