Passa al contenuto principale
Background

Crea un chatbot RAG basato sui fatti su Kubernetes

Utilizza Python, LangGraph, PostgreSQL e LKE per trasformare le complesse policy delle compagnie aeree in risposte contestualizzate con citazioni.

Guarda come si crea un chatbot RAG

Segui il processo di creazione completo, dal provisioning dell'infrastruttura Kubernetes all'indicizzazione dei documenti delle policy fino all'esecuzione dei test delle risposte basate sui fatti.

Prima di iniziare

Raccogli le credenziali e gli strumenti della riga di comando necessari per eseguire il provisioning dell'infrastruttura, caricare i documenti e distribuire l'applicazione.

  • Account e token API sull'Akamai Cloud
  • Chiave API OpenAI
  • Terraform installato localmente
  • kubectl installato localmente
  • s3cmd installato localmente
  • Accesso al repository GitHub
  • Coppia di chiavi SSH per la chiave di distribuzione

Crea il chatbot RAG in quattro fasi

Esegui il provisioning dell'infrastruttura, carica la Knowledge Base, distribuisci l'applicazione e verifica il chatbot completato.

Clona il progetto:

clone git https://github.com/akamai-developers/rag-langgraph-k8s-quickstart.git
cd rag-langgraph-k8s-quickstart

Copia il file di esempio di Terraform e configuralo con il token API e le impostazioni delle risorse preferite sull'Akamai Cloud:

cp terraform/terraform.tfvars.example terraform/terraform.tfvars

Esegui il provisioning del cluster LKE, di due database PostgreSQL e del bucket di Object Storage:

cd terraform
terraform init
terraform plan
terraform apply

Mantieni sicuri gli output di Terraform perché contengono dettagli di connessione sensibili.

Carica gli output di Terraform nelle variabili di ambiente:

export S3_BUCKET=$(terraform output -raw S3_BUCKET_NAME)
export S3_ENDPOINT=$(terraform output -raw S3_ENDPOINT)
export S3_ACCESS_KEY=$(terraform output -raw S3_ACCESS_KEY)
export S3_SECRET_KEY=$(terraform output -raw S3_SECRET_KEY)

Carica i documenti delle policy delle compagnie aeree inclusi:

s3cmd sync ../documents/ s3://${S3_BUCKET}/ \
--host=${S3_ENDPOINT} \
--host-bucket=${S3_ENDPOINT} \
--access_key=${S3_ACCESS_KEY} \
--secret_key=${S3_SECRET_KEY}

Puoi sostituire le policy di esempio con i documenti PDF, HTML o di testo che desideri.

Imposta l'accesso a kubeconfig generato:

export KUBECONFIG=./kubeconfig.yaml

Recupera le credenziali iniziali di App Platform dallo spazio dei nomi keycloak ed effettua l'accesso.

In App Platform:

  1. Installa il registro di sistema del container Harbour.
  2. Genera una chiave di distribuzione GitHub.
  3. Aggiungi la chiave pubblica al repository.
  4. Conserva la chiave privata come Sealed Secret.
  5. Collega il repository del codice.
  6. Crea l'immagine dell'applicazione.
  7. Crea oggetti Sealed Secret per OpenAI, PostgreSQL e Object Storage insieme alla chiave API di amministrazione.
  8. Aggiungi le policy di rete per entrambi i database PostgreSQL.
  9. Crea il carico di lavoro utilizzando charts/workflow.example.yaml.
  10. Crea un servizio pubblico per l'applicazione.

Non integrare nel codice sorgente le credenziali nella configurazione del repository o del carico di lavoro.

Verifica che l'applicazione sia in esecuzione:

curl http://<your-service-endpoint>/api/health

Inizializza i database:

curl -X POST \
--header "x-api-key: <your-admin-api-key>" \
http://<your-service-endpoint>/api/admin/initialize_databases

Indicizza i documenti delle policy:

curl -X POST \
--header "x-api-key: <your-admin-api-key>" \
http://<your-service-endpoint>/api/admin/index_documents

Utilizza l'ID processo restituito per verificare l'avanzamento:

curl -X GET \
--header "x-api-key: <your-admin-api-key>" \
http://<your-service-endpoint>/api/admin/index_documents/<job-id>

Al termine dell'indicizzazione, apri l'endpoint di servizio e fai una domanda sulle policy caricate.

Domande frequenti (FAQ)

Domande frequenti (FAQ)

Recupera le sezioni pertinenti dai documenti delle compagnie aeree e le utilizza per generare risposte con citazioni di supporto.

L'applicazione può elaborare file PDF, HTML e di testo memorizzati in Object Storage.

Il primo database memorizza gli incorporamenti dei vettori per il recupero semantico, mentre il secondo database memorizza la cronologia delle conversazioni e lo stato LangGraph.

No. Il progetto corrente utilizza API OpenAI per gli incorporamenti e il completamento delle chat. È possibile adattarlo in un secondo momento per eseguire un modello open source sui nodi LKE basati sulle GPU.

Sì. Sostituisci le policy di esempio della compagnia aerea nella directory dei documenti con i tuoi file supportati prima di caricarli.

Il progetto utilizza Sealed Secrets per OpenAI, database, Object Storage, chiavi di distribuzione e credenziali di amministrazione.

L'endpoint di indicizzazione restituisce un ID processo. Utilizza l'endpoint di stato per monitorare l'operazione prima di eseguire il test del chatbot.

No. I crediti dell'Akamai Cloud si applicano alla corrispondente infrastruttura idonea. L'utilizzo delle API OpenAI viene fatturato separatamente.