# ruff: noqa: E402 import os import sys import time from dotenv import load_dotenv sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) load_dotenv() try: from pinecone import Pinecone, ServerlessSpec except ImportError: print("Pinecone not installed") sys.exit(1) from rag_pipeline.ingest import process_and_ingest def setup(): pc = Pinecone(api_key=os.getenv("PINECONE_API_KEY")) index_name = os.getenv("PINECONE_INDEX_NAME", "dotacje") existing_indexes = [index_info["name"] for index_info in pc.list_indexes()] print(f"Existing indexes: {existing_indexes}") if index_name not in existing_indexes: print(f"Tworzenie indexu Pinecone: {index_name}...") # Wymiary dla modelów Google embedding to 768 pc.create_index( name=index_name, dimension=768, metric="cosine", spec=ServerlessSpec(cloud="aws", region="us-east-1"), ) print("Czekam na gotowość indexu...") while not pc.describe_index(index_name).status["ready"]: time.sleep(1) print("Indeks gotowy!") else: print(f"Indeks {index_name} już istnieje.") print("\nDodawanie przykładowych tekstów o dotacjach z PARP/NCBR do bazy...") sample_text = """ Zasada DNSH (Do No Significant Harm) - Nie czyń znaczącej szkody. W projektach FENG (w tym Ścieżka SMART) każdy wydatek i cała inwestycja musi być zgodna z zasadą DNSH. Oznacza to, że projekt nie może wpływać negatywnie na sześć celów środowiskowych: 1. Łagodzenie zmian klimatu, 2. Adaptacja do zmian klimatu, 3. Zrównoważone wykorzystanie zasobów wodnych i morskich, 4. Przejście na gospodarkę o obiegu zamkniętym (GOZ), 5. Zapobieganie zanieczyszczeniom i ich kontrola, 6. Ochrona i odbudowa bioróżnorodności i ekosystemów. Wydatki na panele fotowoltaiczne i zielone ściany w module zazielenienia są w 100% zgodne z GOZ i DNSH. Moduł cyfryzacji pozwala z kolei na wprowadzanie oprogramowania optymalizującego ślad węglowy, jednak wymaga pełnego audytu. """ success = process_and_ingest( sample_text, "https://parp.gov.pl/smart-dnsh", priority="high" ) if success: print("Dokument pomyślnie dodany do RAG.") else: print("Błąd podczas dodawania dokumentu.") if __name__ == "__main__": setup()