Ну вроде все норм, 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 вообще не реализован.
Я все понимаю – опенсорс. Надо как то деньги зарабатывать... А нахрена это релизить и в доку писать?
Нет времени дописать – сделайте майлстоун, покличьте народ, это норм практика.