LLM 應用開發的領域太新了,很多套件都還不是很成熟,甚至常常會出現解析錯誤的情形。例如說我要使用 ChromaDB ,這是一個新興的向量資料庫。當你興高采烈地使用 poetry add chromadb
,就會噴出如下圖的錯誤了。
圖片中說到,chromadb (0.4.10) depends on fastapi (>=0.95.2,<0.100.0)
,但是我 fastapi 就是要用 100 版以上的,因為 100 版之後的 fastapi 支援 Pydantic v2
。
這時候就想說好吧,那我在 toml 檔裡手動加上 chromadb = "0.*"
,不限制版本來安裝總行了吧!接著使用 poetry install
會看到如下圖,很美好地開始安裝 ChromaDB 和其依賴項了,而且還自己降版本了。
結果你程式一跑起來,又會出現 error pydantic.errors.PydanticImportError
。這是因為 ChromaDB 用的 pydantic,會和版本 100 以上的 fastapi 發生衝突。(明明 0.100 和 0.99 的差距時間很短....)
但是假設真的非用 ChromaDB 不可,那麼也只能把 fastapi 降版到 0.99 了。這時候就可以成功把 ChromaDB 跑起來了。
你覺得這樣子的依賴解析是坑嗎?因為我就用不到我需要的 100 版本以後的 fastapi 了。
但是還是其實這很美好呢?因為可以知道問題出在哪,降版 fastapi 後就可以順利跑起來了。我是覺得真的很香啦!畢竟這個領域真的太新了,很多套件自己本身的問題就一大堆了,我相信 ChromaDB 這個問題,只是目前的冰山一角而已。不過像我自己之後就再也不會考慮 ChromaDB 這套向量資料庫吧,除非他們的整體生態系有做起來......。
明天我們來先幫大家入門 Hugging Face,然後要抓緊,開始進入和 LLM 應用開發相關的內容了!