Skip to content Skip to footer

Dodawanie danych prawnych do bazy danych Qdrant

Jak dodać dane prawne do bazy wektorowej Qdrant? (Przewodnik krok po kroku)

Coraz więcej firm i organizacji wykorzystuje sztuczną inteligencję do szybkiego wyszukiwania informacji w dokumentach prawnych. Dzięki bazom wektorowym, takim jak Qdrant, możemy stworzyć potężną wyszukiwarkę przepisów, ustaw czy komentarzy – działającą nie po słowach kluczowych, ale po znaczeniu treści.

🔍 Czym jest Qdrant?

Qdrant to nowoczesna baza danych zoptymalizowana pod kątem semantycznego wyszukiwania. Przechowuje dane w postaci wektorów (embeddingów), które reprezentują znaczenie tekstu. Dzięki temu możesz wpisać pytanie typu „Jakie są obowiązki rodzica względem dziecka?” i dostać trafny artykuł z Kodeksu rodzinnego, nawet jeśli nie zawiera on dokładnych słów kluczowych.

📦 Co potrzebujesz, żeby zacząć?

  • Działającą instancję Qdrant (lokalnie lub w chmurze)
  • Klucz API OpenAI (lub lokalny model językowy, np. BERT)
  • Python i kilka bibliotek: qdrant-client, openai, pandas, tqdm
  • Plik z danymi prawnymi (JSON lub CSV)

🗃️ Przykładowe dane prawne (JSON)

[
  {
    "id": "art_1_kc",
    "title": "Art. 1 Kodeksu cywilnego",
    "content": "Kodeks cywilny normuje stosunki cywilnoprawne między osobami fizycznymi i prawnymi."
  },
  {
    "id": "art_2_kc",
    "title": "Art. 2 Kodeksu cywilnego",
    "content": "Osobami fizycznymi są ludzie od chwili urodzenia do śmierci."
  }
]

🔧 Jak działa cały proces?

Krok 1: Wczytaj dane prawne

Dane wczytujemy z pliku JSON lub CSV – każda pozycja zawiera ID, tytuł artykułu oraz treść przepisu.

Krok 2: Zamień treści na wektory (embeddingi)

Używamy OpenAI (lub lokalnego modelu), by przekształcić treść w matematyczny wektor o długości 1536 liczb – to cyfrowa forma znaczenia tekstu.

Krok 3: Załaduj dane do Qdrant

Tworzymy kolekcję w Qdrant i zapisujemy tam każdy punkt: embedding + oryginalny tekst jako tzw. payload.

Krok 4: Przeszukuj bazę pytaniami

Użytkownik wpisuje pytanie – np. „Kiedy osoba fizyczna nabywa zdolność prawną?” – a Qdrant odpowiada najtrafniejszymi artykułami.

📜 Gotowy skrypt Python

Dla wygody przygotowaliśmy skrypt w Pythonie, który automatyzuje cały proces – od wczytania danych po wyszukiwanie. Skrypt jest prosty i dobrze opisany, nawet dla osób początkujących.

# dodaj_dane_prawne_qdrant.py

import os, json, pandas as pd
from qdrant_client import QdrantClient
from qdrant_client.models import PointStruct, VectorParams, Distance
import openai
from tqdm import tqdm

openai.api_key = "YOUR_API_KEY"

def get_embedding(text, model="text-embedding-3-small"):
    return openai.embeddings.create(input=text, model=model).data[0].embedding

def load_data(file_path):
    return json.load(open(file_path)) if file_path.endswith(".json") else pd.read_csv(file_path).to_dict(orient="records")

client = QdrantClient(host="localhost", port=6333)
client.recreate_collection("akty_prawne", vectors_config=VectorParams(size=1536, distance=Distance.COSINE))

documents = load_data("akty_prawne.json")
points = []
for i, doc in enumerate(tqdm(documents)):
    vector = get_embedding(doc["content"])
    payload = {"id_aktu": doc["id"], "tytul": doc["title"], "tresc": doc["content"]}
    points.append(PointStruct(id=i, vector=vector, payload=payload))

client.upsert(collection_name="akty_prawne", points=points)

🔎 Jak wyszukiwać pytania prawne?

query = "Kiedy osoba fizyczna nabywa zdolność prawną?"
vector = get_embedding(query)

results = client.search("akty_prawne", query_vector=vector, limit=3)
for r in results:
    print(r.payload["tytul"], "→", r.payload["tresc"])

✅ Podsumowanie

  • Qdrant pozwala na inteligentne przeszukiwanie dokumentów prawnych
  • Embeddingi tłumaczą treść na wektory zrozumiałe dla AI
  • Całość można zautomatyzować w prostym skrypcie Python

To idealne rozwiązanie dla kancelarii, fundacji, startupów prawniczych i wszelkich projektów, które potrzebują błyskawicznego dostępu do wiedzy prawnej.

💬 Masz pytania?

Zostaw komentarz lub skontaktuj się – chętnie pomogę wdrożyć Qdrant w Twoim środowisku!

Leave a comment

0.0/5