O czym jest ten film
- Cole Medin pokazuje, jak rozwinąć osobisty system wiedzy wspierany przez AI, aby mogli z niego korzystać także współpracownicy.
- Proponuje pozostawić każdej osobie własnego asystenta, a wspólnie udostępniać uporządkowaną wiedzę firmy.
- Informacje z różnych źródeł — między innymi Slacka, repozytoriów kodu i dokumentacji — trafiają do bazy w jednolitym formacie.
- Każdy zapis otrzymuje oznaczenie określające, którym grupom wolno go odczytać.
- Uprawnienia są egzekwowane w bazie danych, a nie przez osobistego asystenta użytkownika.
- Serwer MCP daje asystentom prosty sposób wyszukiwania dokumentów, pobierania ich treści i wskazywania osób znających dany temat.
- Wyszukiwanie łączy dopasowanie słów z wyszukiwaniem według znaczenia i podaje źródła odpowiedzi.
- Przykład został zbudowany z użyciem Oracle AI Database we współpracy z firmą Oracle; autor przedstawia go jako wzorzec architektury, który można zastosować także z innymi narzędziami.
10 najważniejszych takeaways — z kontekstem zastosowania
1.Zachowaj osobistych asystentów
Na czym polega: Wspólna baza wiedzy nie wymaga zastąpienia wszystkich indywidualnych systemów jednym asystentem. Każda osoba może nadal korzystać ze swojego narzędzia, pamięci i sposobu pracy.
Jak stosować: Dodaj osobistemu asystentowi narzędzie do korzystania z firmowej bazy wiedzy. Dzięki temu dotychczasowy sposób pracy pozostanie użyteczny, a asystent zyska dostęp do informacji zespołu.
Na co uważać: Nie utożsamiaj osobistej pamięci asystenta z wiedzą, którą można udostępnić całej firmie. Dostęp do danych zespołu wymaga osobnej kontroli.
2.Utrzymuj jedną wspólną bazę wiedzy
Na czym polega: Gdy z informacji korzysta wiele osób, lokalny zbiór plików Markdown przestaje wystarczać. Potrzebne jest wspólne miejsce, w którym można zarządzać dokumentami, wyszukiwaniem i uprawnieniami.
Jak stosować: Zasilaj centralną bazę informacjami z używanych przez zespół źródeł, zamiast kopiować pełen zbiór do systemu każdej osoby.
Na co uważać: Samo zgromadzenie danych w jednym miejscu nie rozwiązuje problemu dostępu. Bez uprawnień wspólna baza może ujawniać informacje niewłaściwym osobom.
3.Nadaj danym z różnych źródeł wspólny format
Na czym polega: W przykładzie autora wątki ze Slacka, kod i dokumentacja trafiają do jednej tabeli dokumentów. Każde źródło dostarcza dane w postaci zgodnej z tym samym schematem.
Jak stosować: Dla każdego źródła przygotuj połączenie, które pobierze treść i zapisze ją wraz z potrzebnymi polami, takimi jak tytuł, adres, autor i oznaczenie dostępu.
Na co uważać: Ujednolicenie formatu nie powinno usuwać informacji potrzebnych później do wskazania źródła, autora lub właściwych uprawnień.
4.Oznaczaj dostęp podczas dodawania dokumentu
Na czym polega: System musi wiedzieć, czy dokument należy na przykład do obszaru marketingu, operacji czy obu tych grup. Autor przypisuje takie oznaczenia, gdy informacja trafia do bazy.
Jak stosować: Ustal, jakie oznaczenie otrzymują dane z każdego kanału lub zbioru dokumentów. Jeśli z danego miejsca korzysta kilka grup, przypisz odpowiednie oznaczenia każdej z nich.
Na co uważać: Błędne oznaczenie przy dodawaniu treści przełoży się na błędny dostęp podczas wyszukiwania.
5.Egzekwuj uprawnienia w bazie danych
Na czym polega: W demonstracji baza rozpoznaje użytkownika na podstawie przypisanego mu tokenu i udostępnia tylko rekordy, do których ma on dostęp. Osobisty asystent nie decyduje o tym samodzielnie.
Jak stosować: Powiąż tożsamość użytkownika z grupami, do których należy, a następnie filtruj wyniki na poziomie rekordów w bazie.
Na co uważać: Instrukcja dla asystenta nie zastąpi zabezpieczenia w systemie przechowującym dane. Użytkownik może zmienić działanie własnego asystenta lub skłonić go do zignorowania instrukcji.
6.Uprość połączenie przez serwer MCP
Na czym polega: Serwer MCP udostępnia osobistym asystentom zestaw narzędzi do korzystania ze wspólnej wiedzy. (Informacja dodatkowa: MCP to protokół pozwalający asystentom AI korzystać z zewnętrznych narzędzi i źródeł danych.)
Jak stosować: Udostępnij przez serwer funkcje potrzebne użytkownikom, takie jak wyszukiwanie dokumentów, wyszukiwanie kodu i pobieranie pełnej treści. Każda z nich powinna działać w granicach przyznanych uprawnień.
Na co uważać: Wygodny interfejs nie może omijać kontroli dostępu. W opisanym rozwiązaniu ostateczne ograniczenie wyników należy do bazy danych.
7.Łącz dwa sposoby wyszukiwania
Na czym polega: Wyszukiwanie słów pomaga znaleźć konkretne nazwy i identyfikatory. Wyszukiwanie według znaczenia odnajduje treści związane z pytaniem, nawet gdy użyto w nich innych określeń.
Jak stosować: Połącz wyniki obu metod i dobierz sposób ich oceny do rodzaju firmowych danych. Następnie przekaż asystentowi tylko najbardziej przydatne fragmenty.
Na co uważać: Przy dużym zbiorze samo przefiltrowanie dokumentów według uprawnień nadal może pozostawić tysiące wyników. Asystent potrzebuje trafnego wyboru, a nie całej dostępnej zawartości.
8.Podawaj źródła odpowiedzi
Na czym polega: Odpowiedź ma wskazywać dokument, wątek lub inną treść, na której została oparta. Użytkownik może wtedy sprawdzić ją w oryginalnym miejscu.
Jak stosować: Zachowuj adres źródła przy dodawaniu dokumentu do bazy i dołączaj go do wyników przekazywanych asystentowi.
Na co uważać: Nawet odpowiedź brzmiąca przekonująco wymaga sprawdzenia, gdy ma posłużyć do podjęcia decyzji. Odnośnik pozwala ustalić, czy źródło rzeczywiście potwierdza odpowiedź.
9.Pozwól znaleźć osobę, którą warto zapytać
Na czym polega: Autor eksperymentuje z funkcją, która na podstawie autorów zapisów i kontekstu rozmów wskazuje pracowników znających dany temat.
Jak stosować: Przechowuj informację o autorach i umożliwiaj zadanie pytania „Kto zna się na tym zagadnieniu?”, gdy dokumenty nie wystarczają.
Na co uważać: Udział w rozmowie nie musi oznaczać, że dana osoba jest właściwym ekspertem. Taki wynik traktuj jako podpowiedź, kogo zapytać.
10.Sprawdzaj dostęp z perspektywy różnych użytkowników
Na czym polega: W demonstracji to samo pytanie o limit rabatu daje odpowiedź osobie uprawnionej, a użytkownikowi bez dostępu nie ujawnia tej informacji.
Jak stosować: Testuj te same pytania z kont osób należących do różnych grup. Sprawdź zarówno treść odpowiedzi, jak i to, czy wyszukiwanie nie zdradza niedostępnych dokumentów.
Na co uważać: Komunikat „nie znaleziono informacji” może oznaczać brak danych albo brak dostępu. Zdecyduj, jak system ma to przedstawiać użytkownikowi, nie ujawniając chronionej treści.
Redakcyjne tłumaczenie
Od osobistego systemu wiedzy do wiedzy zespołu
Przez cały rok budowałem własny „drugi mózg” wspierany przez AI i pokazywałem, jak stworzyć podobny system. Chodzi o asystenta, który pomaga mi w pracy, a przy okazji stopniowo gromadzi wiedzę o tym, czym zajmuję się w firmie. Na kanale opublikowałem już wiele materiałów o jego budowie.
Widok grafu, który pokazuję, nie jest szczególnie przydatnym narzędziem pracy. Dobrze jednak obrazuje, jak często korzystam z tego systemu. Dziś pomaga mi on w każdej części działalności, w której chciałem go używać. Nadal daleko mu do ideału, ale oszczędza mi mnóstwo czasu. Kiedy ostatnio to mierzyłem, kilka miesięcy temu, wychodziło około 20 godzin tygodniowo.
Jestem zadowolony z tego, jak działa mój osobisty system. Zacząłem więc zadawać sobie kolejne pytanie: jak udostępnić podobne korzyści wszystkim osobom, z którymi współpracuję? Inni również często mnie o to pytają. Rozwinięcie osobistego narzędzia w system dla zespołu wydaje się naturalnym krokiem, ale wymaga rozwiązania kilku nowych problemów.
Przy wielu współpracownikach informacje napływają z licznych miejsc. Trzeba zdecydować, jak je zbierać i przechowywać. Zbiór plików Markdown w Obsidianie, który wystarcza jednej osobie, nie sprawdzi się już w tej roli. Potrzebne są też metody wyszukiwania, które zachowają skuteczność przy większej liczbie dokumentów, oraz odnośniki pozwalające sprawdzić źródła odpowiedzi.
Jest jeszcze sprawa dostępu. Nie można zakładać, że każdy członek zespołu powinien widzieć wszystko. Dokumenty trzeba oznaczać zgodnie z ich źródłem i przeznaczeniem, a potem dopuścić do nich tylko właściwe osoby.
Pokażę, jak podchodzę do tych zagadnień. Do materiału dołączam działający przykład, który można wykorzystać przy rozwijaniu własnego systemu. Moim zdaniem warto pomyśleć o tym zarówno w kilkuosobowym zespole, jak i w dużej organizacji.
Ten przykład powstał we współpracy z Oracle. Korzystam w nim z Oracle AI Database, żeby pokazać rozwiązanie, które może działać także na skalę dużej firmy. Baza obsługuje elementy potrzebne mi do przyjmowania danych, wyszukiwania i zarządzania uprawnieniami. Będę jednak mówił przede wszystkim o zasadach projektowania takiego systemu; można je zastosować również z innymi narzędziami.
Wspólna wiedza, osobni asystenci
Pierwsza decyzja dotyczy budowy całego rozwiązania. Można by pomyśleć, że po utworzeniu systemu zespołowego trzeba porzucić własnego asystenta. Nie ma takiej potrzeby. Osobisty system nadal jest narzędziem, z którym pracujesz na co dzień. Wspólna staje się przede wszystkim baza wiedzy, do której może sięgać.
Rozważałem dwa warianty. W pierwszym każda osoba zachowuje własnego asystenta, a zespół współdzieli bazę wiedzy. W drugim wszyscy korzystają z tego samego asystenta przez osobne interfejsy. Wybrałem pierwszy wariant.
Dzięki temu możemy wspólnie ustalać zasady dostępu i korzystać z tych samych firmowych informacji, a jednocześnie pozostawić każdemu jego własny sposób pracy z AI. Osobiste systemy różnią się między sobą. Mają odmienne ustawienia, pamięć i zachowania, więc nie chciałem odbierać ludziom możliwości ich dostosowywania. Rozdzielenie asystentów ułatwia też rozwijanie całości, gdy przybywa użytkowników.
Firmowa wiedza musi natomiast znajdować się w jednym miejscu. Nie wystarczy umieścić rozmów ze Slacka, repozytoriów GitHuba i dokumentacji w repozytorium, które wszyscy skopiują na swoje komputery. Lokalny zbiór notatek, odpowiedni dla jednej osoby, utrudniłby zarządzanie dostępem i zapewnienie wszystkim aktualnych danych.
Dlatego przechowuję informacje w centralnej bazie. To w niej odbywa się wyszukiwanie i egzekwowanie uprawnień. Osobiste asystenty łączą się z nią przez serwer MCP, który udostępnia im potrzebne funkcje.
Jeden format dla różnych źródeł
W pokazanym rozwiązaniu najważniejsza jest jedna tabela o nazwie documents. Nie tworzę osobnej tabeli dla każdego źródła. Niezależnie od tego, czy informacja pochodzi z wątku na Slacku, repozytorium kodu czy dokumentacji, zapisuję ją w tym samym formacie.
Dokument może zawierać między innymi tytuł, treść, adres źródła i autora. Są tam również pola przydatne do określenia uprawnień oraz do ustalenia, kto w firmie zna dany temat. Wspólny schemat upraszcza późniejsze zapytania: asystent nie musi wiedzieć, jak zbudowany jest każdy system, z którego pobrano informacje.
Za pobieranie danych odpowiadają osobne połączenia ze źródłami. Połączenie ze Slackiem odczytuje wątek i przygotowuje zapis zgodny ze schematem dokumentu. Ustala jego autora, treść, źródło, metadane i oznaczenia dostępu. Podobnie można obsłużyć inne miejsca, w których firma przechowuje wiedzę. Gdy dane znajdą się w bazie, wszystkie osobiste asystenty mogą korzystać z tego samego sposobu wyszukiwania.
Jak asystent łączy się z bazą
Serwer MCP jest łącznikiem między osobistymi asystentami a firmową wiedzą. Z punktu widzenia asystenta stanowi po prostu dodatkowe narzędzie, więc nie trzeba przebudowywać całego osobistego systemu.
W moim przykładzie serwer udostępnia funkcję potwierdzenia tożsamości, wyszukiwanie dostępnych dokumentów, osobne wyszukiwanie kodu oraz pobieranie pełnego dokumentu. Każda z tych operacji uwzględnia uprawnienia użytkownika. Eksperymentuję też z funkcją odpowiadającą na pytanie, kto w firmie zna się na danym zagadnieniu. Jeśli przy zapisach zachowamy informacje o autorach, możemy wskazać osobę, do której warto zwrócić się z dalszym pytaniem.
To prosty zestaw funkcji, ale można go rozwijać stosownie do potrzeb zespołu. Najpierw trzeba jednak zadbać o to, by baza wiedziała, komu wolno zobaczyć poszczególne informacje.
Oznaczanie dokumentów i nadawanie uprawnień
Bez kontroli dostępu zapytanie wysłane przez serwer MCP mogłoby zwrócić każdemu użytkownikowi dowolny zapis z bazy. Pierwszy krok wykonujemy więc już wtedy, gdy dodajemy dokument.
Dla każdego źródła ustalamy, jakie oznaczenie otrzymają pochodzące z niego informacje. Dane z kanału operacyjnego na Slacku mogą należeć do obszaru operacji, a treści z firmowej przestrzeni marketingu — do obszaru marketingu. Oznaczenie trafia do każdego nowego zapisu. Jeśli nad materiałem pracują dwie grupy, dokument może otrzymać dwa oznaczenia.
W moim przykładzie takie informacje znajdują się w kolumnie tabeli dokumentów. Na ich podstawie baza ogranicza dostęp do poszczególnych rekordów. To jedna część rozwiązania. Druga polega na rozpoznaniu osoby, która zadaje pytanie.
W bazie mam tabelę tokenów MCP. Administrator przygotowuje tokeny i przypisuje je konkretnym osobom. Użytkownik dodaje otrzymany token do konfiguracji połączenia ze wspólną bazą. Osobna tabela wiąże jego tożsamość z grupami, do których należy.
W demonstracji Jeff ma dostęp tylko do informacji dotyczących operacji. Julia może korzystać z wiedzy marketingu i operacji. Przewidziałem też specjalne oznaczenie dla kierownictwa, dające dostęp do wszystkich dokumentów. To przykładowy podział, który pokazuje, jak można przypisywać różnym osobom różne zakresy dostępu.
Gdy użytkownik wysyła pytanie, baza na podstawie tokenu ustala jego tożsamość i sprawdza przypisane mu grupy. Następnie udostępnia wyłącznie rekordy, które wolno mu odczytać. W moim rozwiązaniu ograniczenie jest egzekwowane na poziomie rekordów Oracle AI Database.
To najważniejsza zasada niezależnie od użytej technologii: o dostępie musi rozstrzygać system przechowujący dane. Nie można powierzyć tej decyzji osobistemu asystentowi. Użytkownik mógłby zmienić jego działanie albo wpłynąć na nie odpowiednio sformułowaną instrukcją. Zabezpieczenie powinno działać w systemie zdalnym, nad którym użytkownik nie ma takiej kontroli.
Ten sam asystent, inny zakres wiedzy
Na potrzeby demonstracji sam dodałem przykładowych użytkowników, ich uprawnienia i tokeny. W zwykłym wdrożeniu zrobiłby to administrator, który następnie przekazałby tokeny członkom zespołu.
Konfiguracja po stronie użytkownika jest krótka: podaje adres serwera MCP i przypisany mu token. W demonstracji serwer działa lokalnie, ale na co dzień byłby dostępny pod adresem zdalnym. Po takim połączeniu osobisty asystent może korzystać z firmowej bazy jako z kolejnego narzędzia.
Ja zwykle używam swojego systemu przez Codex albo Claude Code w wierszu poleceń. Kiedy pytam o maksymalny rabat dla klienta korporacyjnego, asystent rozpoznaje, że odpowiedź wymaga sięgnięcia do wiedzy zespołu. Wywołuje odpowiednią funkcję serwera MCP i na podstawie znalezionych informacji odpowiada, że przedstawiciel handlowy może zaoferować do 20 procent rabatu od ceny katalogowej przy umowie rocznej.
Ten wynik zależy jednak od tego, kto pyta. W pokazanym przykładzie informacja jest dostępna dla Sama. Gdy to samo pytanie zadaję jako Jeff, system nie zwraca danych o limicie rabatu. Przy omawianiu demonstracji omyłkowo przypisałem pierwszą odpowiedź Jeffowi; pochodziła ona z sesji Sama. Właśnie ta różnica pokazuje działanie uprawnień.
Można przyjąć zasadę, że dokument bez pasującego uprawnienia jest dla użytkownika całkowicie niewidoczny. Można też zaprojektować odpowiedź tak, by informowała o istnieniu niedostępnego materiału, bez ujawniania jego treści. To zależy od potrzeb organizacji. W moim ustawieniu brak uprawnienia oznacza, że użytkownik nie widzi dokumentu.
Jeżeli odpowiedzi nie da się znaleźć, przydaje się osobna funkcja wskazująca osobę znającą temat. Pytam na przykład, kto orientuje się w działaniu mechanizmu automatycznie dostosowującego liczbę maszyn obsługujących zadania wykonywane partiami. System wskazuje Jeffa, a jako drugą osobę — Elenę, która również uczestniczyła w odpowiednim wątku na Slacku. Ktoś z innego działu może dzięki temu wiedzieć, do kogo zwrócić się z pytaniem.
Wyszukiwanie przy większej liczbie dokumentów
Połączenie asystentów z bazą i kontrola dostępu to tylko część pracy. Trzeba jeszcze skutecznie odnajdywać informacje. W osobistym zbiorze plików Markdown proste wyszukiwanie słów może wystarczać. W systemie zespołowym liczba zapisów z rozmów, repozytoriów i dokumentacji może sięgać tysięcy, a nawet milionów.
Najlepiej sprawdza mi się połączenie dwóch metod. Pierwsza wyszukuje konkretne słowa, więc dobrze radzi sobie z nazwami i identyfikatorami. Druga wyszukuje według znaczenia: pozwala odnaleźć tekst dotyczący danego pojęcia, choć nie zawiera dokładnie tych samych słów co pytanie. Razem pomagają nadrobić ograniczenia każdej z metod stosowanej osobno.
Wyniki obu sposobów wyszukiwania trzeba odpowiednio ocenić i wybrać najbardziej przydatne. Nawet po zastosowaniu uprawnień zbiór dostępnych dokumentów może być duży. Jeśli w bazie znajduje się 40 tysięcy zapisów, a dany użytkownik może zobaczyć 10 tysięcy z nich, nadal chcemy przekazać asystentowi tylko kilka istotnych dokumentów lub fragmentów. Bez tego trudno byłoby uzyskać zwięzłą i trafną odpowiedź.
Równie ważne są źródła. Odpowiedź powinna prowadzić do wątku na Slacku, strony dokumentacji czy innego miejsca, z którego pochodzi informacja. Dzięki temu można ją sprawdzić i ocenić, czy asystent rzeczywiście oparł się na firmowych materiałach.
Narzędzia użyte w przykładzie
W pokazanym rozwiązaniu korzystam z Oracle AI Database oraz jej połączenia z LangChain. Pakiet LangChain dla tej bazy pomaga mi przygotowywać liczbowe reprezentacje tekstu potrzebne do wyszukiwania według znaczenia, a także łączyć je z wyszukiwaniem słów.
Według przedstawionej przeze mnie konfiguracji Oracle AI Database obsługuje te zadania bez dokładania osobnej usługi do przygotowywania reprezentacji tekstu czy wyszukiwania. Mogę więc przetwarzać dokumenty i pytania użytkowników oraz szukać wyników obiema metodami w ramach tego rozwiązania. Integracja ma też dokumentację w materiałach LangChain.
Przykładowy system można potraktować jako punkt wyjścia do własnego wdrożenia. Najważniejsze decyzje pozostają takie same niezależnie od wyboru narzędzi: osobiste asystenty korzystają ze wspólnej bazy, dokumenty otrzymują oznaczenia dostępu przy dodawaniu, baza egzekwuje uprawnienia, a wyszukiwanie wybiera trafne informacje i pozwala sprawdzić ich źródła.