ai-textbook-backend / debug_comprehensive.py
Naveedtechlab's picture
Add full AI Native Textbook project source code
db7c1e8
import os
import sys
from dotenv import load_dotenv
from qdrant_client import QdrantClient
from qdrant_client.http import models
# Load environment variables from parent directory
load_dotenv(os.path.join(os.path.dirname(__file__), '..', '.env'))
def comprehensive_debug():
# Get environment variables
qdrant_url = os.getenv("QDRANT_URL")
qdrant_api_key = os.getenv("QDRANT_API_KEY")
collection_name = os.getenv("QDRANT_COLLECTION", "project_documents")
print(f"QDRANT_URL: {qdrant_url}")
print(f"Collection: {collection_name}")
# Initialize Qdrant client for cloud
if qdrant_url and qdrant_api_key and "qdrant.io" in qdrant_url:
qdrant_client = QdrantClient(
url=qdrant_url.replace(":6333", ""), # Remove port from URL for cloud
api_key=qdrant_api_key,
prefer_grpc=False
)
else:
# Use local Qdrant if cloud not configured
qdrant_client = QdrantClient(
host=os.getenv("QDRANT_HOST", "localhost"),
port=int(os.getenv("QDRANT_PORT", 6333))
)
# 1. Check collections
print("\n1. Available collections:")
try:
collections = qdrant_client.get_collections()
for collection in collections.collections:
print(f" - {collection.name}")
except Exception as e:
print(f" Error getting collections: {e}")
# 2. Get collection info
print(f"\n2. Collection info:")
try:
collection_info = qdrant_client.get_collection(collection_name)
print(f" Points count: {collection_info.points_count}")
print(f" Vector size: {collection_info.config.params.vectors.size}")
print(f" Distance: {collection_info.config.params.vectors.distance}")
except Exception as e:
print(f" Error getting collection info: {e}")
# 3. List all points in the collection (up to 10 for debugging)
print(f"\n3. All points in collection (up to 10):")
try:
points = qdrant_client.scroll(
collection_name=collection_name,
limit=10
)
count = 0
for point in points[0]: # points[0] contains the list of points
count += 1
print(f" Point {count}:")
print(f" ID: {point.id}")
print(f" Payload keys: {list(point.payload.keys()) if point.payload else 'None'}")
if point.payload and 'content' in point.payload:
content_preview = point.payload['content'][:100] + "..." if len(point.payload['content']) > 100 else point.payload['content']
print(f" Content preview: {content_preview}")
print(f" Topic: {point.payload.get('metadata', {}).get('topic', 'Unknown')}")
print()
print(f" Total points found: {count}")
except Exception as e:
print(f" Error listing points: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
comprehensive_debug()