基于大模型构建本地知识库

简介: 基于大模型构建本地知识库

图文概述

1.png

一、知识库构建


1.文本加载和读取


支持的格式:


  • pdf

  • txt

  • md

  • docx

2.文本分割


通常,将大型文本文档拆分为较小的块,以便更好地使用语言模型。文本拆分器负责将文档拆分为较小的文档。理想情况下,您希望将语义相关的文本片段放在一起。“语义相关”的含义可能取决于文本的类型。


  • 根据规则
根据中文文章的常见终止符号,利用规则进行文本分割。
如:单字符断句符、中英文省略号、双引号等
  • 根据语义
将文本拆分为语义有意义的小块(通常是句子)。
开始将这些小块组合成一个较大的块,直到达到一定的大小(由某个函数测量)。
达到该大小后,将该块设置为自己的文本段,然后开始创建一个具有一些重叠的新文本块。

目前来说,由于语义的不确定性,用规则会取得更好的效果,文本分句长度为800。


3.文本向量化


语义检索的重要前提Sentence Embeddings。可惜目前看到的绝大部分材料都是使用OpenAIEmbeddings。OpenAIEmbeddings 调用的mode_name=“text-embedding-ada-002” 排在第6位


英文排行版


MTEB 排行榜 - MTEB 的拥抱面孔空间 (huggingface.co)

2.png

中文SOTA


这是一个CoSENT(余弦句子)模型:shibing624/text2vec-base-Chinese。


它将句子映射到 768 维密集向量空间,可用于任务 如句子嵌入、文本匹配或语义搜索


分别拿 text2vec-base-chinese 、instructor-large 和 OpenAIEmbedding Run这10个中文case,instructor-large 表现最差,text2vec-base-chinese 表现最好:

3.png

中文模型在政府语料问题的匹配top5 ernie-base text2vec-large-chinese
关于转发国家发展改革委物流业降本增效专项行动方案 2/5 4/5
农业综合开发扶持农业优势特色产业促进农业产业化发展的指导意见 2/5 3/5
北京市暂时调整有关行政审批和准入特别管理措施的决定 3/5 5/5
推进交通运输行业数据资源开放共享的实施意见 1/5 5/5
关于改进和规范公安派出所出具证明工作的意见 1/5 4/5
谁开展的原油期货保税交割业务暂免征收增值税 4/5 3/5
香港联交所上市股票的所得税问题 3/5 5/5
图书资料费、数据采集费、会议费/差旅费/国际合作与交流费、设备费、专家咨询费、劳务费、印刷费/宣传费是哪些 3/5 3/5
国家知识产权示范园区的申报条件 5/5 5/5

二、向量搜索


1.向量存储


Faiss是Facebook开源的一个向量检索库,用于大规模向量集合的索引和搜索。主要功能包括:


1.支持多种索引结构: IVF, IVFFlat, HNSW, etc。这些索引结构可以实现高精度和高召回的向量搜索。


2.支持多种度量方式:内积,欧氏距离,cosine 相似度等。可选择合适的度量方式对向量集合建立3索引。


3.快速的索引构建与搜索:Faiss使用GPU加速,可以实现亿量级向量的索引构建和搜索。


4.降维与聚类:Faiss提供PCA,IVFFlat等算法进行向量降维,并支持Kmeans算法进行向量聚类。


5.高级特性:Faiss支持在线学习,异构向量检索,索引压缩等高级特性。


Faiss的典型应用有:


1.图像检索:在大规模图片数据库中找到与输入图片最相似的图片。


2.文本匹配:快速找到与输入文本最相近的文本内容。


3.推荐系统:根据用户兴趣对大量商品进行快速检索和推荐。


4.声纹识别:在海量语音数据中实现语音识别和检索。


2.用户问题向量化


Embedding 模型进行向量化(text2vec-large-chinese)


3.知识库中搜索和问题最相似的topK个向量

# chunk_conent   是否启用上下文关联
# score_threshold    搜索匹配score阈值
# vector_search_top_k   搜索知识库内容条数,默认搜索5条结果
# chunk_sizes    匹配单段内容的连接上下文长度

向量搜索索引中查找与embedding最相似的k个结果,得分scores和索引indices。


