Cognita项目介绍
为什么使用Cognita?
在数据科学和机器学习的开发中,Langchain和LlamaIndex为我们提供了简单易用的抽象工具,这些工具在Jupyter Notebook上进行快速实验和原型制作时非常有用。然而,当将这些实验结果推向生产环境时,我们面临着新的挑战,比如组件需要是模块化的、易于扩展,并且可以轻松地进行扩展。这就是Cognita发挥作用的地方。Cognita在幕后使用Langchain和Llamaindex,将代码库组织得更加有序,每个RAG(检索-生成-API)组件都是模块化的、API驱动且易于扩展。Cognita不仅支持本地环境的快速设置,而且还提供一个生产就绪的环境,支持免代码的用户界面。另外,Cognita默认支持增量索引。
使用Cognita的优势
- 提供解析器、加载器、嵌入器和检索器的一个中央可重用的代码库。
- 非技术用户可以通过UI与文档交互,通过开发团队构建的模块进行问答。
- 完全API驱动,从而可以与其他系统进行集成。
特色功能
- 支持多种文档检索方式,包括“相似性搜索”、“查询分解”和“文档重新排序”等。
- 支持来自
mixedbread-ai
的开源状态最先进的(SOTA)嵌入和重新排序。 - 支持使用
ollama
来使用大型语言模型(LLM)。 - 支持批量传输文档的增量索引,从而减少计算负担,并能自动避开已索引文档的重复索引。
项目架构
Cognita的整体架构由多个组件组成:
- 数据源:这些是包含需要索引文档的位置,通常是S3存储桶、数据库、TrueFoundry Artifact或本地磁盘。
- 元数据存储:用于存储集合本身的元数据。一个集合对应多个数据源组合形成的一组文档。
- LLM网关:这是一个中央代理,允许通过统一的API格式代理来自多个提供商的嵌入和LLM模型请求。
- 向量数据库(Vector DB):存储文档解析的嵌入和元数据,并可以基于匹配查询相似或精确的结果。
- 索引作业:负责协调索引流程,可以手动启动或定期运行来获取新的或已更新的文档,解析并嵌入后存入向量数据库。
- API服务器:实时处理用户查询并生成带有引用的答案,确保能够同时处理多个查询并根据流量自动扩展。
快速开始:本地运行Cognita
为了在本地运行Cognita,推荐使用Docker Compose来轻松管理所有服务。用户需要根据需要配置模型提供程序,并可以选择使用多种本地或外部服务提供商。启动后,用户能在本地访问并测试服务,便于进行开发和实验。
开源贡献
Cognita欢迎任何形式的贡献!您可以提供想法、反馈,或如果发现问题请创建问题单和错误报告。在贡献之前,请先阅读我们的贡献指南。
未来发展
Cognita项目计划未来支持其他向量数据库如Chroma
和Weaviate
,优化嵌入,支持RAG可视化和对话机器人等多个领域的扩展。
通过这些模块化和可扩展的架构设计,Cognita致力于为用户提供一个强大且灵活的框架,以帮助他们更好地处理和部署复杂的RAG系统。