-

Wektorowa baza danych Milvus w intranecie. Jak RAG ulepsza wyszukiwanie w bazie wiedzy?

Współczesne intranety firmowe przechowują ogromne ilości dokumentów, procedur, instrukcji i wiedzy organizacyjnej. Tradycyjne wyszukiwanie oparte na słowach kluczowych często zawodzi, gdy użytkownik szuka informacji, używając innych terminów niż te, które występują w dokumentach.

Problem: pracownik szuka "jak skonfigurować dostęp do systemu płatności", ale dokument zawiera frazę "konfiguracja integracji płatniczej". Tradycyjne wyszukiwanie nie znajdzie tego dokumentu, mimo że zawiera odpowiedź na pytanie.

Rozwiązanie: RAG (ang. Retrieval-Augmented Generation) z wektorową bazą danych umożliwia wyszukiwanie semantyczne. System rozumie znaczenie zapytania i znajduje dokumenty na podstawie kontekstu, a nie tylko dokładnych dopasowań słów.

W tym artykule pokażemy, jak zintegrować wektorową bazę danych Milvus z Open Intranetem na Drupalu, aby stworzyć inteligentne wyszukiwanie w firmowych bazach wiedzy.


W tym artykule:


Czym jest RAG i dlaczego jest ważne dla intranetów?

RAG (ang. Retrieval-Augmented Generation) to technologia, która łączy wyszukiwanie semantyczne z generowaniem odpowiedzi przez AI. W kontekście intranetów firmowych RAG zapewnia wiele korzyści.

Wyszukiwanie semantyczne

Zamiast szukać dokładnych słów kluczowych, system rozumie intencję użytkownika. 

Przykład:

  • Zapytanie użytkownika: "jak zresetować hasło administratora".
  • Tradycyjne wyszukiwanie: szuka dokumentów zawierających dokładnie te słowa.
  • Wyszukiwanie semantyczne: znajduje dokumenty o "odzyskiwaniu dostępu", "zmianie poświadczeń" czy "przywracaniu uprawnień admina". Nawet, jeśli nie zawierają dokładnie tych słów

Lepsze wyniki dla użytkowników

Analiza zapytań klientów pokazuje, że 66% organizacji szukających rozwiązań intranetowych wymaga zaawansowanego wyszukiwania lub AI search. To nie przypadek – w dużych organizacjach z tysiącami dokumentów tradycyjne wyszukiwanie przestaje wystarczać. Sztuczna inteligencja rozumie kontekst i intencję użytkownika, dzięki czemu sprawdza się w pracy z rozbudowanymi bazami wiedzy.

Skalowalność

Wektorowe bazy danych, takie jak Milvus, mogą obsługiwać miliony dokumentów z zachowaniem szybkiego czasu odpowiedzi. To kluczowe dla organizacji z rozbudowanymi bazami wiedzy.

Wydajność

Szybkie wyszukiwanie podobieństwa nawet w dużych zbiorach danych. Milvus używa zaawansowanych algorytmów indeksowania (HNSW, IVF) do optymalizacji zapytań.

Elastyczność

Możliwość rozbudowy o dodatkowe funkcje AI:

Open Intranet: starter kit dla firmowych intranetów

Open Intranet to open source starter kit na Drupalu do budowy intranetów firmowych. 

Zawiera gotowe funkcje intranetu, takie jak:

  • współpraca i komunikacja,
  • system aktualności i wydarzeń,
  • udostępnianie dokumentów,
  • baza wiedzy,
  • katalog pracowników.

System pozwala organizacjom szybko uruchomić elastyczny portal wewnętrzny bez konieczności budowania wszystkiego od zera.

System Open Intranet na Drupalu z gotową bazą wiedzy autorstwa Droptica.


System Open Intranet z gotową bazą wiedzy

Co to jest Milvus? Baza danych dla RAG

Milvus to baza wektorowa typu open source zaprojektowana specjalnie do przechowywania, indeksowania i wyszukiwania wektorowych reprezentacji tekstu (ang. embeddings).

