Warstwę semantyczną EDB Postgres AI połączysz z agentem działającym w Amazon Bedrock AgentCore przez endpoint MCP, a dostęp do danych pozostawisz pod kontrolą ról PostgreSQL. Opisany przez AWS przykład wykorzystuje AIDB, agenta Strands i demonstracyjny schemat Customer 360 (C360). SemKB indeksuje w nim opisy schematu, a nie wiersze danych. AWS opisuje tę konfigurację i jej przykładowe zapytania.

Co przygotować

Do odtworzenia przykładu potrzebujesz:

  • EDB Postgres AI z zainstalowanym i włączonym AIDB;
  • czterech plików CSV z zestawu Stardog C360, załadowanych do schematu c360 jako tabele customers, locations, products i purchases;
  • kluczy obcych, widoku pochodnego i opisów biznesowych kolumn;
  • agenta Strands korzystającego z modelu Claude w Amazon Bedrock; dostępność modelu zależy od regionu AWS;
  • endpointu MCP AIDB, Application Load Balancera (ALB) i celu MCP w AgentCore Gateway;
  • Amazon Cognito do wystawiania tokenów JWT oraz ról PostgreSQL z odpowiednimi uprawnieniami.

Przykład C360 obejmuje cztery tabele i jeden widok. To dobry zakres do prześledzenia konfiguracji, ale nie zastępuje testów na własnym schemacie.

Konfiguracja krok po kroku

1. Załaduj tabele i relacje

Wczytaj cztery pliki CSV do schematu c360, utwórz tabele i ustaw klucze obce zgodnie z relacjami między nimi. AIDB może wykorzystać te powiązania do odnajdywania ścieżek łączenia tabel.

2. Opisz znaczenie danych w PostgreSQL

Dodaj komentarze poleceniami COMMENT ON, by wyjaśnić, co oznaczają tabele i kolumny. Zdefiniuj terminy biznesowe w widokach, a powtarzalne zapytania udostępnij jako nazwane aliasy semantyczne. W przykładzie alias big_spenders_by_state jest parametryzowanym, tylko do odczytu zapytaniem SELECT, które agent może wywołać jako narzędzie.

Warto doprecyzować znaczenie pól, które łatwo błędnie zinterpretować. W C360 purchases.price oznacza łączną wartość zamówienia, a nie cenę pojedynczego produktu. AWS podaje, że potraktowanie tej kolumny jako ceny jednostkowej dało w przykładzie błędny wynik około 502 529 USD zamiast 27 991,66 USD po poprawieniu interpretacji. To wartości z przykładowych danych, nie miara wydajności systemu.

3. Utwórz SemKB i wybierz tryb przetwarzania

Skonfiguruj bazę wiedzy AIDB c360_kb dla schematu c360. W demonstracji AWS użyto modelu bge-small-en-v1.5-f16 i ustawienia auto_processing => 'Live'. Są też tryby Background i Disabled:

TrybReakcja na zmianę schematuOdświeżanie
LiveZmiany są obsługiwane przez wyzwalacze zdarzeń PostgreSQL.SemKB jest aktualizowana na bieżąco.
BackgroundZmiany przetwarza asynchronicznie proces roboczy.Aktualizacja odbywa się w tle.
DisabledAutomatyczne przetwarzanie jest wyłączone.Uruchom ręcznie aidb.refresh_semantic_kb().

Jeśli tworzysz więcej niż jedną SemKB, podaj kb_name w wyszukiwaniu. W przeciwnym razie agent nie wskazuje, z której bazy wiedzy ma skorzystać.

4. Włącz endpoint MCP AIDB

Schemat przepływu od JWT użytkownika przez Gateway i agenta do endpointu MCP oraz kontroli uprawnień PostgreSQL, z osobną gałęzią śladów SQL.

W konfiguracji PostgreSQL włącz edb.endpoints_mcp_enabled, dodaj aidb do shared_preload_libraries, a następnie uruchom ponownie PostgreSQL. Przykładowy domyślny port endpointu to 8765. Jeśli endpoint ma nasłuchiwać poza interfejsem lokalnym, skonfiguruj certyfikat i klucz TLS.

