李白知识图谱与智能问答系统
meet-libai项目构建了李白知识图谱并开发智能问答系统。该系统整合诗歌和生平资料,应用自然语言处理技术实现诗歌鉴赏和文化普及。功能包括属性查询、关系探索、语音和图像生成,为探索李白诗词和唐代文化提供了便捷途径。
:vertical_traffic_light: 哔哩哔哩详细视频介绍和引导
<img src="https://yellow-cdn.veclightyear.com/835a84d5/56e50ce4-1455-4c45-9e81-2c360b489db3.png" width="50%;" /> 李白 :bust_in_silhouette: 作为唐代杰出诗人,其诗歌作品在中国文学史上具有重要地位。近年来,随着数字技术和人工智能的快速发展,传统文化普及推广的形式也面临着创新与变革。国内外对于李白诗歌的研究虽已相当深入,但在数字化、智能化普及方面仍存在不足。因此,本项目旨在通过构建李白知识图谱,结合大模型训练出专业的AI智能体,以生成式对话应用的形式,推动李白文化的普及与推广。
随着人工智能技术的发展,知识图谱技术也得到了广泛的应用。知识图谱是一种基于语言知识库的语义表示模型,它能够将结构化的知识表示为图的形式,从而使得机器能够更好地理解和处理自然语言。 在知识图谱技术的基础上,开发一个问答系统可以利用知识图谱中的知识来回答用户的问题。<u>该系统可以利用知识图谱来构建以诗人李白为核心的古诗词文化知识图谱</u> :globe_with_meridians: ,并实现基于该知识图谱的问答功能。另外,对图谱进行可视化探索,以更好地理解知识图谱的结构和内容。同时提供,大模型以及rag检索增强的代码实现。
2.1 :1st_place_medal: 收集整理李白诗歌及其相关文化资料:通过文献调研、数据挖掘等方法,全面收集李白的诗歌作品、生平事迹、历史背景等相关资料,为构建李白知识图谱提供基础数据。
2.2 :2nd_place_medal: 构建李白知识图谱:利用自然语言处理、信息抽取等技术,对收集到的资料进行整理和分析,构建出一个完整的李白知识图谱。该图谱将涵盖李白的生平、诗歌风格、艺术成就等多个方面,为后续的AI智能体训练提供丰富 的知识库。
2.3 :3rd_place_medal: 训练专业的AI智能体:基于构建好的李白知识图谱,利用大模型技术训练出具有专业水平的AI智能体。该智能体将具备对李白诗歌的深入理解和鉴赏能力,能够与用户进行高质量的互动。
2.4 :four:开发生成式对话应用:在训练好的AI智能体基础上,开发一款生成式对话应用。该应用将能够实现与用户的实时互动,为用户提供个性化的李白诗歌鉴赏体验。
Data preprocessing: Clean, tokenize, and construct knowledge graph for ancient poetry data
Knowledge graph construction: Utilize knowledge graph technology to build a cultural knowledge graph centered on Li Bai for ancient poetry
:hotsprings:Graph Q&A approach:
:smile_cat:General streaming Q&A
:recycle: Relational Q&A:
:package:Attribute Q&A:
:gift: Generate audio and images:
Please generate an image of Li Bai drinking by the river
Please generate audio for the poem "Spring View"
Through the implementation of this project, we have not only realized a knowledge graph-based Q&A system, but also accumulated rich practical experience and knowledge graph technology application experience. In future work, we will continuously optimize the answer quality and efficiency of the Q&A system, and explore other types of Q&A tasks to meet the needs of more users. Meanwhile, we will continue to update and maintain the knowledge graph to ensure its accuracy, completeness and effectiveness, contributing to the development and application of knowledge graph technology. The following is the project technical architecture diagram:
Please click here to jump to Code Structure:cityscape:
:key:Use the Zhipu AI open platform, please jump to that platform to apply for an API key. Then, fill in the API key in the .env
file.
Use conda to manage Python environments, so please install conda first (Install Conda):smile_cat:
Use conda command to create Python environment
#Create a new environment: Use the following command to create a new Python environment with a specific version. (Of course, in China you may need to configure conda and pip mirrors) conda create --name myenv python=3.10 #This will create a new environment named myenv with the specified Python version. #Activate the environment: Once the environment is created, you need to activate it. conda activate myenv
Install dependencies
pip install -r requirements.txt
Install using Docker<img src="https://avatars.githubusercontent.com/u/5429470?s=280&v=4" alt="Docker · GitHub" width="50" />
You can start a Neo4j container like this:
docker run \ --publish=7474:7474 --publish=7687:7687 \ --volume=$HOME/neo4j/data:/data \ neo4j:5.12.0
which allows you to access neo4j through your browser at http://localhost:7474.
This binds two ports (
7474
and7687
) for HTTP and Bolt access to the Neo4j API. A volume is bound to/data
to allow the database to be persisted outside the container.By default, this requires you to login with
neo4j/neo4j
and change the password. You can, for development purposes, disable authentication by passing--env=NEO4J_AUTH=none
to docker run.
Of course, you can also install neo4j directly on your operating system without using Docker and start the service.
:warning:<u>Note: As the establishment and organization of data involves third-party copyrights, this project does not provide complete Li Bai data, only sample data</u>
Cypher query
statement is as follows:
# 创建`李白`节点 CREATE (p:`人物`:`唐`{name: '李白', PersonId:32540}) # 创建'高力士'节点 CREATE (p:`人物`:`唐`{name: '高力士', PersonId:32541}) # 创建李白和高力士的关系 MATCH (a:`人物`:`唐` {PersonId: 32540}), (b:`人物`:`唐` {PersonId: 32541}) CREATE (a)-[r:`李白得罪高力士` {since: 2022, strength: 'strong', Notes: '《李太白全集》卷三五《李太白年譜》:天寶三載,甲申。(五月改"年"爲"載"。四十四歲)太白在翰林,代草王言。然性嗜酒,多沉飮,有時召令撰述,方在醉中,不可待,左右以水沃面,稍解,卽令秉筆,頃之而成。帝甚才之,數侍宴飮。因沉醉引足令高力士脫靴,力士恥之,因摘其詩句以激太眞妃。帝三欲官白,妃輒沮之。又爲張垍讒譖,公自知不爲親近所容,懇求還山,帝乃賜金放歸。又引《松窗錄》:會高力士終以脫靴爲深恥,異日,太眞妃重吟前詞,力士戲曰:"比以妃子怨李白深入骨髓,何反拳拳如是?"太眞妃驚曰:"何翰林學士能辱人如斯!"力士曰:"以飛燕指妃子,是賤之甚矣!"太眞妃深然之。上嘗三欲命李白官,卒爲宮中所捍而止。'}]->(b) RETURN r
以上数据导入完毕之后,再导入元数据节点(该节点用于记录数据版本号的基本信息)
CREATE (meta_node:Meta{ id: 'meta-001', title: 'libai-graph meta node', text: 'store some meta info', timestamp: datetime(), version: 1, status: 'active' })
neo4j: url: bolt://localhost:7687 database: neo4j username: neo4j password: ***** # 注意: 以上参数,根据你的数据库实际连接为准
有3个配置文件(根据你的需求,决定使用哪个配置,如果没有对应的配置文件,可以拷贝./config/config-local.yaml作为副本,再修改):
部署环境配置./config/config-deploy.yaml
测试环境配置./config/config-dev.yaml
本地开发配置./config/config-local.yaml
在项目根目录下新建.env文件作为环境变量配置,并在文件中指定启用哪个环境配置,下面给出一个完整的.env内容
#PY_ENVIRONMENT=dev PY_ENVIRONMENT=local # 启用本地开发环境 #PY_ENVIRONMENT=deploy PY_DEBUG=true # ---------注意----------------------------------- # 如下模型中只能使用其中的某一个模型,不能同时配置多个模型 # 去对应的官网申请api-key,并替换YOUR API-KEY # 也可以使用ollama本地运行的模型,api-key设置为ollama # ⚠️文生图的模型暂时使用zhipuai,因此要配置zhipuai 的api-key # ----------------------------------------------- # 智普ai LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4/ LLM_API_KEY=YOUR API-KEY MODEL_NAME=glm-4 # kimi #LLM_BASE_URL=https://api.moonshot.cn/v1 #LLM_API_KEY=YOUR API-KEY #MODEL_NAME=moonshot-v1-8k # 百川大模型 #LLM_BASE_URL=https://api.baichuan-ai.com/v1/ #LLM_API_KEY=YOUR API-KEY #MODEL_NAME=Baichuan4 # 通义千问 #LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 #LLM_API_KEY=YOUR API-KEY #MODEL_NAME=qwen-long # 零一万物 #LLM_BASE_URL=https://api.lingyiwanwu.com/v1 #LLM_API_KEY=YOUR API-KEY #MODEL_NAME=yi-large # deepseek # LLM_BASE_URL=https://api.deepseek.com # LLM_API_KEY=ollama # MODEL_NAME=deepseek-chat # 豆包 #LLM_BASE_URL=https://ark.cn-beijing.volces.com/api/v3/ #LLM_API_KEY=YOUR API-KEY # 注意:对于豆包api,model_name参数填入ENDPOINT_ID,具体申请操作在豆包api官网提供 。 #MODEL_NAME= # ollama #LLM_BASE_URL=http://localhost:11434/v1/ #LLM_API_KEY=ollama #MODEL_NAME=qwen2:0.5b #文生图模型,暂时使用zhipuai #OPENAI_API_KEY=YOUR API-KEY ZHIPUAI_API_KEY=YOUR API-KEY # 这里填入你的组织名 ORGANIZATION_NAME= xxx团队
:smiley:由于涉及到内存问题,这两个服务独立部署。目前暂不开源,感兴趣的读者,可以自己按照如下接口规则独立开发。如果没有这个服务接口,不影响程序运行。
古文搜古文,接口访问示例:
data = { "text": '床前明月光', # 古诗 "conf_key": "chinese-classical", # 预留参数 "group": "default", # 预留参数 "size": 5, # 返回结果数量 "searcher": 3 # 预留参数 } resp = requests.post("http://172.16.67.150:18880/api/search/nl", data=json.dumps(data))
接口返回数据示例:
{ "retCode": 0, "errMsg": null, "values": [ { "value": "明##@##申佳允##@##天际秋云薄|床前明月光|无由一化羽|回立白苍苍##@##秋兴集古 其八##@##苍苍 天际 秋云 明月", "score": 1.0000004768371582 }, { "value": "唐##@##李白##@##床前明月光|疑是地上霜|举头望山月|低头思故乡##@##静夜思##@##山月 霜 明月 低头", "score": 1.0000004768371582 }, { "value": "唐##@##李白##@##床前明月光|疑是地上霜|举头望明月|低头思故乡##@##静夜思##@##霜 光 明月 低头", "score": 1.0000004768371582 }, { "value": "明##@##高启##@##堂上织流黄|堂前看月光|羞见天孙度|低头入洞房##@##子夜四时歌 其三##@##天孙 月光 洞房 低头", "score": 0.7958479523658752 }, { "value": "明##@##黄渊耀##@##凉风落柳梢|微云淡河面|怀中明月光|多赊不为贱##@##夜坐##@##凉风 柳梢 明月 微云", "score": 0.7571470737457275 } ] }
score表示得分,value表示一条数据,value中的各个字段值用##@##隔开 ["朝代","作者", "完整诗篇", "篇名", "关键词"]
启动shell脚本为restart.sh
> chmod +x ./restart.sh > ./restart.sh
启动成功后可以访问
webui http://localhost:7860
python启动所有任务包括api和webui
python app.py
启动成功后可以访问
webui http://localhost:7860
python命令启动webui
python webui.py
启动成功后可以访问
访问api: http://localhost:18881/docs 打开如下图所示, 然后点击构建模型:
接着填写如下参数后,点击执行:
1.按照前面的步骤启动程序之后(程序保持运行),运行根目录下的graph_demo_ui.py:
python graph_demo_ui.py
访问地址:
http://127.0.0.1:80
如下图在左侧输入原始文本,以英文逗号结尾自动触发构建过程(需要一定的时间等待)!
如果你愿意,你可以赞赏我,不在乎数量,你的一个不经意的举动是我前进的动力,业余时间搬砖实属不易。
<img src="https://yellow-cdn.veclightyear.com/835a84d5/2355b5d9-2503-4a47-a1dd-db5083d16a4c.png" width="200" ><img src="https://yellow-cdn.veclightyear.com/835a84d5/44eaefe3-52ac-4ce8-af18-642a4df8f42e.png" width="200" >
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作 提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号