Jak działa Milvus w kontekście RAG?

  1. Indeksowanie: dokumenty z intranetu są przetwarzane przez model AI (np. OpenAI text-embedding-3-small), który tworzy wektory reprezentujące znaczenie tekstu.
  2. Przechowywanie: wektory są zapisywane w Milvus wraz z metadanymi (tytuł, URL, data).
  3. Wyszukiwanie: gdy użytkownik zadaje pytanie, zapytanie jest również konwertowane na wektor, a Milvus znajduje najbardziej podobne dokumenty na podstawie odległości wektorowej.
  4. Zwrot wyników: system zwraca dokumenty uporządkowane według podobieństwa semantycznego.

Dlaczego Milvus?

  • Open Source: pełna kontrola nad danymi, brak vendor lock-in.
  • Skalowalność: obsługuje miliony wektorów z szybkim czasem odpowiedzi.
  • Gotowa integracja: moduł ai_vdb_provider_milvus dla Drupala ułatwia integrację.
  • Tryb samodzielny: dla mniejszych organizacji można uruchomić w trybie samodzielmym (ang. standalone mode), na jednym serwerze.
  • Gotowe do użycia produkcyjnego: dla większych organizacji można skalować do klastra. 

Przeczytaj również: Rekomendowane bazy wektorowe (VDB) dla Drupala – przegląd dostawców AI


Jak wygląda architektura integracji? Open Intranet + Milvus RAG

Poniższy diagram pokazuje kompletną architekturę integracji:

Diagram prezentujący architekturę integracji Drupala z Milvus wykonany z użyciem narzędzia Mermaid.

 Diagram wykonany z użyciem narzędzia Mermaid

Jakie są konkretne komponenty systemu integracji?

Każdy element architektury pełni określoną rolę, zapewniając płynne przetwarzanie zapytań i zarządzanie danymi w całym środowisku RAG. Poniżej opisujemy, jak poszczególne komponenty współpracują ze sobą w ramach Open Intranetu.

DDEV Application Stack

To środowisko developerskie dostarcza gotową infrastrukturę do uruchomienia intranetu wraz z Milvusem, automatyzując większość konfiguracji. Dzięki temu cały system można uruchomić lokalnie w kilka minut.

Web Container (Drupal Application)

  • Drupal 11 z PHP 8.3.
  • nginx-fpm jako web server.
  • Porty: 80 (HTTP), 443 (HTTPS), 8025 (Mailpit).
  • Integracja z Milvus przez moduł ai_vdb_provider_milvus.

MariaDB (Database)

  • Baza danych dla Drupala.
  • Wersja: MariaDB 10.11.
  • Przechowuje wszystkie dane Drupala (content, config, users).

Milvus RAG Stack

Zestaw usług składających się na Milvus RAG Stack odpowiada za przechowywanie wektorów, metadanych oraz realizację zapytań wyszukiwania. Każdy komponent systemu pełni odrębną rolę w zapewnianiu wysokiej wydajności i stabilności.

etcd (Storage Layer)

  • Przechowywanie metadanych i koordynacja.
  • Port: 2379.
  • Przechowuje: schematy kolekcji, indeksy, konfiguracje.
  • Dlaczego etcd? Jest to rozproszony magazyn klucz-wartość używany przez Milvus do przechowywania metadanych oraz koordynacji między komponentami. Bez etcd Milvus nie może działać.

MinIO (Storage Layer)

  • Object storage dla danych wektorowych.
  • Porty: 9000 (API S3), 9001 (Web Console).
  • Przechowuje: wektory, segmenty, pliki binarne.
  • Dlaczego MinIO? Jest to obiektowy magazyn danych zgodny z API S3. Milvus używa go do przechowywania rzeczywistych danych wektorowych i segmentów. MinIO pozwala na skalowanie i efektywne zarządzanie dużymi ilościami danych wektorowych.

Milvus (Core Engine)

  • Główny silnik wyszukiwania wektorowego.
  • Porty: 19530 (API), 9091 (Health Check).
  • Funkcje:
    • przechowywanie embeddings w formie wektorów,
    • wyszukiwanie podobieństwa semantycznego,
    • indeksowanie i optymalizacja zapytań,
    • API RESTful dla integracji z Drupalem.

Attu (Management UI)

  • Webowy interfejs do zarządzania Milvus.
  • Port: 8521 (exposed przez DDEV).
  • Funkcje:
    • przeglądanie kolekcji i danych,
    • monitorowanie wydajności,
    • zarządzanie indeksami,
    • wizualizacja wyników wyszukiwania.

Jak wygląda przepływ danych w intranecie zintegrowanym z Milvus? 