Model Context Protocol (MCP) udostępnia narzędziom agenta ustrukturyzowany sposób wywoływania funkcji. Endpoint AIDB obsługuje streamable HTTP MCP, więc w opisanej przez AWS ścieżce nie jest potrzebna dodatkowa warstwa tłumacząca oparta na AWS Lambda.

5. Połącz endpoint z AgentCore Gateway

Umieść endpoint za ALB dostępnym przez HTTPS i zarejestruj go w AgentCore Gateway jako cel MCP. W przykładzie AWS grupa docelowa ALB łączy się z endpointem po HTTPS na porcie 8765. Ta konfiguracja nie weryfikuje łańcucha certyfikatu backendu; AWS zaleca prywatną łączność VPC w środowisku produkcyjnym.

6. Skonfiguruj tożsamość i role PostgreSQL

Amazon Cognito wystawia użytkownikowi token JWT. AgentCore Gateway weryfikuje token i ocenia politykę Cedar określającą dostęp do narzędzi. Oddzielnie AgentCore Identity dostarcza do celu MCP nazwę użytkownika i hasło wybranej roli PostgreSQL przez HTTP Basic. Kod agenta nie otrzymuje tych danych dostępowych.

To PostgreSQL egzekwuje uprawnienia do bazy. Role, uprawnienia do kolumn i zabezpieczenia na poziomie wierszy określają, co zapytanie może odczytać. Dlatego ta sama konfiguracja agenta może zwrócić różne wyniki dla użytkowników korzystających z różnych ról.

7. Sprawdź uprawnienia i ślady zapytań

Przetestuj pełną i ograniczoną rolę tym samym promptem i tymi samymi narzędziami. W demonstracji rola z ograniczonym dostępem otrzymuje błąd uprawnień przy próbie odczytu customers.ssn; reguły bezpieczeństwa na poziomie wierszy mogą z kolei filtrować zwracane rekordy.

AIDB może zapisywać ślady wykonania SQL w schemacie aidb_otel po skonfigurowaniu telemetrii OpenTelemetry. AgentCore osobno wysyła do CloudWatch Transaction Search ślady wywołań narzędzi i modeli oraz informacje o użyciu tokenów. Te zapisy pomagają prześledzić przebieg zapytania i jego wykonanie.

Definicje biznesowe wymagają właściciela

SemKB pomaga agentowi zastosować opisane znaczenie terminu, ale jego konfiguracja nie rozstrzyga, którą z kilku sensownych definicji organizacja uznaje za obowiązującą. W odrębnej, użytkownikowskiej demonstracji Snowflake dla 34 dostawców termin „aktywny dostawca” dał wyniki 25, 24 i 21 zależnie od tego, czy definicja opierała się na zakupach z ostatnich 12 miesięcy, zakupach z 90 dni czy statusie w systemie ERP. To przykład z innego systemu i zestawu danych, opisany w dyskusji użytkowników Snowflake.

Przed dodaniem terminu do widoku lub aliasu ustal, kto zatwierdza jego znaczenie, i opisz definicję w samym schemacie. Gdy pytanie pasuje do więcej niż jednej miary, rozstrzygnij znaczenie przed potraktowaniem wyniku jako odpowiedzi biznesowej.

Testuj poprawność i świeżość osobno od dostępu

Pomyślny odczyt oznacza, że zapytanie przeszło przez kontrolę uprawnień; sam w sobie nie sprawdza, czy jego definicja odpowiada intencji użytkownika ani czy dane są aktualne. Praktycy omawiający agentów dla dużych baz sugerowali sprawdzanie planu zapytania, testowanie rzeczywistych pytań i zapisywanie użytej definicji biznesowej. Jeden z uczestników opisał też porównywanie skrótów kolejnych wersji schematu i oznaczanie definicji powiązanych ze zmienionymi tabelami. Inny wskazał opóźnienie repliki jako przyczynę nieaktualnego salda. To relacje i propozycje uczestników dyskusji o agentach dla dużych baz danych, a nie funkcje EDB.

Poza testem ograniczonej roli przygotuj zestaw znanych pytań i oczekiwanych wyników. Uruchamiaj go po zmianie schematu lub definicji biznesowej, a aktualność rekordów sprawdzaj odrębnie od uprawnień i poprawności SQL.