Przejdź do treści
Workin'FlowsBlog → RAG Vertex AI: wymiary 768
ai

RAG na Vertex AI: czemu 1536 wymiarów zwraca HTTP 400

Adrian Krawczyk opublikowane ostatnia aktualizacja 4 min czytania

Ustawiłem 1536 wymiarów jak w tutorialu. Vertex zwrócił 400. Żadnego konkretnego komunikatu, ściana. Po 3 godzinach znalazłem przyczynę. Zapisuję, żeby następny nie tracił tych godzin.

Jeśli budujesz RAG i decydujesz się na Vertex AI Vector Search, pewnie przerabiasz ten sam scenariusz. Czytasz tutorial, kopiujesz konfigurację, odpalasz skrypt i nagle dostajesz HTTP 400 InvalidArgument. Żadnego konkretnego komunikatu, po prostu ściana. Zaczynasz jojczeć, bo deadline goni, a Ty nie wiesz, co jest nie tak.

Ten artykuł to konkretna kmina dla inżynierów i architektów, którzy ogarniają RAG na Vertex AI. Rozkminimy, dlaczego ślepe kopiowanie ustawień z poradników pod inne API embeddings to prosty sposób na bengier i jak poprawnie ustawić wymiary wektora, żeby system działał.

Skąd bierze się błąd 400?

Zacznijmy od faktów. Większość tutoriali w sieci bazuje na modelach embeddingowych innych dostawców (np. text-embedding-ada-002 generuje wektory o 1536 wymiarach). To standard, do którego wszyscy się przyzwyczaili. Kiedy więc konfigurujesz index w Vertex AI Vector Search, naturalnym odruchem jest wpisanie 1536 w parametrze dimensions.

Problem w tym, że Vertex AI Text Embeddings API działa inaczej. Modele od Google, takie jak textembedding-gecko@001, textembedding-gecko-multilingual@001, text-embedding-004 czy text-multilingual-embedding-002, generują wektory o 768 wymiarach.

Kiedy Twój index w Vertex AI oczekuje 768 wymiarów (bo taki model wybrałeś), a Ty próbujesz wrzucić do niego wektor o długości 1536 (bo skopiowałeś kod z tutoriala pod inne API), Vertex rzuca HTTP 400. To klasyczny dimension mismatch. System nie zgaduje, nie przycina wektora w locie. Odrzuca żądanie.

Konkretna wartość text-multilingual-embedding-002: max 768 wymiarów. Ustawienie outputDimensionality: 1536 skutkuje HTTP 400. Bez negocjacji.

Zasada niezmienności indeksu

Jest jeszcze jeden haczyk, o którym milczy większość dokumentacji. Parametr dimension w Vertex AI Vector Search jest immutable.

Oznacza to, że kiedy już stworzysz index z określoną liczbą wymiarów, nie możesz tego zmienić. Nie ma opcji edycji, nie ma migracji w miejscu. Jeśli jorgnąłeś złą liczbę na etapie tworzenia indeksu, musisz go usunąć i zbudować od nowa. To kosztuje czas, a jeśli masz wgrane miliony dokumentów, kosztuje też obliczenia.

Dlatego zanim w ogóle odpalisz skrypt tworzący index, sprawdzasz dokładną specyfikację modelu embeddingowego, którego używasz. Nie zakładasz, nie kopiujesz z pamięci. Sprawdzasz.

Jak to ogarniamy w praktyce?

Zamiast błądzić po dokumentacji, trzymam się prostego algorytmu przy każdym nowym projekcie RAG:

  1. Wybierz model embeddingowy (np. text-multilingual-embedding-002).
  2. Sprawdź w oficjalnej dokumentacji Google Cloud jego output dimension (dla text-multilingual-embedding-002 to 768).
  3. Ustaw parametr dimensions w konfiguracji indeksu Vertex AI dokładnie na tę liczbę.
  4. Upewnij się, że Twój kod generujący wektory używa tego samego modelu i nie hardcoduje innej wartości.

Jeśli musisz użyć 1536 wymiarów, bo np. migrujesz z innego dostawcy i nie chcesz robić re-embeddingu całej bazy, Vertex AI nie jest tu elastyczny w zakresie natywnych modeli. Musisz albo użyć zewnętrznego modelu, albo zaakceptować 768 wymiarów i przebudować bazę.

Tabela modeli Vertex AI i ich wymiarów

Model Wymiary Uwagi
text-multilingual-embedding-002768Default w WF, wielojęzyczny
text-embedding-004768Angielski, dobry na kod
textembedding-gecko@001768Legacy, nie polecam nowym projektom
textembedding-gecko-multilingual@001768Legacy wielojęzyczny
modele zewnętrzne (np. OpenAI)1536+Nie natywne Vertex, inny flow
Dimension mismatch to cichy zabójca RAG-ów. Błąd 400 bez kontekstu, trzy godziny debugowania. Zamiast jojczeć nad logami, sprawdź wymiary modelu zanim stworzysz indeks.

Key takeaways

Przed startem nowego projektu RAG Otwórz dokumentację Google Cloud, sprawdź specyfikację swojego modelu embeddingowego i zapisz dokładną liczbę wymiarów w pliku konfiguracyjnym projektu. Niech to będzie single source of truth. Nie notatka w głowie. Plik.

Najczęstsze pytania

Dlaczego Vertex AI Vector Search zwraca HTTP 400 przy dodawaniu wektorów?

Najczęstszy powód to dimension mismatch: indeks stworzony z inną liczbą wymiarów niż generuje wybrany model. Modele Google generują 768-wymiarowe wektory, nie 1536 jak część innych modeli. Jeśli skopiowałeś konfigurację z tutoriala, masz właśnie ten problem.

Czy można zmienić wymiary indeksu po jego utworzeniu?

Nie. Parametr dimensions w Vertex AI Vector Search jest niezmienny po utworzeniu indeksu. Jedyne wyjście to usunięcie indeksu i zbudowanie od nowa z poprawną liczbą wymiarów.

Ile wymiarów ma model text-multilingual-embedding-002?

768. To domyślny model w projektach Workin'Flows. Maksymalna wartość outputDimensionality to 768. Próba ustawienia 1536 skutkuje HTTP 400 InvalidArgument.

Budujesz RAG na Vertex AI?

Zaczynam od warsztatu procesu (90 minut, bezpłatny). Rozrysujemy architekturę, dobierzemy model embeddingowy i powiem wprost, gdzie najczęściej ludzie tracą czas przy Vertex AI. Bez wciskania jednego słusznego podejścia.

Zamów warsztat → Lub napisz bezpośrednio.
Nota o procesie: Szkic artykułu powstał z udziałem agenta AI w ramach Workin'Agency. Redakcja merytoryczna, weryfikacja techniczna i zatwierdzenie: Adrian Krawczyk. (AI Act, Art. 50)