微信扫码
添加专属顾问
欢迎来到大语言模型 (LLM) 时代,它们已成为不可或缺的数字伴侣,帮助我们完成从编码到烹饪冒险的各种任务。然而,我们必须承认,即使是最有能力的人也有局限性。尽管大语言模型拥有令人印象深刻的能力,但他们仍面临着两个重大挑战:
信息访问:大语言模型无法快速访问其训练集之外的数据。想象一下,你最喜欢的人工智能助手无法为你提供有帮助的答案,但却喋喋不休地告诉你如何获得问题的答案。
幻觉错误:这可能听起来令人惊讶,但大语言模型有时会产生看起来像是进入了想象领域的反应。这些不准确之处可能会导致混乱和沮丧。
我们都经历过大语言模型似乎陷入困境的时刻,由于其有限的训练数据而无法产生一致的反应。这就像有一个朋友擅长提供一般建议,但在寻求真正的帮助时却陷入困境。
例如,当你向顶级大语言模型提出这些深刻的问题时,像 ChatGPT-3.5
这样的人工智能往往会给出听起来像是来自自助小册子的答案。他们擅长反省数据模式,但缺乏提供个性化建议所需的真正的人类理解。因此,如果一个人正在寻求真正的支持,普通的大语言模型几乎没有什么帮助。https://chat.openai.com/
在人工智能的旋风世界中,每当这些充满了所有奇特的扩展训练数据的新模型下降时,我们几乎都会受到摆布。但是,嘿,如果我们想要一位像真正的心理学家一样提供建议的助理呢?我们不要忘记深入探讨这些深刻的问题。另外,如果我们值得信赖的大语言模型有更多的情报来精确地确定这些回答,那不是很好吗?
现在,微调似乎是一种可能的解决方案,但它并不全是彩虹和独角兽,它有自己的一系列风险和复杂性:
模型漂移:当我们不断用新数据微调模型时,模型可能会偏离原始性能,从而可能产生意想不到的结果。
成本和复杂性:除了技术障碍之外,迭代微调过程还需要大量的计算资源和专业知识,这意味着巨额投资。
这就是 RAG 发挥作用的地方。在本系列中,我们将开始探索 RAG,涵盖:
了解 RAG:检索增强生成模型到底是什么?它们如何运作?
使用 Mistral 7b 实施:通过 HuggingFace 和 LangChain 等平台利用 Mistral 7b 构建 RAG 的分步指南。
现实世界的应用:通过实际例子见证小型 RAG 的实际应用,包括创建一个能够像人类心理学家一样深入研究深层问题的心理学助理。
在深入研究错综复杂的技术之前,让我们确保我们对一些关键概念达成共识:
1. 文本嵌入
文本嵌入就像计算机大脑中的文字魔法。它们将单词、短语甚至整个句子转化为数字,帮助计算机理解它们的含义。可以将其想象为将文字转换为只有计算机可以读取的密码。我们有 Word2Vec 和 GloVe 等老式方法,也有 BERT 等新颖的方法,它们都发挥着神奇的作用来理解文本。
想象一下:你有"国王"-"男人"+"女人"。这就像试图在世界上寻找"女王"一样。令人惊讶的是,这个数学技巧常常让我们准确无误,显示出文本嵌入在理解单词关系方面有多么出色。
文本嵌入已经取得了长足的进步。我们从基本方法开始,但现在我们有了像 BERT
这样的转换器来改变一切。他们就像街区里的酷孩子一样,利用注意力来理解上下文中的单词。此次升级意味着他们可以处理更大的文本块并更好地理解它们。"国王"、"女王"、"男人"和"女人"之间语义关系的二维图形描述。
以下是来自 OpenAI 和 Cohere 的一些重要资源,可以帮助您更好地理解文本嵌入。
2. 矢量数据库
那么,您知道处理大量复杂数据是多么令人头痛吗?传统数据库有时无法解决如此复杂的问题。但随后,矢量数据库出现了,可以拯救世界!他们就像数据世界的超级英雄,轻松处理所有棘手的高维数据点。
想象一下:您的数据点全部布置在网格上,每个数据点都由其独特的属性表示。这有点像根据口味而不是颜色或形状来组织一堆不同的水果。唯一的区别是文本的这些属性是使用文本嵌入(向量)来表示的。
图片来源:KDnuggets
矢量数据库使用余弦相似度等很酷的技巧来计算不同数据点的相似程度,就像 Google 根据它们与您的查询的匹配程度向您显示搜索结果一样。这一切都是为了理解混乱的数据并帮助您快速找到所需的内容!
对于好奇的人来说,以下是一些了解矢量数据库更多信息的好资源
3. RAG 揭幕
但 RAG 到底是什么?检索增强生成模型充当桥梁,为语言模型 (LLM) 提供外部数据访问权限,以生成富含上下文洞察的响应。无论是借鉴最近的新闻、讲座记录,还是在我们的案例中,借鉴顶级心理学文献,RAG 都使大语言模型能够以新发现的深度和相关性做出回应。
您问它们如何发挥作用?将 RAG 想象为配备向量搜索机制的大语言模型。以下是该过程的简化分解:
数据库设置:使用编码文档填充矢量数据库。
查询编码:使用句子转换器将输入查询转换为向量。
相关上下文检索:根据查询从向量数据库中检索相关上下文。
提示大语言模型:利用检索到的上下文和原始查询,指导大语言模型生成充满上下文深度的响应。
高级 RAG 架构
4. 心理专家 RAG
在打开代码编辑器之前,让我们花点时间了解一下为什么 RAG 在心理学领域具有巨大的潜力。想象一下,拥有一个数字伴侣不仅能够理解您的查询,还能从庞大的心理学文献库中获取相关见解。借助 RAG,我们将进入一个只需敲击几下键盘即可获得个性化心理健康支持和同理心反应的世界。现在让我们进入代码部分!
4.1 入门:安装和设置库
好吧,让我们解决这些依赖关系。我们需要大量库来启动我们的 RAG 之旅。别担心,我们已经为您提供了一个简单的 pip install 命令:
!pip install -q torch datasets
!pip install -q accelerate==0.21.0 \
peft==0.4.0 \
bitsandbytes==0.40.2 \
trl==0.4.7
!pip install -q langchain \
sentence_transformers \
faiss-cpu \
pypdf
!pip install -U transformers
4.2 导入行业工具
现在我们的库已经就位,让我们引入重型火炮。我们将使用 PyTorch、Transformers 和一点 LangChain 魔法来编织我们的 RAG 杰作。
import os
import torch
from transformers import (
AutoTokenizer,
AutoModelForCausalLM,
BitsAndBytesConfig,
pipeline
)
from transformers import BitsAndBytesConfig
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings.huggingface import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from langchain.prompts import PromptTemplate
from langchain.schema.runnable import RunnablePassthrough
from langchain.llms import HuggingFacePipeline
from langchain.chains import LLMChain
import transformers
import nest_asyncio
nest_asyncio.apply()
from tqdm.notebook import tqdm
from langchain_community.document_loaders import PyPDFLoader
4.3 加载模型和分词器
啊,我们 RAG 应用程序的核心和灵魂 - Mistral-7B。让我们启动模型和分词器,但是等等,让我们高效地将其全部安装在单个 GPU 上。我们在这里所做的一切都是为了优化!
# Load Tokenizer
model_name='mistralai/Mistral-7B-Instruct-v0.2'
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
print("Tokenizer loaded !!")
## bitsandbytes parameters
# Activate 4-bit precision base model loading
use_4bit = True
# Compute dtype for 4-bit base models
bnb_4bit_compute_dtype = "float16"
# Quantization type (fp4 or nf4)
bnb_4bit_quant_type = "nf4"
# Activate nested quantization for 4-bit base models (double quantization)
use_nested_quant = False
compute_dtype = getattr(torch, bnb_4bit_compute_dtype)
bnb_config = BitsAndBytesConfig(
load_in_4bit=use_4bit,
bnb_4bit_quant_type=bnb_4bit_quant_type,
bnb_4bit_compute_dtype=compute_dtype,
bnb_4bit_use_double_quant=use_nested_quant,
)
# Check GPU compatibility with bfloat16
if compute_dtype == torch.float16 and use_4bit:
major, _ = torch.cuda.get_device_capability()
if major >= 8:
print("=" * 80)
print("Your GPU supports bfloat16: accelerate training with bf16=True")
print("=" * 80)
# Load Model
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
)
让我们在一个基本问题上测试我们的普通模型
def get_vanilla_response(question, tokenizer, model):
inputs = tokenizer.encode_plus(f"[INST] {question} [/INST]", return_tensors="pt")['input_ids'].to('cuda')
generated_ids = model.generate(inputs,
max_new_tokens=1000,
do_sample=True)
output = tokenizer.batch_decode(generated_ids)
return output[0]
question = "What changes do I need in my personality to make friends easily?"
print(get_vanilla_response(question = question, tokenizer = tokenizer, model = model))
以下是我们得到的响应,运行时响应可能会略有变化
Question: What changes do I need in my personality to make friends easily?
Response:
Making friends can be a challenge for some people, and it often requires some adjustments to our personality traits and social behaviors. Here are some suggestions for changes that may help you make friends more easily:
Be open and approachable: People are more likely to be drawn to those who are friendly and welcoming. Smile often, make eye contact, and show genuine interest in others.
Be a good listener: Most people love to talk about themselves and share their stories. Be an attentive listener and show empathy when others speak. This will make them feel valued and appreciated.
Be patient and persistent: Making friends takes time and effort. Don’t get discouraged if it takes a while to build a strong connection. Keep putting yourself out there and be persistent.
Be optimistic: Having a positive attitude and a good sense of humor can help attract people to you. People are more likely to want to be around those who make them feel good.
Be reliable and consistent: People value those who are dependable. Keep your commitments and be consistent in your actions and behaviors.
Be authentic to yourself: Don’t try to be someone you’re not just to fit in. People are drawn to authenticity and genuine personality. Be yourself and let your unique qualities shine through.
Be willing to try new things: Being open to new experiences and trying new things can help broaden your horizons and expand your social circle. This can lead to meeting new people and making new friends. keep in mind that making friends is a two-way street, so be open to forming genuine connections and being a good friend in return.
这个答案很好,但仍然很笼统,缺乏人情味。现在让我们尝试使用 RAG 来改善这一点。
4.4 打造 RAG 管道
有趣的来了。将它们放在一起创建我们的 RAG 管道。我们将使用 LangChain 来无缝地协调检索和生成过程。
5. 创建文本生成管道
# Create a text generation pipeline
text_generation_pipeline = pipeline(
model=model,
tokenizer=tokenizer,
task="text-generation",
temperature=0.2,
repetition_penalty=1.1,
return_full_text=True,
max_new_tokens=10000,
)
mistral_llm = HuggingFacePipeline(pipeline=text_generation_pipeline)
现在让我们来看看我们将用来创建心理助手的数据。
5.1 心理学书籍清单
丹尼尔·卡尼曼(Daniel Kahneman)的《思考,快与慢》:这本书深入研究了两种思维系统,提供了对认知偏见和决策过程的见解。
罗伯特·B·西奥迪尼(Robert B。Cialdini)的《影响力:说服心理学》:西奥迪尼探索了影响力的原理,揭示了影响人类行为的心理触发因素。
丹·艾瑞利(Dan Ariely)的《可预测的非理性》:艾瑞利的书探讨了影响决策的非理性行为,为人类心理学提供了有价值的观点。
丹尼尔·戈尔曼(Daniel Goleman)的《情商》:这本书强调了情商在理解自己和他人方面的重要性,这是人类心理学的一个重要方面。
艾略特·阿伦森(Elliot Aronson)的《社会动物》:阿伦森的书涵盖了社会心理学的广泛主题,提供了对社会背景下人类行为的见解。
理查德·H·塞勒 (Richard H。Thaler) 和卡斯·R·桑斯坦 (Cass R。Sunstein) 的《助推》:塞勒和桑斯坦结合心理学和经济学的见解,讨论了微妙的助推如何影响决策。
# add Book paths from Google Drive
pdf_paths = ['/content/drive/MyDrive/Blogs/psychology-gpt/Dan Ariely - Predictably Irrational_ The Hidden Forces That Shape Our Decisions-HarperCollins (2008).pdf',
'/content/drive/MyDrive/Blogs/psychology-gpt/Daniel Goleman - Emotional Intelligence_ Why it Can Matter More Than IQ-Bloomsbury (2009).pdf',
'/content/drive/MyDrive/Blogs/psychology-gpt/Daniel Kahneman - Thinking, Fast and Slow .pdf',
'/content/drive/MyDrive/Blogs/psychology-gpt/Elliot Aronson - The Social Animal. Tenth Edition-Worth Publishers (2007).pdf',
'/content/drive/MyDrive/Blogs/psychology-gpt/Richard H. Thaler, Prof. Cass R. Sunstein - Nudge_ Improving Decisions About Health, Wealth, and Happiness-Yale University Press (2008).pdf',
'/content/drive/MyDrive/Blogs/psychology-gpt/Robert B. Cialdini - Influence_ The Psychology of Persuasion (Collins Business Essentials) (2007).pdf']
docs = []
for pdf_path in tqdm(pdf_paths):
loader = PyPDFLoader(pdf_path)
pages = loader.load_and_split()
docs = docs+pages[8:-10]
# Load chunked documents into the FAISS index
db = FAISS.from_documents(docs,HuggingFaceEmbeddings(model_name='BAAI/bge-base-en-v1.5'))
retriever = db.as_retriever()
# Create prompt template
prompt_template = """
### [INST] Instruction: Answer the question based on your human psychology knowledge, you can also use this auxillary knowledge to help:
{context}
### QUESTION:
{question} [/INST]
"""
# Create prompt from prompt template
prompt = PromptTemplate(
input_variables=["context", "question"],
template=prompt_template,
)
# Create llm chain
llm_chain = LLMChain(llm=mistral_llm, prompt=prompt)
rag_chain = (
{"context": retriever, "question": RunnablePassthrough()}
| llm_chain
)
5.2 让我们测试一下我们的 RAG
设置就足够了;让我们测试一下我们的 RAG!我们将提出一些发人深省的问题,看看效果如何。
# testing on the same question for a comparison
question = "What changes do I need in my personality to make friends easily?"
op = rag_chain.invoke(question)
print(op['text'])
Question: What changes do I need in my personality to make friends easily?
Response:
Based on the information provided in the documents, here are some suggestions for developing social skills to make friends more easily:
Be attuned to others’ needs and feelings: Strive for a balance between being true to yourself and being sensitive to others’ needs. This will help you avoid becoming a social chameleon, who may win popularity but sacrifices true satisfaction.
Honesty and authenticity: Be genuine in your interactions with others. People appreciate authenticity and are more likely to form lasting relationships with those who are true to themselves.
Active listening: Pay attention to what others are saying and respond appropriately. This shows respect and interest in their thoughts and experiences.
Empathy: Try to understand others’ perspectives and emotions. This will help you connect with them on a deeper level and build stronger relationships.
Adaptability: Be flexible in your interactions with others. This means being able to adjust your behavior to fit different social situations and adapt to the needs and preferences of the people around you.
Positive body language: Use open and positive body language to convey warmth and approachability. This includes maintaining eye contact, smiling, and using appropriate facial expressions.
Approachability: Make yourself available and approachable to others. This means being open to new experiences and meeting new people, and creating opportunities for social interaction.
Practice active engagement: Engage fully in conversations and activities with others. This means being present in the moment and actively participating in the interaction, rather than just going through the motions.
By focusing on these areas, you can develop the social skills necessary to make friends more easily and build strong, meaningful relationships.
6. 好处
因此,当我们比较这两个答案时,我们注意到他们在如何提出提高交友社交技能的建议方面存在一些相似之处和不同之处。
现在,基于 RAG 的答案是什么?这就像一个朋友为你提供了整个分解------详细,并为每项技能提供了具体的例子。这都是关于实用的技巧和策略,为您提供清晰的步骤来提升您的社交游戏水平。另一方面,普通的答案更广泛一些,发生了哲学上的转变。
从本质上讲,RAG 通过利用外部数据源增强基本语言模型的功能来提高响应的质量和深度,这使其对于需要特定领域专业知识的任务(例如提供社交技能和心理学建议)特别有价值。
对于那些想要进行更多实验的人来说,这里是入门笔记本。如果您有任何疑问,请通过我的LinkedIn账号联系我,我很乐意提供帮助!
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-07-01
提升 RAG 准确率全攻略 让你的 AI 知识库 真正靠谱起来!
2026-06-30
教程:如何用AutoRAG + Milvus避免RAG 与Agent 中出现串租问题
2026-06-30
知识库不是文件堆——我把RAG准确率从60%调到了92%
2026-06-30
本体论语义建设新思路,另类RAG来解决检索问题
2026-06-30
别把RAG当架构:Ontology(本体)才是Agent的业务世界
2026-06-29
PixelRAG:伯克利团队颠覆传统 RAG,用截图代替文本检索! 28 天狂揽 3000+ Star!
2026-06-29
腾讯WeKnora开源详解(三):检索引擎与生态集成
2026-06-29
腾讯开源WeKnora详解(二):知识库与对话核心能力
2026-04-06
2026-04-27
2026-04-23
2026-04-20
2026-04-09
2026-04-12
2026-04-22
2026-04-10
2026-05-14
2026-04-30
2026-06-23
2026-06-23
2026-06-15
2026-06-10
2026-06-10
2026-05-20
2026-05-18
2026-05-11
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。