MCPcopy Create free account
hub / github.com/cosdata/cosdata / main

Function main

tests/test_hybrid.py:1096–1254  ·  view source on GitHub ↗

Main function to run the hybrid raw search benchmark

(
    dataset: str = "arguana",
    top_k: int = 10,
)

Source from the content-addressed store, hash-verified

1094 return filename
1095
1096def main(
1097 dataset: str = "arguana",
1098 top_k: int = 10,
1099):
1100 """Main function to run the hybrid raw search benchmark"""
1101 print("=" * 60)
1102 print("Raw Hybrid Search Benchmark (dense + server-side sparse)")
1103 print("=" * 60)
1104
1105 try:
1106 # Setup
1107 embedding_model = setup_embedding_model()
1108 create_session()
1109
1110 # Load dataset
1111 corpus, queries, qrels = get_beir_dataset(dataset)
1112 print(f"Loaded {dataset}: {len(corpus)} docs, {len(queries)} queries, {len(qrels)} qrels")
1113
1114 # Calculate average query length (for raw text)
1115 avg_query_len = sum(len(q.split()) for q in queries.values()) / len(queries)
1116 print(f"Average query length: {avg_query_len:.1f} tokens")
1117
1118 # Generate dense embeddings
1119 corpus_ids, corpus_embeddings, query_ids, query_embeddings = generate_dense_embeddings(
1120 corpus, queries, dataset, embedding_model
1121 )
1122
1123 # Build brute-force baselines for evaluation
1124 print("\nBuilding brute-force baselines...")
1125 bf_dense = brute_force_dense(
1126 query_embeddings, corpus_embeddings, corpus_ids, query_ids, top_k, dataset
1127 )
1128
1129 # Build sparse vectors for brute-force comparison
1130 sparse_vectors = build_sparse_vectors_for_bf(corpus, dataset)
1131
1132 # Get corpus stats for sparse queries
1133 total_docs = len(sparse_vectors)
1134 term_doc_freq = defaultdict(int)
1135 total_len = sum(len(v["text"].split()) for v in sparse_vectors)
1136 avg_len = total_len / total_docs
1137 for v in sparse_vectors:
1138 for idx in v["indices"]:
1139 term_doc_freq[idx] += 1
1140
1141 sparse_queries = build_sparse_queries_for_bf(
1142 queries, dataset, (total_docs, term_doc_freq, avg_len)
1143 )
1144 bf_sparse = brute_force_sparse(sparse_queries, sparse_vectors, top_k, dataset)
1145
1146 # Create collection and indexes
1147 collection_name = f"{COLLECTION_PREFIX}_{dataset}"
1148 collection = ensure_collection(collection_name)
1149
1150 # Upsert hybrid vectors (dense + raw text)
1151 start_time = time.time()
1152 upsert_hybrid_vectors(collection, corpus_ids, corpus_embeddings, corpus)
1153 indexing_time = time.time() - start_time

Callers 1

test_hybrid.pyFile · 0.70

Calls 15

setup_embedding_modelFunction · 0.85
get_beir_datasetFunction · 0.85
brute_force_denseFunction · 0.85
brute_force_sparseFunction · 0.85
ensure_collectionFunction · 0.85
upsert_hybrid_vectorsFunction · 0.85
evaluateFunction · 0.85
run_qps_latencyFunction · 0.85

Tested by

no test coverage detected