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

Function generate_dense_embeddings

tests/test_hybrid.py:505–553  ·  view source on GitHub ↗

Generate dense embeddings for corpus and queries

(corpus: Dict, queries: Dict, dataset: str, embedding_model)

Source from the content-addressed store, hash-verified

503 return corpus, queries, qrels
504
505def generate_dense_embeddings(corpus: Dict, queries: Dict, dataset: str, embedding_model) -> Tuple[List[str], np.ndarray, List[str], np.ndarray]:
506 """Generate dense embeddings for corpus and queries"""
507 cache_file = Path("datasets") / f"hybrid_{dataset}" / "dense_embeddings.npz"
508 if cache_file.exists():
509 print("Loading cached dense embeddings...")
510 data = np.load(cache_file, allow_pickle=True)
511 return (
512 data["corpus_ids"].tolist(),
513 data["corpus_embeddings"],
514 data["query_ids"].tolist(),
515 data["query_embeddings"],
516 )
517
518 print("Generating dense embeddings...")
519 corpus_ids = list(corpus.keys())
520 corpus_texts = [
521 f"{corpus[doc_id].get('title', '')} {corpus[doc_id]['text']}"
522 for doc_id in corpus_ids
523 ]
524
525 query_ids = list(queries.keys())
526 query_texts = [queries[qid] for qid in query_ids]
527
528 # Generate corpus embeddings
529 corpus_embeddings = []
530 for i in tqdm(
531 range(0, len(corpus_texts), EMBEDDING_BATCH_SIZE), desc="Corpus embeddings"
532 ):
533 batch = corpus_texts[i : i + EMBEDDING_BATCH_SIZE]
534 corpus_embeddings.extend(list(embedding_model.embed(batch)))
535 corpus_embeddings = np.array(corpus_embeddings)
536
537 # Generate query embeddings
538 query_embeddings = []
539 for i in tqdm(range(0, len(query_texts), EMBEDDING_BATCH_SIZE), desc="Query embeddings"):
540 batch = query_texts[i : i + EMBEDDING_BATCH_SIZE]
541 query_embeddings.extend(list(embedding_model.embed(batch)))
542 query_embeddings = np.array(query_embeddings)
543
544 # Cache the embeddings
545 cache_file.parent.mkdir(parents=True, exist_ok=True)
546 np.savez_compressed(
547 cache_file,
548 corpus_ids=corpus_ids,
549 corpus_embeddings=corpus_embeddings,
550 query_ids=query_ids,
551 query_embeddings=query_embeddings,
552 )
553 return corpus_ids, corpus_embeddings, query_ids, query_embeddings
554
555
556def brute_force_dense(

Callers 1

mainFunction · 0.85

Calls 3

loadMethod · 0.80
embedMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected