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
c360jako tabelecustomers,locations,productsipurchases; - 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:
| Tryb | Reakcja na zmianę schematu | Odświeżanie |
Live | Zmiany są obsługiwane przez wyzwalacze zdarzeń PostgreSQL. | SemKB jest aktualizowana na bieżąco. |
Background | Zmiany przetwarza asynchronicznie proces roboczy. | Aktualizacja odbywa się w tle. |
Disabled | Automatyczne 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
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.