Przepływ danych między Drupalem, modelem embeddings i bazą Milvus obejmuje kilka kluczowych kroków, które wspólnie tworzą inteligentny proces wyszukiwania. Poniżej opisujemy, jak to działa od momentu zadania pytania aż po prezentację wyników.

Wyszukiwanie semantyczne

  1. Użytkownik zadaje pytanie w interfejsie intranetu.
  2. Drupal konwertuje zapytanie na wektor, używając modelu embeddings (OpenAI text-embedding-3-small).
  3. Zapytanie trafia do Milvus przez moduł ai_vdb_provider_milvus.
  4. Milvus wyszukuje podobne wektory w bazie danych.
  5. Milvus zwraca wyniki uporządkowane według podobieństwa semantycznego.
  6. Drupal wyświetla wyniki użytkownikowi z tytułem, fragmentem treści i wynikiem podobieństwa.

Indeksowanie treści

  1. Nowy dokument zostaje dodany do bazy wiedzy w intranecie.
  2. Drupal automatycznie generuje embedding, używając OpenAI API.
  3. Embedding jest zapisywany w Milvus wraz z metadanymi (tytuł, URL, data).
  4. Dokument jest gotowy do wyszukiwania semantycznego.

Przeczytaj również: Jak usprawniliśmy precyzję odpowiedzi chatbota RAG o 40%


Jak zainstalować Open Intranet z opcją Milvus RAG? Krok po kroku

Proces instalacji został maksymalnie uproszczony dzięki gotowemu skryptowi, który automatycznie konfiguruje wszystkie wymagane komponenty. Wystarczy wykonać kilka poleceń, aby uruchomić pełne demo RAG w swoim środowisku.

Wymagania wstępne

Przed uruchomieniem upewnij się, że masz:

  1. Docker Desktop — uruchomiony i aktywny.
  2. DDEV — zainstalowany (brew install ddev/ddev/ddev na macOS).
  3. OpenAI API Key — wymagany do generowania embeddings.

Proces instalacji Open Intranet RAG demo

Użyj poniższej komendy:

git clone https://github.com/droptica/openintranet_rag_demo.git
cd openintranet_rag_demo
./launch_openintranet_with_rag_demo.sh

Skrypt wykonuje automatycznie:

  1. Klonowanie Open Intranet z Drupal.org.
  2. Pobieranie konfiguracji docker-compose dla Milvus VDB.
  3. Konfigurację DDEV (Drupal 11, PHP 8.3).
  4. Uruchomienie kontenerów (web, db, Milvus).
  5. Instalację zależności Composer.
  6. Dodanie modułu drupal/ai_vdb_provider_milvus:^1.1@beta.
  7. Kopiowanie przepisu (Drupal Recipe) openintranet_milvus_rag.
  8. Instalację Drupala z demo content.
  9. Zastosowanie konfiguracji przepisu (Drupal Recipe) Milvus RAG.
  10. Interaktywne pytanie o klucz API OpenAI (walidacja formatu).
  11. Zapisanie klucza API do modułu Key w Drupalu.
  12. Indeksowanie treści Knowledge Base do Milvus.
  13. Wygenerowanie jednorazowego linku logowania.

Podczas instalacji zostaniesz poproszony o wklejenie klucza API OpenAI. Skrypt waliduje format i przechowuje go bezpiecznie.

Weryfikacja instalacji

Po zakończeniu instalacji warto upewnić się, że wszystkie elementy działają poprawnie i komunikują się ze sobą. Kilka prostych komend pozwoli szybko zweryfikować, czy indeksowanie i wyszukiwanie semantyczne funkcjonują prawidłowo.

1. Sprawdzenie statusu indeksu

cd openintranet_source_code/openintranet
ddev drush search-api:status

Oczekiwany wynik:

knowledge_base_content   Knowledge Base Content   100%         24        24

Jeśli widzisz 100% - wszystko działa!

2. Weryfikacja połączenia z Milvus

  1. Otwórz Milvus Attu UI: sprawdź port za pomocą ddev describe (szukaj portu serwisu Attu).
  2. Połącz się z: http://milvus:19530.
  3. Znajdź kolekcję: openintranet_knowledge_base.
  4. Sprawdź: Entity Count > 0

3. Test API OpenAI

