检索增强生成 (RAG) 系统使 GPT Academic 能够通过从个人知识库检索信息来增强 LLM 的响应。这使得响应更加准确和上下文相关,特别是对于需要特定参考材料的领域特定问题。
RAG 系统围绕几个关键组件构建,这些组件协同工作,提供文档索引和增强型问答。
来源: crazy_functions/Rag_Interface.py47-152 crazy_functions/rag_fns/llama_index_worker.py65-138
RAG 系统为每个用户维护单独的工作器,这些工作器存储在 RAG_WORKER_REGISTER 中。每个工作器管理自己的向量存储,用于索引和检索文档。
来源: crazy_functions/Rag_Interface.py12 crazy_functions/rag_fns/llama_index_worker.py65-75 crazy_functions/rag_fns/milvus_worker.py79-91
该系统支持多种文档格式来创建知识库
来源: crazy_functions/rag_fns/rag_file_support.py1-22
上传文档后,它们将被处理并添加到向量存储中
来源: crazy_functions/Rag_Interface.py17-43 crazy_functions/rag_fns/llama_index_worker.py90-103
当用户提出问题时,系统会检索相关信息并生成答案
来源: crazy_functions/Rag_Interface.py99-152 crazy_functions/rag_fns/llama_index_worker.py119-132
该系统使用 OpenAI 的嵌入模型将文本转换为向量表示
| 模型名称 | 尺寸 | 描述 |
|---|---|---|
| text-embedding-3-small | 1536 | 相比第二代 ada 嵌入模型,性能有所提升 |
| text-embedding-3-large | 3072 | 英语和非英语任务中最强大的嵌入模型 |
| text-embedding-ada-002 | 1536 | 最强大的第二代嵌入模型 |
来源: request_llms/embed_models/openai_embed.py34-72 request_llms/embed_models/bridge_all_embed.py19-39
对于超出令牌限制的长输入,系统会
这确保了长文档能够被有效处理,同时将上下文保持在 LLM 的令牌限制内。
来源: crazy_functions/Rag_Interface.py103-124
系统识别出几个特殊命令
来源: crazy_functions/Rag_Interface.py79-96
要将文档添加到您的知识库,请输入包含支持文档文件的文件夹路径
/path/to/your/documents
要提出一个将使用您的知识库来回答的问题
What are the key features of the GPT Academic project?
重置您的知识库
清空向量数据库
RAG 系统配置了几个参数
| 参数 | 值 | 描述 |
|---|---|---|
| MAX_HISTORY_ROUND | 5 | 包含在上下文中的最大对话轮次 |
| MAX_CONTEXT_TOKEN_LIMIT | 4096 | 上下文的最大令牌限制 |
| REMEMBER_PREVIEW | 1000 | 长文本预览中显示的字符数 |
来源: crazy_functions/Rag_Interface.py13-15
RAG 系统构建于 LlamaIndex 之上,这是一个简化将自定义数据源连接到大型语言模型的框架。它支持两个向量存储后端
来源: crazy_functions/Rag_Interface.py52-59 crazy_functions/rag_fns/milvus_worker.py79-91