当前位置: 首页 > article >正文

【大模型实战篇】基于大模型GLM的检索增强实践

        前期我们在《大模型LLM在垂直领域的应用(RAG)》、《Agentic RAG(智能体RAG) 以及Multi-Source RAG(多数据源RAG)》、《搭建本地的隐私计算知识问答系统“密答”》中对检索增强生成做了一定的介绍。本文主要聚焦在基于大模型GLM来实践检索增强【1】。

1. 创建知识库

        首先在bigmodel平台,点击创建知识库,会生成自定义命名(knowledge name)的知识库以及相应的知识库id(knowledge id)。

        当然,也可以采用代码的方式来创建知识库,执行代码后,可以在平台看到对应的知识库。

from zhipuai import ZhipuAI

client = ZhipuAI(api_key="")  #替换成你的api_key

result = client.knowledge.create(
    embedding_id=3,  # 向量化算法选择
    name="yzqkb1",
    description="test knowledge database"
)
print(result.id)

2. 导入知识文档、切片、向量化处理

2.1 导入知识文件

        同样可以采用可视化操作或者代码操作文件知识的导入。

        支持将doc、docx、pdf、xlsx类型文件上传到知识库,支持自定义文件切片的大小和规则。文件大小不得超过50MB。

from zhipuai import ZhipuAI
 
client = ZhipuAI(api_key="")
 
resp = client.knowledge.document.create(
    file=open("xxx.pdf", "rb"),
    purpose="retrieval",
    knowledge_id="xxx",  # 你的知识库id
    sentence_size=202,
    custom_separator=["\n"]
)
print(resp)

2.2 文档切片处理

2.3 向量化处理

        等待一会,执行向量化完成后,就可以开始请求

3. 通过工具调用知识库

        之前创建知识库后获得一个知识库ID。调用模型服务时,传入该知识库ID,使大模型能获取相关内容以响应用户查询。        

response = client.chat.completions.create(
    model="glm-4",
    messages=[
        {"role": "user", "content": "text classification using large language model"},
    ],
    tools=[
            {
                "type": "retrieval",
                "retrieval": {
                    "knowledge_id": "1862815770157981696",
                    "prompt_template": "从文档\n\"\"\"\n{{knowledge}}\n\"\"\"\n中找问题\n\"\"\"\n{{question}}\n\"\"\"\n的答案,找到答案就仅使用文档语句回答问题,找不到答案就用自身知识回答并且告诉用户该信息不是来自文档。\n不要复述问题,直接开始回答。"
                }
            }
            ],
    stream=False,
)
print(response.choices[0].message.content)

输出结果如下,不过测试了几组不同的问题,感觉在从知识库抽取的环节还是有一些不对劲,后续再继续研究一下。

扩展阅读:

《全方位解读大模型》

4. 参考材料

【1】bigmodel--增强检索


http://www.kler.cn/a/417519.html

相关文章:

  • Ubuntu部署Deepseek-R1模型(8b)
  • 动静态库的学习
  • 自定义多功能输入对话框:基于 Qt 打造灵活交互界面
  • HTTP和HTTPS协议详解
  • 【自然语言处理(NLP)】NLP实战:IMDB影评情感分析项目
  • 基于 Java 开发的 MongoDB 企业级应用全解析
  • dpcas - v1 (Deep Learning Componentized Application System):深度学习组件化应用系统
  • VBA代码解决方案第二十讲:EXCEL工作表的添加与删除
  • PID模糊控制算法(附MATLAB仿真程序)
  • 【Java】设计模式——策略模式
  • PVE中的VLAN问题
  • 多线程(3)线程中的常用结构
  • 如何实现字符串反转-多语言
  • CSS笔记(二)类名复用
  • SpringBoot开发——结合Nginx实现负载均衡
  • mac下安装Ollama + Open WebUI + Llama3.1
  • [高等数学]一元积分学的应用
  • (SAST检测规则-3)固定的 SessionID 缺陷详解
  • unreal engine5中多个摄像机切换
  • Hbase 部署
  • Spring项目中RabbitMq的使用(工作队列模式)
  • 2024.11.29(单链表)
  • International Journal of Medical Informatics投稿经历时间节点
  • Java基础——(三)对象和类
  • Python入门(19)--最终篇
  • Mybatis Plus 增删改查方法(一、增)