如果得分scores高于阈值score_threshold,跳过该结果。


指定了chunk_conent,则在结果索引的附近扩展查找,将相近的文档片段拼接到doc,但拼接后长度不超过chunk_size。只有相同的文档才会被拼接。

4.png

5.png

三、大模型理解


将问题和topK个向量作为上下文输入给大模型,让大模型根据已有的提示信息进行总结归纳回答。

基于上下文的prompt模版:根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。 问题是:{question}

示例:

6.png

7.png

四、问题


1.目前该项目不够稳定,会出现奔溃的问题。


2.多轮对话后,显存溢出造成奔溃。


3.是否在prompt模版中加入判断,若所问问题非政务类型,转由大模型回答。


4.大模型可能无法准确地理解政务领域的专业知识和术语,在小部分回答上会存在偏差。


5.向量搜索时,可能会匹配到低质量文本,导致回答错误。(低质量:匹配到的文本具有一定相关性,但是和用户的问题意图有所偏差)

目录
相关文章
|
21天前
|
人工智能 缓存 监控
使用LangChain4j构建Java AI智能体:让大模型学会使用工具
AI智能体是大模型技术的重要演进方向,它使模型能够主动使用工具、与环境交互,以完成复杂任务。本文详细介绍如何在Java应用中,借助LangChain4j框架构建一个具备工具使用能力的AI智能体。我们将创建一个能够进行数学计算和实时信息查询的智能体,涵盖工具定义、智能体组装、记忆管理以及Spring Boot集成等关键步骤,并展示如何通过简单的对话界面与智能体交互。
463 1
|
1月前
|
机器学习/深度学习 人工智能 计算机视觉
让AI真正"看懂"世界:多模态表征空间构建秘籍
本文深入解析多模态学习的两大核心难题:多模态对齐与多模态融合,探讨如何让AI理解并关联图像、文字、声音等异构数据,实现类似人类的综合认知能力。
244 6
|
28天前
|
存储 人工智能 自然语言处理
RAG:增强大模型知识库的新范式
RAG:增强大模型知识库的新范式
429 99
|
18天前
|
人工智能 缓存 自然语言处理
Java与多模态AI:构建支持文本、图像和音频的智能应用
随着大模型从单一文本处理向多模态能力演进,现代AI应用需要同时处理文本、图像、音频等多种信息形式。本文深入探讨如何在Java生态中构建支持多模态AI能力的智能应用。我们将完整展示集成视觉模型、语音模型和语言模型的实践方案,涵盖从文件预处理、多模态推理到结果融合的全流程,为Java开发者打开通往下一代多模态AI应用的大门。
181 41
|
20天前
|
存储 人工智能 数据可视化
从零构建能自我优化的AI Agent:Reflection和Reflexion机制对比详解与实现
AI能否从错误中学习?Reflection与Reflexion Agent通过生成-反思-改进循环,实现自我优化。前者侧重内容精炼,后者结合外部研究提升准确性,二者分别适用于创意优化与知识密集型任务。
248 9
从零构建能自我优化的AI Agent:Reflection和Reflexion机制对比详解与实现
|
17天前
|
缓存 边缘计算 运维
基于 Cloudflare Workers 构建高性能知识库镜像服务:反向代理与 HTML 动态重写实践
基于Cloudflare Workers构建的边缘计算镜像服务,通过反向代理、HTML动态重写与智能缓存,优化维基百科等知识平台的访问性能。支持路径映射、安全头清理与容错回退,实现免运维、低延迟、高可用的Web加速方案,适用于教育、科研等合规场景。
257 7
|
25天前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
235 12
|
17天前
|
人工智能 自然语言处理 监控
58_大模型评估与评测:构建科学的多维度评测体系
在大语言模型(LLM)技术飞速发展的今天,如何科学、全面地评估和评测这些模型的能力已成为学术界和工业界共同关注的核心问题。2025年,大模型生态系统呈现出百花齐放的态势,从参数规模、架构设计到应用场景都出现了多样化的发展路径。在这种背景下,单一的性能指标或评测方法已经无法满足对大模型进行全面评估的需求。

热门文章

最新文章