grantforge-api / backend /scripts /setup_pinecone.py
GrantForge Bot
Deploy to Hugging Face
afd56bc
# 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()