"Короче, сижу я такой наслаждаюсь своей ноотропной таблеткой с Шен Пуэром и начинаю затаскивать в наш проект локальный энкодер семантик роутера (чтобы каждый раз на стартапе деньги не тратить, пусть и небольшие, на пересоздание векторов в OpenAI апихе) Ну вроде все норм, Fastembed работает как надо. Думаю – зачем на этом останавливаться, надо базу прикрутить и складывать вектора туда. Ну и в целом не комильфо в памяти – это пока векторов мало, а черт их знает как у меня слои роутера и колличество роутов, векторов для каждого разрастется? Не хранить же их в памяти! Смотрю чо есть в либе на поддержке: - Local – ну это чуть ли не тупо baseIndex, храним все в памяти. - pinecone – тот самый опенсорс у которого из опенсорса только сдк-клиент, в который надо API токен пихать. - postgresql with pgvector – ну тут все понятно - qdrant – не такой зашкварный опенсорс, можно запустить контейнер и вроде как без ограничений Ну в целом, выбор очевидный, правда ведь? Постгресс бери и делай. Взял и сделал, а там try/except с попыткой импорта в __init__ конструкторе 😳 Ну в целом ладно, с кем не бывает, думаю я – не беда! Отнес пацанам PR с небольшими изменениями, себе пока воткнул ` sys.modules[""semantic_router.index.postgres""].psycopg2 = psycopg2 ` Ура все заработало! semantic-router создал на стартапе табличку, записал в нее все все вектора! Только вот в логах больно много ворнингов: `base.py:108 - get_utterances() - Index is None, could not retrieve utterances.` Здесь мое хлебало борщей принимает идеально квадратную форму. Во-первых – какой еще base.py? Во-вторых – В смысле Index is None? Да, все верно – base.py с BaseIndex 😃 Да, все правильно – get_utterances() в PostgresqlIndex вообще не реализован. Я все понимаю – опенсорс. Надо как то деньги зарабатывать... А нахрена это релизить и в доку писать? Нет времени дописать – сделайте майлстоун, покличьте народ, это норм практика."