Spaces:
Running
Running
| from embedder import MursitEmbedder, _chunk_id_to_uint64, COLLECTION_NAME | |
| from services.qdrant_client import get_qdrant_client | |
| def legal_search(query_text: str, top_k: int = 20): | |
| # 1. Embedder'ı yükle | |
| embedder = MursitEmbedder(quantize=False) | |
| client = get_qdrant_client() | |
| # 2. Sorguyu vektörize et | |
| query_vector = embedder.encode_single(query_text) | |
| # 3. Qdrant'ta ara (Yeni API formatı) | |
| try: | |
| # En güncel Qdrant API kullanımı | |
| response = client.query_points( | |
| collection_name=COLLECTION_NAME, | |
| query=query_vector, # query_batch yerine doğrudan query | |
| limit=top_k, | |
| with_payload=True, | |
| ) | |
| results = response.points | |
| except Exception as e: | |
| # Eğer yukarıdaki de başarısız olursa (versiyon çok eskiyse) | |
| print(f"[Sistem] Yeni API hatası ({e}), fallback deneniyor...") | |
| # Alternatif: LocalClient'larda bazen 'search' doğrudan çalışır | |
| results = client.search( | |
| collection_name=COLLECTION_NAME, | |
| query_vector=query_vector, | |
| limit=top_k, | |
| with_payload=True, | |
| ) | |
| # 4. Sonuçları Raporla | |
| print(f"\n🔍 Sorgu: '{query_text}'") | |
| print("=" * 60) | |
| for i, res in enumerate(results): | |
| p = res.payload | |
| score = getattr(res, "score", 0) # query_points'te skor her zaman mevcuttur | |
| print( | |
| f"[{i+1}] Skor: {score:.4f} | Kaynak: {p.get('source', 'Bilinmiyor').upper()}" | |
| ) | |
| if p.get("source") == "mevzuat": | |
| print(f"📍 {p.get('law')} Madde {p.get('article_no')}") | |
| else: | |
| print(f"🏛️ Yargıtay Kararı ID: {p.get('decision_id')}") | |
| text_snippet = p.get("text", "").replace("\n", " ")[:150] | |
| print(f"📝 Metin: {text_snippet}...") | |
| print("-" * 40) | |
| if __name__ == "__main__": | |
| # Test Sorgusu | |
| # Örn: "Temerrüt ihtar şartı" veya "Kırkambar sözleşmesi sorumluluk" | |
| user_query = input("Hukuki sorunuzu girin: ") | |
| legal_search(user_query) | |