grantforge-api / backend /scripts /setup_pinecone.py
GrantForge Bot
Deploy sha-565ad85979610064f6d1c18ab3b6404357d61073 — source build (no GHCR)
ce8f04a
Raw
History Blame Contribute Delete
2.41 kB
# 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()