import requests 
from qdrant_client import QdrantClient, models
EMBEDDING_DIMENSIONALITY = 512
collection_name = "hw3"
qd_client = QdrantClient("http://localhost:6333")
qd_client.delete_collection(collection_name=collection_name)
qd_client.create_collection(
    collection_name=collection_name,
    vectors_config=models.VectorParams(
        size=EMBEDDING_DIMENSIONALITY,
        distance=models.Distance.COSINE
    )
)
qd_client.create_payload_index(
    collection_name=collection_name,
    field_name="course",
    field_schema="keyword"
)
points = []
for i, doc in enumerate(documents):
    text = doc['question'] + ' ' + doc['text']
    vector = models.Document(text=text, model="jinaai/jina-embeddings-v2-small-en")
    point = models.PointStruct(
        id=i,
        vector=vector,
        payload=doc
    )
    points.append(point)
qd_client.upsert(
    collection_name=collection_name,
    points=points
)
def qdsearch(q):
    results = qd_client.query_points(
        collection_name=collection_name,
        query=models.Document(
            text=q['question'],
            model="jinaai/jina-embeddings-v2-small-en"
        ),
        limit=5, # top closest matches
        with_payload=True #to get metadata in the results
    )
    return [p.payload for p in results.points if p.payload and 'id' in p.payload]
results = evaluate(ground_truth, search_function=qdsearch)
print(f"The MRR is: {results['mrr']}")