Llama-3-ELYZA-JP-8Bを雑に触る
Llama-3-ELYZA-JP-8Bについては下記参照。
0. 環境
1. RAGに使用するDBの準備
下記で作成したDBを流用します。
DBの内容は、Google Patentsで「(semiconductor) country:US after:priority:20230101 language:ENGLISH」でヒットした857件の特許のうち、下記記事でFinFETに分類されたものです。
from langchain.embeddings import HuggingFaceBgeEmbeddings
from langchain.vectorstores import Chroma
model_name = "BAAI/bge-large-en-v1.5"
encode_kwargs = {'normalize_embeddings': True}
embedding_function = HuggingFaceBgeEmbeddings(
model_name=model_name,
model_kwargs={'device': 'cuda'},
encode_kwargs=encode_kwargs
)
txt_path = r"C:\Users\Documents\Patent\Semiconductor\topic folder\3D FinFET fabrication process" # 保存したフォルダ
persist_directory = f'{txt_path}/vdb'
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding_function)
2. RAGの設定
modelとtokenizerの設定。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "elyza/Llama-3-ELYZA-JP-8B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="cuda",
)
LangchainのRetrievalQAを設定。
from transformers import pipeline
from langchain.llms import HuggingFacePipeline
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer,
device_map="auto", max_new_tokens=4096,
repetition_penalty=1.15
)
llm = HuggingFacePipeline(pipeline=pipe)
from langchain.chains import RetrievalQA
retriever = vectordb.as_retriever(search_kwargs={"k": 30})
qa_chain = RetrievalQA.from_chain_type(llm=llm,
chain_type="stuff",
retriever=retriever,
return_source_documents=True,
)
3. 質疑
質問:
query = "「FinFET」とはなんですか?またその特徴を教えてください。日本語で答えてください。"
llm_response = qa_chain(query)
target = 'Helpful Answer: '
idx = llm_response['result'].find(target)
r = llm_response['result'][idx+len(target):]
print(r)
回答:
質問2:
query = "FinFETの主な課題とその解決策はなんですか?確定的な情報がない場合、予想を教えて下さい。日本語で答えてください。"
llm_response = qa_chain(query)
target = 'Helpful Answer: '
idx = llm_response['result'].find(target)
r = llm_response['result'][idx+len(target):]
print(r)
回答:
4. 感想
雑に触っただけですが、十分に賢さが伝わってきます。
この記事が気に入ったらサポートをしてみませんか?