【大模型实战】基于大模型的中国历史智能助手项目分享:史小白

2024-08-27 18:52

本文主要是介绍【大模型实战】基于大模型的中国历史智能助手项目分享:史小白,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介

在当下的AI热潮中,我完成了一个基于大模型的项目——史小白 - 中国历史智能助手

 可用于帮助用户探索和学习中国历史。项目基于InternLM大模型技术,提供了多种功能,包括:

  • 历史问答:用户可以提出中国历史相关的问题,史小白将提供详细且准确的回答。
  • 文言文翻译:能够将古代文献翻译成现代汉语,方便用户理解文言文。
  • 联网检索:对于最新的事情,史小白也可以通过搜索引擎得到答案。
  • 中国古风图片生成:根据用户的需求生成具有中国古代风格的图片,增强历史学习的趣味性。

通过整合现代人工智能技术,史小白致力于为历史爱好者提供一个便捷的学习平台。

 在我的B站视频【史小白 - 中国历史智能助手】中,我详细展示了项目架构、功能模块以及实际运行效果。希望通过这个视频,能够启发更多开发者利用AI技术做出有趣的项目。欢迎大家观看、一键三连~

【大模型项目】史小白——中国历史智能助手

二、效果展示

2.1 自我认知

2.2 文言文翻译

2.3 RAG检索效果

2.4 联网查询效果

2.5 画图Agent

三、相关技术

3.1 数据准备

在这个模块,系统支持多种数据格式,包括:

  • Markdown、PDF、Word、音频、视频等多种媒体类型
  • JSON、HTML等结构化数据
  • 多语言的内容

这些多模态、多语言的数据会通过嵌入模型(Embedding Model)进行处理,生成对应的语义向量(Semantic Vector)。这个向量代表了数据的内容及其含义,便于后续的搜索和查询。

生成的语义向量被存储到向量数据库中,供之后的数据检索使用。数据库不仅支持存储,还可以进行高效的向量化数据检索。

3.2 数据检索

在这一部分,用户输入一个问题,例如“我想了解秦朝的政治制度?”。这个问题首先会被转化为一个查询向量。查询向量是通过嵌入模型处理问题文本生成的。

系统通过对比查询向量和数据库中的语义向量,找出与问题最相关的知识点。这个过程会返回一个相关性分数,用以确定哪个知识点最符合用户的查询。

根据相关性分数,系统会选择最合适的知识,并返回相关的答案,例如“秦朝的政治制度以中央集权为基础……”等。

3.3 大模型生成

大模型生成模块史小白(基于InternLM 2.5 7b),它在回答用户问题时使用了多个工具和方法:

  • Agent工具(基于LAgent):它可以帮助系统执行联网查询和古风图片生成等任务。用户的问题如果涉及到网络查询,系统可以调用联网工具进行实时信息检索;如果用户需要生成古风图片,系统可以调用图片生成工具。
  • 数据微调(基于Xtuner):大模型的输出经过数据微调,确保生成的内容更加符合特定任务的需求。
  • 任务定制(Prompt):通过定制化的任务提示词,进一步优化和指导模型的输出。

最后,史小白将结合所有查询结果、数据微调和定制化提示词,生成用户需要的答案。

四、致谢

感谢InternLM团队举办的书生大模型实战营(第三期闯关大挑战)!

GitHub地址:https://github.com/colorfulandcjy0806/shixiaobai

OpenXLab地址:OpenXLab浦源 - 模型中心

这篇关于【大模型实战】基于大模型的中国历史智能助手项目分享:史小白的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112497

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C