cd openintranet_source_code/openintranet
ddev drush php:eval "
\$provider = \Drupal::service('ai.provider')->createInstance('openai');
\$result = \$provider->embeddings('test', 'text-embedding-3-small', []);
echo count(\$result->getNormalized()) . ' dimensions';
"

Oczekiwany wynik: 1536 dimensions

Ekran z działającą bazą wektorową Milvus dla Open Intranetu


Ekran z działającą bazą wektorową Milvus dla Open Intranetu

Potrzebujesz więcej informacji technicznych?

Więcej informacji technicznych, w tym szczegółowy troubleshooting i wskazówki dotyczące rozwiązywania problemów, znajdziesz w README projektu na GitHub: https://github.com/droptica/openintranet_rag_demo

Jak działa wyszukiwanie RAG? Przykłady użycia

Gotowy przepis dla Drupala przygotowany przez Droptica zawiera przykładową stronę RAG Search na /search-rag-example. Aby ją przetestować:

  1. Otwórz stronę: https://your-site.ddev.site/search-rag-example.
  2. Wprowadź zapytanie wyszukiwania (np. "konfiguracja milvus").
  3. Zweryfikuj wyświetlanie wyników z:
    • tytułem (linkiem do strony źródłowej),
    • fragmentem treści,
    • wynikiem podobieństwa.

Przykład wyszukiwania

Aby pokazać, jak działa RAG w praktyce, poniższy przykład ilustruje różnicę między tradycyjnym wyszukiwaniem a wynikami uzyskanymi dzięki bazie Milvus.

Zapytanie użytkownika: "jak skonfigurować dostęp do systemu".

Tradycyjne wyszukiwanie znajdzie tylko dokumenty zawierające dokładnie te słowa.

Wyszukiwanie RAG znajdzie dokumenty o:

  • konfiguracji uprawnień,
  • zarządzaniu dostępami,
  • ustawieniach systemu autoryzacji,
  • instrukcjach logowania.

Nawet jeśli dokumenty nie zawierają dokładnie frazy "jak skonfigurować dostęp do systemu".

Do czego sprawdzi się Milvus RAG w organizacjach?

Milvus pozwala organizacjom wykorzystać RAG w różnych scenariuszach biznesowych, od wyszukiwania dokumentów po analizę treści. Oto przykładowe obszary.

1. Wyszukiwanie dokumentów

Znajdowanie dokumentów na podstawie znaczenia i kontekstu, a nie na bazie fraz kluczowych. Przykład: pracownik szuka "procedury awaryjnej", a system znajduje dokumenty o "planach ciągłości działania" i "scenariuszach kryzysowych".

2. Chatboty z wiedzą firmową

Tworzenie chatbotów z dostępem do aktualnej wiedzy organizacji. Chatbot może odpowiadać na pytania pracowników, używając dokumentów z intranetu jako źródła wiedzy.

3. Rekomendacje treści

Sugerowanie podobnych treści użytkownikom na podstawie semantycznego podobieństwa. Przykład: po przeczytaniu dokumentu o "bezpieczeństwie danych", system sugeruje dokumenty o "GDPR" i "ochronie prywatności".

4. Automatyczne tagowanie

Automatyczne przypisywanie tagów na podstawie treści dokumentów. System analizuje znaczenie tekstu i przypisuje odpowiednie kategorie bez ręcznej interwencji.

5. Analiza sentymentu

Analiza nastroju w treściach firmowych. System może identyfikować dokumenty wymagające aktualizacji lub te, które mogą budować pozytywną kulturę organizacyjną.

Jakie technologie zostały użyte w demo Open Intranet + Milvus Database? 

Zapoznaj się ze szczegółową listą użytych technologii.

Drupal 11

  • Wersja: 11.x
  • PHP: 8.3
  • Baza danych: MariaDB 10.11
  • Web server: nginx-fpm

Milvus

  • Wersja: 2.5.18
  • Tryb: Standalone (dla developmentu)
  • API: RESTful na porcie 19530
  • Embeddings: 1536 wymiarów (text-embedding-3-small)

OpenAI

  • Model embeddings: text-embedding-3-small
  • Wymiary: 1536
  • Koszt: ~$0.01-0.10 za całe demo

DDEV

  • Wersja: v1.24.10
  • Platforma: Docker Desktop
  • Networking: ddev_default (external network)

Pytania i odpowiedzi (FAQ) na temat bazy Milvus w intranecie?

