1. 看数据量看部署方式,chroma适合中小型在本地部署向量数据库的项目,本地安装的话理论上存储空间是无限的,但是可能数据量非常大的话,搜索精度会有问题,而如果你的项目数据量很大,建议使用类似Pinecone这样的商业产品,如果像你说的你经常使用google系产品,那么如果你不想本地部署的话,其实他们家也有向量数据库Google Cloud SQL for MySQL,也支持向量搜索。事实上向量数据库发展很快,如果生产环境建议用商业的,毕竟有保障,各家的差距主要在内置的索引方法和支持的查询方式。
2. 长期保存,课程里为了方便很多时候演示的是写内存的,事实上向量数据库之所以这一次突然崛起,就是因为它的持久化能力和LLM可以很好的配合。
3. 一部分数据迁移,建议写一个脚本跑就好了;以后的数据同步,其实跟过去做数据库同步没什么区别,用脚本同步写就好,在生产环境里的更新策略看你的应用设计,如果你的场景是类似存储用户个人的聊天记录,那肯定要实时进向量库,如果不是这种场景,而是类似文档查询之类,那可以可以定时同步。
4. 这个其实要看你的业务场景,如果你的业务对于数据筛选的精准度要求很高,那么我建议你先用SQL搜索出来,再放进向量库进行查询,按照之前做过的实验,“大海捞针”这一类的搜索测试,向量库+LLM还是会有遗漏、多选的概率,所以一般而言在向量搜索之前有一个已经预处理过的数据(范围越小越好)是最好的。当然,如果你的业务对精度不那么敏感,更加看中的是模糊匹配的能力,那么直接数据库同步,仅使用向量搜索就好。事实上,在实际开发中RAG这块的核心,就是不断的优化检索策略,提升检索的效果,包括现在最前沿的已经使用类似知识图谱来增强向量检索能力了。
谷歌云向量库使用方式:https://python.langchain.com/docs/integrations/vectorstores/google_cloud_sql_mysql/