什么是大模型「幻觉」
所谓的「幻觉」指的是当大模型生成与现实不符或逻辑上不连贯的信息时。这通常发生在模型对某些数据理解不足或数据本身存在偏差的情况下。由于模型是基于概率统计和以往数据训练的,它们可能在面对未知或少见情况时产生不准确的推断。

造成大模型「幻觉」的原因
这种现象的产生有多个原因:
- 数据偏差:如果训练数据中存在偏差,模型可能会学习并复制这些偏差。
- 过度泛化:模型可能在尝试理解复杂或模糊的概念时过度泛化,从而产生不准确的输出。
- 上下文理解不足:模型可能缺乏理解复杂上下文或长篇对话的能力。
解决该问题的方法
- 改进训练数据:确保训练数据多样、广泛且尽量无偏。
- 模型微调:对特定应用进行模型微调,以更好地适应其语境和需求。
- 上下文增强:提高模型对长篇对话和复杂情境的理解能力。
- 用户反馈机制:建立有效的用户反馈机制,以便不断优化模型性能。
构建个人知识库解决幻觉实操

一)知识库建立
可以使用自己的任意数据集作为知识库,将数据保存成 txt 文件就可以。然后建立本地路径进行存储。示例的数据已经和代码放在了一起,可以参考示例数据进行定义,文件要求使用 UTF-8 进行编码。当然,文本的质量越高,大模型回答的效果也就会越好。
二) 向量模型下载
FlagEmbedding 对应的向量模型是 BGE,目前是效果比较好的中文向量模型,原始的模型权蛋霑
要在 hugging face 上才能下载,需要一些特殊的网络环境,适合有经验的人员进行下载。非专业
人员可以直接使用我下载好的权重模型,如果想自己下载,需要先安装 git Ifs。然后执行下面的命
令,就可以下载整个模型的权重以及相关配置文件。下载完成后,同样,需要将模型的文件夹存放到你自己的指定目录。
git lfs install
git clone https://huggingface.co/BAAI/bge-large-zh
三)代码修改
整个项目的代码结构主要有四个 python 文件和一个图片构成,下面先介绍各个文件的作用,以及要执行代码需要修改的内容。
- SparkApi 讯飞星火的api 调用代码,无需修改
- SparkGPT 讯飞星火的包装类,需要修改
- prompt_ utils 提示词的包装类,无需修改
- gradio_demo 主界面的入口,需要修改里面的路径
- GPT4.png 主界面上GPT 头像的资源图片,无需修改
SparkGPT.py 代码中,需要将第 7-9行的内容进行修改,将你在讯飞星火的控制台中获取的信息
填写上去。
import SparkApi
from abc import ABC, abstractmethod
appid= ""# 填写控制台中获取的 APPID 信息
api secret = ""# 填写控制台中获取的 APISecret 信息
api_key= ""# 填写控制台中获取的 APIKey 信息
gradio_demo.py 代码中,需要将第 20-21 行进行替换成你的模型和数据所在的文件夹路径。
import gradio as gr
import uvicorn
from fastapi import FastAPI
from langchain.text_splitter import RecursiveCharacterTextSplitter
import os
from typing import List
from FlagEmbedding import FlagModel
from langchain.document_loaders import TextLoader
from langchain.retrievers import ParentDocumentRetriever
from langchain.schema.embeddings import Embeddings
from langchain.storage import InMemoryStore
from langchain.vectorstores import Chroma
from SparkGPT import SparkGPT
from prompt_utils import generate_prompt
BGE_MODEL_PATH = "/Users/linzhihao/pythonProject/py_practise/model/rag/bge-large-zh"
FILE_PATH="/Users/linzhihao/pythonProject/py_practise/model/rag/zsxq"
模型下载地址
链接: https://pan.baidu.com/s/1lHXR_NJfSiBezpqFQ9kiyg 提取码: 8fuw