Zapoznaj się z najczęstszymi pytaniami i odpowiedziami na temat integracji Milvus z intranetem. 

Czy RAG wymaga stałego połączenia z internetem dla OpenAI API?

W wersji demo projektu na GitHub połączenie z OpenAI API jest wymagane. Jednak rozwiązanie można skonfigurować z innymi modelami embeddings w zależności od potrzeb organizacji, np. z lokalnymi modelami (Sentence Transformers) działającymi bez połączenia z internetem lub innym cloudowym API (Claude, lokalne serwery AI).

Jakie są koszty używania OpenAI API dla embeddings?

Model text-embedding-3-small kosztuje $0.02 za 1M tokenów. Dla typowej bazy wiedzy z 1000 dokumentów (średnio 500 słów każdy) koszt indeksowania to około $0.10-0.50 jednorazowo. Wyszukiwanie wymaga generowania embeddingu tylko dla zapytania (kilka słów), więc koszty są minimalne.

Przeczytaj również: Jak obniżyliśmy koszty API AI o 95% dzięki inteligentnemu routingowi pytań

Jak skalować rozwiązanie dla większej organizacji?

W przypadku większych organizacji można:

  • przejść z trybu standalone na klaster Milvus (wiele węzłów),
  • użyć większych instancji MinIO dla większej pojemności,
  • rozdzielić etcd na osobne węzły dla lepszej wydajności,
  • dodać load balancery przed Milvus API.

Czy można użyć innych modeli embeddings zamiast OpenAI?

Tak, moduł ai_vdb_provider_milvus jest agnostyczny względem źródła embeddings. Można użyć innych providerów (Claude, lokalne modele) o ile zwracają wektory w odpowiednim formacie.

Jak często należy przeindeksować treść?

To zależy od częstotliwości zmian w bazie wiedzy. Dla dynamicznych intranetów z częstymi aktualizacjami można skonfigurować automatyczne przeindeksowanie przy każdej zmianie treści. Dla bardziej statycznych baz wystarczy przeindeksowanie raz dziennie lub tygodniowo.

Czy rozwiązanie działa dla organizacji z wymaganiami compliance (GDPR, sektor zdrowotny)?

Tak, ponieważ wszystkie komponenty (Drupal, Milvus, etcd, MinIO) mogą działać on-premise, dane nigdy nie opuszczają infrastruktury organizacji. To kluczowe dla organizacji z wymaganiami compliance. OpenAI API wymaga wysłania treści dokumentów, więc dla bardzo wrażliwych danych można rozważyć lokalne modele embeddings.

Jakie są wymagania sprzętowe dla Milvus w trybie samodzielnym (standalone)?

Dla małych organizacji (do 10,000 dokumentów) wystarczy:

  • 4GB RAM
  • 2 CPU cores
  • 20GB dysku

Dla większych organizacji wymagania rosną proporcjonalnie do liczby dokumentów i zapytań.

Baza danych Milvus w intranecie – podsumowanie

Integracja Milvus RAG z Open Intranetem otwiera nowe możliwości dla platform firmowych. Do najważniejszych korzyści należą:

  • Inteligentne wyszukiwanie oparte na znaczeniu, nie tylko słowach kluczowych.
  • Lepszy user experience w intranecie dzięki rozumieniu kontekstu i intencji.
  • Skalowalność dla organizacji z dużymi bazami wiedzy.
  • Elastyczność w rozbudowie o dodatkowe funkcje AI.

Wszystkie komponenty są open source, co oznacza pełną kontrolę nad danymi i brak vendor lock-in. Rozwiązanie jest gotowe do użycia na produkcji i można je skalować w zależności od potrzeb organizacji.

Potrzebujesz wdrożenia wektorowej bazy danych w intranecie?

W Droptica projektujemy i wdrażamy rozwiązania oparte na sztucznej inteligencji, wykorzystując LLM-y, bazy wektorowe i zaawansowane pipeline’y RAG. Pomagamy dobrać odpowiednią technologię, integrujemy wyszukiwanie semantyczne, tworzymy chatboty firmowe oraz optymalizujemy jakość generowanych odpowiedzi. Sprawdź naszą usługę rozwoju generatywnej AI i zobacz, jak możemy wesprzeć Twoją organizację w budowie inteligentnych rozwiązań opartych na danych.

-