eval
eval
是一個用於生成問題集並評估語言模型表現的class。它可以根據提供的資料來源自動生成問題集,並使用語言模型回答問題,最後根據答案的正確性或相似性進行評估。eval
支援多種問題類型與格式,並提供詳細的日誌記錄功能。
eval 功能
- 生成問題集:根據提供的資料來源,生成指定數量的問題與答案。
- 生成特定主題的問題集:根據主題篩選相關文件,生成與主題相關的問題集。
- 評估模型表現:使用生成的問題集評估語言模型的回答表現,並計算分數(如 Bert Score、Rouge-L 或正確率)。
- 日誌保存:支持保存執行過程與結果的日誌,便於後續分析。
使用question_type測試不同方面的能力
question_type 参数提供了四種問題類型:fact、summary、irrelevant、compared,預設是 fact。
- fact測試回答一般事實的能力
- summary測試模型做摘要的能力
- irrelevant測試模型能否分辨文件中不存在答案的問題
- compared測試模型比較不同事物的能力
eval 範例
生成問題集
1 | import akasha |
生成特定主題的問題集
1 | # 生成與主題相關的問題集 |
生成問題集格式
利用create_questionset生成的問題集為JSON格式,並包含 question 和 answer list 代表問題與參考答案。
1 | { |
評估模型表現
若 question_style 為 "single_choice"
(選擇題),evalution結果為正確率, 若為 "essay"
(問答題),結果為 bert score,
rouge score 和 ***llm score *** 的分數,皆介於0~1之間
bert-score
使用bert-score套件計算回答與參考答案的每個token之間的contextual embeddings similarity.
ROUGE-score
將語言模型的回答與問答題文件中的參考答案進行分詞後,藉由ROUGE 評估生成相似度分數
llm-score
利用另一種語言模型,將語言模型的回答與問答題文件中的參考答案進行比較,生成相似度分數,可以使用參數 eval_model 指定使用作為評判的語言模型
1 | # 使用生成的問題集評估模型表現 |
eval 參數
初始化參數
model: Union[str, BaseLanguageModel]
使用的語言模型,例如 "openai:gpt-4o"
或 "openai:gpt-3.5-turbo"
。
question_type: str
問題類型,包括 "fact"
(事實型)、"irrelevant"
(無關型)、"summary"
(摘要型)、"compared"
(比較型)。
question_style: str
問題格式,包括 "essay"
(問答題)或 "single_choice"
(選擇題)。
keep_logs: bool
是否保存執行過程與結果的日誌。
verbose: bool
是否顯示詳細的執行過程。
max_input_tokens: int
單次輸入模型的最大 token 數。
max_output_tokens: int
模型輸出的最大 token 數。
temperature: float
語言模型的隨機性參數,範圍為 0.0 到 1.0。
system_prompt: str
指示語言模型的輸出格式需求。
create_questionset 參數
data_source: Union[List[Union[str, Path]], Path, str, dbs]
資料來源,可以是文件目錄、文件路徑或資料庫。
question_num: int
生成的問題數量。
choice_num: int
選擇題的選項數量(僅在 question_style="single_choice"
時有效)。
output_file_path: str
輸出問題集的文件路徑。
create_topic_questionset 參數
data_source: Union[List[str], str]
資料來源,可以是文件目錄或文件路徑。
topic: str
生成問題集的主題。
question_num: int
生成的問題數量。
choice_num: int
選擇題的選項數量(僅在 question_style="single_choice"
時有效)。
output_file_path: str
輸出問題集的文件路徑。
evaluation 參數
questionset_file: str
問題集文件的路徑,(.json) 格式。
data_source: Union[List[Union[str, Path]], Path, str, dbs]
一個或多個包含文件檔案的資料夾路徑名稱、網址,或單一個dbs物件
eval_model: Union[BaseLanguageModel, str]
用於評估的語言模型,默認為初始化時的模型。
日誌與結果
- 問題集生成過程與結果會保存到指定的日誌文件中。
- 評估結果包括 Bert Score、Rouge-L 分數或正確率,具體取決於問題的格式。
相關連結
self.db的詳細資訊可參考向量資料庫
self.docs的詳細資訊可參考文件搜尋
self.model_obj的詳細資訊可參考設定語言模型
self.embeddings_obj的詳細資訊可參考設定嵌入模型