Hopsakee's picture
Upload folder using huggingface_hub
5fe3652 verified
import logging
from src.fabrics_processor.database import initialize_qdrant_database
from qdrant_client import QdrantClient
from qdrant_client.models import QueryResponse
import argparse
from src.fabrics_processor.config import config
# TODO: Use reranking to get even better search results
# TODO: Add an option to monitor the quality of the search responses with thumbs up/down feedback
# Store evaluations in an SQLite database with the query, the returned prompt, and the evaluation (up/down)
# This will create a database of good and bad examples to improve the search model
def query_qdrant_database(
query: str,
client: QdrantClient,
num_results: int = 5,
collection_name: str = config.embedding.collection_name) -> list[QueryResponse]:
"""Query the Qdrant database for similar documents.
Args:
query: The search query text
client: Initialized QdrantClient instance
num_results: Maximum number of results to return
collection_name: Name of the collection to query
Returns:
List of QueryResponse objects containing matches
Raises:
QdrantException: If there's an error querying the database
"""
try:
results = client.query(collection_name=collection_name, query_text=query, limit=num_results)
return results
except Exception as e:
logging.error(f"Error querying Qdrant database: {e}")
raise
def main():
client = initialize_qdrant_database()
parser = argparse.ArgumentParser(description="Query Qdrant database")
parser.add_argument("query", type=str, help="The search query text")
parser.add_argument("--num_results", "-n", type=int, default=5, help="The number of results to return (default: 5)")
parser.add_argument("--collection_name", "-c", type=str, default=config.embedding.collection_name, help="The name of the collection to query.")
args = parser.parse_args()
try:
results = query_qdrant_database(query=args.query,
client=client,
num_results=args.num_results,
collection_name=args.collection_name
)
filenames = [r.metadata['filename'] for r in results]
print(filenames)
finally:
client.close()
if __name__ == "__main__":
main()