Tofauti Kati ya Vichujio (Filters) na Kuta (Walls)

Unajenga wakala wa AI (AI agent) mwenye uwezo wa kufikia data zako. Una chaguzi mbili kwa ajili ya usalama. Unaweza kuchuja data, au unaweza kuweka kuta (walling).

Kuchuja (Filtering) inamaanisha hoja yako (query) inarudisha safu (rows) fulani tu. Kuweka kuta (Walling) inamaanisha wakala hawezi kabisa kufikia safu zilizofichwa.

Hizi zinaonekana kuwa sawa mpaka kitu kinapoharibika.

Hivi karibuni nilijenga mfumo wa kugeuza maneno milioni 1.2 kuwa msingi wa maarifa (knowledge base). Nilitumia Supabase kusimamia data hiyo. Nilitaka wakala wangu wa AI waone maudhui ya umma pekee.

Nilitumia Postgres view ya kawaida kuchuja data:

CREATE VIEW public_seeds AS
  SELECT * FROM moments
  WHERE visibility = 'public'
    AND is_canonical = true;

Hii inaonekana kuwa sahihi. Lakini ina kasoro kubwa. Kwa kawaida, Postgres view inafanya kazi kama mmiliki (owner), siyo mtu anayeita (calling it). Mmiliki wa view mara nyingi huwa na ufikiaji kamili. Hii inamaanisha sera zako za Row Level Security (RLS) hazitumiki kwenye view hiyo.

Hukuwa umejenga ukuta. Ulijenga kichujio.

Ikiwa kichujio kitafeli, wakala wa AI hataona. Binadamu huona hitilafu au data isiyo sahihi. Wakala huchakata tu chochote anachopokea. Ikiwa kichujio chako kitafeli, wakala wako ataanza kutumia data za siri bila onyo.

Postgres 15 ilitatua hili kwa kutumia chaguo la security_invoker.

Unapoweka security_invoker kuwa true, view inafanya kazi kama nafasi (role) inayoiita. Hii inalazimisha view kufuata sera zako za RLS. View inakuwa lango la kimuundo (structural gate).

Njia sahihi:

CREATE VIEW public_seeds
  WITH (security_invoker = true)
AS
  SELECT * FROM moments
  WHERE visibility = 'public'
    AND is_canonical = true;

Sasa ukuta ni wa kimuundo. Hata kama mwanatengenezaji (developer) ataandika query mbaya au join, sera ya RLS inailinda jedwali (table).

"Hili halipaswi kutokea" inategemea kila kitu kufanya kazi kikamilifu. "Hili haliwezi kutokea" inategemea usanifu (architecture) wako.

Unapojenga kwa ajili ya AI, lazima uunde kwa ajili ya kile ambacho hakiwezi kutokea.

Mambo matatu ya kuangalia katika mipangilio yako:

Chanzo: https://dev.to/chadtdyar/the-difference-between-this-shouldnt-happen-and-this-cannot-happen-in-ai-content-pipelines-1g0p

Jumuiya ya kujifunza ya hiari: https://t.me/GyaanSetuAi