建立一名博伽梵歌AI助手
在AI的快速发展世界中,大型语言模型正在以速度,准确性和成本效益来推动界限。 DeepSeek R1最近发布的开源模型与Openai的O1相抗衡,是AI领域中的热门话题,尤其是考虑到其成本较低的27倍和卓越的推理能力。将其与QDRANT的二进制量化配对,以进行高效和快速的向量搜索,我们可以将超过1,000页文档索引。在本文中,我们将创建一个Bhagavad Gita AI助手,能够索引1,000页,使用GROQ在几秒钟内回答复杂的查询,并提供具有特定于域的精度的见解。
>
学习目标- 在qdrant中实现二进制量化,以进行内存效率的向量索引。
- > 了解如何使用DeepSeek R1,Qdrant和Llamaindex建立Bhagavad Gita AI助手进行有效的文本检索。
- > 学会用GROQ优化Bhagavad Gita AI助手,以快速,域特异性查询响应和大规模文档索引。
- > >使用llamaindex和快速培养的本地嵌入来处理1,000页的Bhagavad Gita。
- 从GROQ的推断中集成了DeepSeek R1,以实时,低延迟响应。
- >开发一个简化的UI,以展示具有思维透明度的AI驱动见解。
>本文是> > data Science Blogathon的一部分。 内容表
deepSeek r1 vs openai o1- >在向量数据库中的二进制量化是什么? > DeepSeek R1 vs Openai O1
- > DeepSeek R1挑战OpenAI在27X降低的API成本和接近标准的表现方面的主导地位。与OpenAI的O1关闭,基于订阅的模型(每月200美元)不同,DeepSeek R1 iSfree,开放源代码,并且是预算意识的项目和实验的理想之选。
- > 推理-ARC-AGI基准:[来源:Arc-Agi DeepSeek]
- DeepSeek:20.5%准确性(公共),15.8%(半私有)。
- OpenAI:21%准确性(公共),18%(半私人)。
- 从我到目前为止的经验来看,DeepSeek在数学推理,与编码相关的用例和上下文感知的提示方面做得很好。
二进制量化(BQ)是QDRANT的索引压缩技术,可优化高维矢量存储和检索。通过将32位浮点矢量转换为1位二进制值,它可以大幅度加速搜索速度。
它的工作原理
- 二进制:基于阈值将向量简化为0s和1s(例如,值> 0成为1)。 >有效索引:QDRANT的HNSW算法使用这些二进制向量快速近似最近的邻居(ANN)搜索。
- >过采样:为了平衡速度和准确性,BQ检索额外的候选者(例如200限制为100),并使用原始向量将它们对其进行重新排名。
- >
存储:1536-Dimension Openai矢量从6KB缩小到0.1875 kb。
- 速度:1位向量上的布尔操作执行更快,减少了延迟。
- 可伸缩性:适合大型数据集(1M向量)的理想选择,以最少的召回权衡。
- 避免二进制量化,以实现二量矢量(< 1024),其中信息损失显着影响准确性。传统的标量量化(例如,UINT8)可能更适合较小的嵌入。
- 建造Bhagavad Gita Assistant 下面的
架构概述
数据摄入:900页的Bhagavad gita pdf分为文本块。 嵌入:QDrant Fastembed的文本对矢量嵌入模型。
>向量DB:带有BQ商店嵌入的QDRANT,启用毫秒搜索。-
LLM推断:DeepSeek R1通过GROQ LPU生成上下文感知的响应。
- UI:简化具有可扩展的“思考过程”可见性的应用程序。
- >逐步实现
- >让我们现在按一个步骤操作:
- >让我们使用LlamainDex建立抹布管道的基础。我们需要安装必需软件包,包括核心Llamaindex库,QDRANT矢量商店集成,快速嵌入的嵌入以及用于LLM访问的GROQ。
- 注意:
>
>对于文档索引,我们将使用COLAB的A
>
>保存数据后,我们可以使用集合名称在任何地方运行推断,无论是在VS代码,简化还是其他平台上。
完成安装后,让我们导入所需的模块。
- >在这里,我们处理将原始文本转换为向量表示的关键任务。 SimpleDirectoryReader从指定的文件夹加载文档。
- > >创建一个文件夹,即数据目录,然后在其中添加所有文档。在我们的情况下,我们下载了Bhagavad Gita文档并将其保存在数据文件夹中。 您可以在此处下载〜900页的Bhagavad Gita文档:Iskconmangaluru
-
!pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groq
登录后复制登录后复制登录后复制Qdrant的快感是一个轻巧,快速的Python库,旨在有效地嵌入生成。它支持流行的文本模型,并利用量化的模型权重以及推理的ONNX运行时,确保高性能而没有较重的依赖性。
要将文本块转换为嵌入,我们将使用Qdrant的快速介绍。我们分批处理50个文档以有效地管理内存。
>import logging import sys import os import qdrant_client from qdrant_client import models from llama_index.core import SimpleDirectoryReader from llama_index.embeddings.fastembed import FastEmbedEmbedding from llama_index.llms.groq import Groq # deep seek r1 implementation
登录后复制登录后复制步骤3:使用二进制量化的QDRANT设置
>是时候配置我们的矢量数据库QDRANT客户端,并具有优化的性能设置。我们创建了一个名为“ Bhagavad-Gita”的集合,该集合具有特定的向量参数,并启用了二进制量化以进行有效的存储和检索。
有三种使用QDRANT客户端的方法:- >内存模式:使用位置=“:内存:”,它创建了一个仅运行一次的临时实例。
- > localhost:使用位置=“ localhost”,它需要运行Docker实例。您可以在此处遵循“设置指南:QDRANT QUICKSTART”。
- 云存储:将集合存储在云中。为此,创建一个新的群集,提供群集名称并生成一个API键。复制键并从curl命令中检索URL。
- 请注意,收集名称必须是唯一的,在每个数据更改之后,此也需要更改。
>我们首先检查带有指定Collection_name的集合是否存在于Qdrant中。如果不是这样,只有然后我们创建一个配置为存储1,024维向量的新集合,并使用余弦相似性进行距离测量。
>我们为原始向量启用了盘存存储,并应用二进制量化,这会压缩向量以减少内存使用量并提高搜索速度。 Elwand_RAM参数可确保将量化的向量保存在RAM中以更快地访问。data = SimpleDirectoryReader("data").load_data() texts = [doc.text for doc in data] embeddings = [] BATCH_SIZE = 50
登录后复制登录后复制> > 在此阶段将使用GPU,根据数据大小,此步骤可能需要几分钟。embed_model = FastEmbedEmbedding(model_name="thenlper/gte-large") for page in range(0, len(texts), BATCH_SIZE): page_content = texts[page:page + BATCH_SIZE] response = embed_model.get_text_embedding_batch(page_content) embeddings.extend(response)
登录后复制登录后复制的抹布管道
process-1:r-检索相关文档!pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groq
登录后复制登录后复制登录后复制Process-2:A-增强提示
对于抹布,使用chatprompttemplate定义系统的交互模板很重要。该模板创建了一个专业的助手,在Bhagavad-Gita中知识渊博,能够理解多种语言(英语,印地语,梵语)。
>它包括用于上下文注入和查询处理的结构化格式,并清楚地说明了处理外面问题的明确说明。 process-3:g-生成响应import logging import sys import os import qdrant_client from qdrant_client import models from llama_index.core import SimpleDirectoryReader from llama_index.embeddings.fastembed import FastEmbedEmbedding from llama_index.llms.groq import Groq # deep seek r1 implementation
登录后复制登录后复制output :(语法:< think>推理</think>响应)data = SimpleDirectoryReader("data").load_data() texts = [doc.text for doc in data] embeddings = [] BATCH_SIZE = 50
登录后复制登录后复制embed_model = FastEmbedEmbedding(model_name="thenlper/gte-large") for page in range(0, len(texts), BATCH_SIZE): page_content = texts[page:page + BATCH_SIZE] response = embed_model.get_text_embedding_batch(page_content) embeddings.extend(response)
登录后复制登录后复制答案是否。
step6:保存的索引推理
>您已经编写的内容没有太大差异。我们将重复使用相同的搜索和管道功能以及我们需要运行query_points的收集名称。
collection_name = "bhagavad-gita" client = qdrant_client.QdrantClient( #location=":memory:", url = "QDRANT_URL", # replace QDRANT_URL with your endpoint api_key = "QDRANT_API_KEY", # replace QDRANT_API_KEY with your API keys prefer_grpc=True )
登录后复制step7:简化UI
在每个用户问题之后,在精简中,状态都会刷新。为了避免再次刷新整个页面,我们将在简化的cache_resource下定义一些初始化步骤。>
如果您注意到响应输出,则格式为< think>推理</think>响应。
在UI上,我想保留在简化的扩展器下的推理,以检索推理部分,让我们使用字符串索引来提取推理和实际响应。> if not client.collection_exists(collection_name=collection_name): client.create_collection( collection_name=collection_name, vectors_config=models.VectorParams(size=1024, distance=models.Distance.COSINE, on_disk=True), quantization_config=models.BinaryQuantization( binary=models.BinaryQuantizationConfig( always_ram=True, ), ), ) else: print("Collection already exists")
登录后复制聊天机器人组件
>在Sparlit的会话状态中初始化消息历史记录。侧边栏中的“清晰聊天”按钮使用户可以重置此历史记录。
>通过存储的消息迭代并在类似聊天的接口中显示它们。对于助手响应,它使用extract_thinking_and_answer函数将思维过程(如可扩展部分显示)与实际答案分开。for idx in range(0, len(texts), BATCH_SIZE): docs = texts[idx:idx + BATCH_SIZE] embeds = embeddings[idx:idx + BATCH_SIZE] client.upload_collection(collection_name=collection_name, vectors=embeds, payload=[{"context": context} for context in docs]) client.update_collection(collection_name= collection_name, optimizer_config=models.OptimizersConfigDiff(indexing_threshold=20000))
登录后复制剩下的代码是一种标准格式,用于在简化中定义聊天机器人组件,即输入处理为用户问题创建输入字段。提交问题时,将显示并将其添加到消息历史记录中。现在,它可以通过RAG管道处理用户的问题,同时显示加载旋转器。响应分为思考过程和回答组件。
!pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groq
登录后复制登录后复制登录后复制重要链接
- 您可以找到完整的代码
- >替代性bhagavad gita pdf-下载
- >用钥匙替换“< replace-api-key>”占位符。
结论
通过将Deepseek R1的推理,QDRANT的二进制量化和LlamainDex的RAG管道结合起来,我们建立了一个AI助手,该AI助手交出了Seviressub-2-Second Second Secondson 1,000页。该项目强调了特定于领域的LLM和优化的向量数据库如何使对古代文本的访问民主化,同时保持成本效率。随着开源模型的不断发展,利基AI应用程序的可能性是无限的。钥匙要点
DeepSeek R1竞争对手Openai O1以1/27的成本推理,非常适合特定于领域的任务,例如圣经分析,而OpenAI适合更广泛的知识需求。
使用llamaindex和qdrant的文档处理,嵌入生成和矢量存储的演示代码示例了解抹布管道实现。通过QDRANT中的二进制量化,有效的矢量存储优化,从而可以处理大型文档收集,同时保持性能和准确性。 - >结构化的及时工程实施,具有清晰的模板来处理多语言查询(英语,印地语,梵语)并有效地管理外面的问题。 > 使用简化的交互式UI,以推导一旦存储在矢量数据库中的应用程序。
- 常见问题
- > Q1。
- 二进制量化会降低答案质量吗?对召回的影响最小! Qdrant的过采样采样使用原始矢量重新排名最高的候选者,保持准确性,同时提高速度40倍,并将内存使用量减少97%。 >快速培养的可以处理诸如梵文/印地语的非英语文本?
> Q3。 为什么选择DeepSeek R1而不是OpenAi O1? DeepSeek R1的API成本降低了27倍,推理精度(20.5%vs 21%)以及卓越的编码/特定于域的性能。它是经文分析等专业任务的理想选择。 >本文所示的媒体不归Analytics Vidhya拥有,并由作者的酌情决定使用。
以上是建立一名博伽梵歌AI助手的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

嘿,编码忍者!您当天计划哪些与编码有关的任务?在您进一步研究此博客之前,我希望您考虑所有与编码相关的困境,这是将其列出的。 完毕? - 让&#8217

介绍 Openai已根据备受期待的“草莓”建筑发布了其新模型。这种称为O1的创新模型增强了推理能力,使其可以通过问题进行思考

SQL的Alter表语句:动态地将列添加到数据库 在数据管理中,SQL的适应性至关重要。 需要即时调整数据库结构吗? Alter表语句是您的解决方案。本指南的详细信息添加了Colu

介绍 Mistral发布了其第一个多模式模型,即Pixtral-12b-2409。该模型建立在Mistral的120亿参数Nemo 12B之上。是什么设置了该模型?现在可以拍摄图像和Tex

在从事代理AI时,开发人员经常发现自己在速度,灵活性和资源效率之间进行权衡。我一直在探索代理AI框架,并遇到了Agno(以前是Phi-

陷入困境的基准:骆驼案例研究 2025年4月上旬,梅塔(Meta)揭开了Llama 4套件的模特套件,具有令人印象深刻的性能指标,使他们对GPT-4O和Claude 3.5 Sonnet等竞争对手有利地定位。伦斯的中心

视频游戏可以缓解焦虑,建立焦点或支持多动症的孩子吗? 随着医疗保健在全球范围内挑战,尤其是在青年中的挑战,创新者正在转向一种不太可能的工具:视频游戏。现在是世界上最大的娱乐印度河之一

该版本包括三种不同的型号,GPT-4.1,GPT-4.1 MINI和GPT-4.1 NANO,标志着向大语言模型景观内的特定任务优化迈进。这些模型并未立即替换诸如
