import streamlit as st import pandas as pd def load_data(): return pd.read_csv("benchmark_data.csv") def case_insensitive_search(data, query, column): if query: return data[data[column].str.lower().str.contains(query.lower())] return data def main(): st.title("Multihop-RAG Benchmark 💡") data = load_data() # 筛选条件 st.sidebar.header("Search Options") chat_model_query = st.sidebar.text_input("Chat Model") embedding_model_query = st.sidebar.text_input("Embedding Model") chunk_query = st.sidebar.text_input("Chunk") frame_query = st.sidebar.text_input("Framework") if chat_model_query: data = case_insensitive_search(data, chat_model_query, 'chat_model') if embedding_model_query: data = case_insensitive_search(data, embedding_model_query, 'embedding_model') if chunk_query: data = case_insensitive_search(data, chunk_query, 'chunk') if frame_query: data = case_insensitive_search(data, frame_query, 'framework') # 创建多级列索引 columns = [ ("Settings", "Framework"), ("Settings", "Chat Model"), ("Settings", "Embedding Model"), ("Settings", "Chunk"), ("Retrieval Metrics", "MRR@10"), ("Retrieval Metrics", "Hit@10"), ("Response Metrics", "Accuracy") ] # 选择并设置多级列索引 data = data[['framework', 'chat_model', 'embedding_model', 'chunk', 'MRR@10', 'Hit@10', 'Accuracy']] data.columns = pd.MultiIndex.from_tuples(columns) # 展示数据 st.dataframe(data.style.set_table_styles([{ 'selector': 'th', 'props': [('background-color', '#f4f4f4'), ('font-weight', 'bold')] }]), height=600) if st.sidebar.checkbox("Show Metrics Distribution"): st.subheader("Metrics Distribution") st.bar_chart(data[['MRR@10', 'Hit@10', 'Accuracy']]) # 引用 st.sidebar.header("Citation") st.sidebar.info( "Please cite this dataset as:\n" "Tang, Yixuan, and Yi Yang. MultiHop-RAG: Benchmarking Retrieval-Augmented Generation for Multi-Hop Queries. ArXiv, 2024, /abs/2401.15391." ) if __name__ == "__main__": main()