首页 > 科技周边 > 人工智能 > 建立一名博伽梵歌AI助手

建立一名博伽梵歌AI助手

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-03-05 11:39:10
原创
898 人浏览过

在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
  • 下面的
是流程图,该流程图解释了我们如何构建Bhagwad Gita助手:

架构概述

建立一名博伽梵歌AI助手

数据摄入:900页的Bhagavad gita pdf分为文本块。 嵌入:QDrant Fastembed的文本对矢量嵌入模型。

>向量DB:带有BQ商店嵌入的QDRANT,启用毫秒搜索。
    LLM推断:DeepSeek R1通过GROQ LPU生成上下文感知的响应。
  • UI:简化具有可扩展的“思考过程”可见性的应用程序。
  • >逐步实现
  • >让我们现在按一个步骤操作:
  • step1:安装和初始设置
  • >让我们使用LlamainDex建立抹布管道的基础。我们需要安装必需软件包,包括核心Llamaindex库,QDRANT矢量商店集成,快速嵌入的嵌入以及用于LLM访问的GROQ。
  • 注意:

>

>对于文档索引,我们将使用COLAB的A gpu

存储数据。这是一个一次性过程。

>

>保存数据后,我们可以使用集合名称在任何地方运行推断,无论是在VS代码,简化还是其他平台上。

完成安装后,让我们导入所需的模块。> step2:文档处理和嵌入

    >在这里,我们处理将原始文本转换为向量表示的关键任务。 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维向量的新集合,并使用余弦相似性进行距离测量。

    data = SimpleDirectoryReader("data").load_data()
    texts = [doc.text for doc in data]
    
    embeddings = []
    BATCH_SIZE = 50
    登录后复制
    登录后复制
    >我们为原始向量启用了盘存存储,并应用二进制量化,这会压缩向量以减少内存使用量并提高搜索速度。 Elwand_RAM参数可确保将量化的向量保存在RAM中以更快地访问。>

    step4:索引文档

    索引过程将我们的处理过的文档及其嵌入到批处理中。每个文档都与其向量表示并存,创建一个可搜索的知识库。>
    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)
    登录后复制
    登录后复制
    在此阶段将使用GPU,根据数据大小,此步骤可能需要几分钟。

    步骤5:带有DeepSeek r1

    的抹布管道

    process-1:r-检索相关文档

    >搜索功能采用用户查询,将其转换为嵌入,并根据余弦相似性从Qdrant中检索最相关的文档。我们通过有关Bhagavad-Gītā的示例查询进行了证明,展示了如何访问和打印检索到的上下文。
    !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中知识渊博,能够理解多种语言(英语,印地语,梵语)。>它包括用于上下文注入和查询处理的结构化格式,并清楚地说明了处理外面问题的明确说明。

    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
    登录后复制
    登录后复制
    process-3:g-生成响应

    >最终管道将所有内容融合在一起。它遵循检索仪式生成模式:检索相关文档,使用我们的专业及时模板增强它们,并使用LLM生成响应。在这里,我们将使用deepSeek r-1蒸馏羊lama 70 B托管在Groq上,从这里获取您的钥匙:Groq Console。

    data = SimpleDirectoryReader("data").load_data()
    texts = [doc.text for doc in data]
    
    embeddings = []
    BATCH_SIZE = 50
    登录后复制
    登录后复制
    output :(语法:< think>推理</think>响应)

    建立一名博伽梵歌AI助手

    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)
    登录后复制
    登录后复制

    建立一名博伽梵歌AI助手

    现在,如果您需要再次使用此应用程序怎么办?我们应该再次执行所有步骤吗?

    答案是否。

    step6:保存的索引推理

    >您已经编写的内容没有太大差异。我们将重复使用相同的搜索和管道功能以及我们需要运行query_points的收集名称。

    >我们将在“ sparlit app.py”中使用上面的两个函数和message_template。 
    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下定义一些初始化步骤。

    请记住,当用户输入问题时,快速培训将仅下载一次模型权重,GROQ和QDRANT INTANTITION也是如此。

    >

    如果您注意到响应输出,则格式为< 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的会话状态中初始化消息历史记录。侧边栏中的“清晰聊天”按钮使用户可以重置此历史记录。 

    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)) 
    登录后复制
    >通过存储的消息迭代并在类似聊天的接口中显示它们。对于助手响应,它使用extract_thinking_and_answer函数将思维过程(如可扩展部分显示)与实际答案分开。

    剩下的代码是一种标准格式,用于在简化中定义聊天机器人组件,即输入处理为用户问题创建输入字段。提交问题时,将显示并将其添加到消息历史记录中。现在,它可以通过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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板