最基础的大模型入门教程,手撸RAG基本原理代码,适合JAVA等传统项目开发人员。

Ollama 可以在 Windows 上运行了 阅读详情

一、大模型选择

  1. 各大开发平台申请模型

    例如:智谱开放平台,目前旗下模型glm-4-flash可以免费使用。

  2. 在模型网站下载开源模型,如Hugging Face(需要科学上网),国内可以在ModelScope下载,具体操作步骤以及硬件要求见官网。

二、模型对话

以智谱开放平台glm-4-flash模型为例

初体验

  1. 安装openai
pip install openai
  1. 编码
from openai import OpenAI

client = OpenAI(
    api_key="You Key",
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)
completion = client.chat.completions.create(
    model="glm-4-flash",  
    messages=[    
        {"role": "user", "content": "你是谁?"} 
    ],
    top_p=0.7,
    temperature=0.9
 )

print(completion.choices[0].message)

ChatCompletionMessage(content=‘我是一个名为 ChatGLM 的人工智能助手,是基于清华大学 KEG 实验室和智谱 AI 公司于 2024 年共 同训练的语言模型开发的。我的任务是针对用户的问题和要求提供适当的答复和支持。’, refusal=None, role=‘assistant’, audio=None, function_call=None, tool_calls=None)

流式输出

from openai import OpenAI

client = OpenAI(
    api_key="You Key",
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)
response = client.chat.completions.create(
    model="glm-4-flash",
    messages=[
        {"role": "user", "content": "你是谁?"}
    ],
    top_p=0.7,
    temperature=0.9,
    stream=True
)

for chuck in response:
    print(chuck.choices[0].delta.content, "|", end="")

我是一个 |名为 | Chat |GL |M | |的人工 |智能 |助手 |, |是基于 |清华大学 | K |EG | 实 |验 |室 |和 |智 |谱 | AI | 公司 |于 | |202 |4 | 年 |共同 |训练 |的语言 |模型 |开发的 |。 |我的 |任务是 |针对 |用户 |的问题 |和要求 |提供 |适当的 |答复 |和支持 |。 | |

三、应用案例之RAG

RAG (Retrieval-Augmented Generation),中文一般译为检索增强生成(听着挺奇怪的),最早由Facebook AI Research(现Meta AI)的研究人员在2020发表论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》。通过检索本地文档与大预言模型的文本生成能力结合,使得RAG成为目前大语言模型成熟应用之一。

先讲代码再讲理论。

from langchain_community.document_loaders import PyPDFLoader

# 1. 读取文本
file = "./浦发银行2023年第一季度报告.pdf"
loader = PyPDFLoader(file)
pages = loader.load()
print(pages[0].page_content)

# 2. 文本切割
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=20,
    length_function=len,
    is_separator_regex=False,
)

texts = text_splitter.split_documents([pages[0],pages[1],pages[2]]) # 这里先简单的拆分3段
text_contents: list[str] = [t.page_content for t in texts]

print(texts[0])
# 查看里面的内容
for t in texts:
    print("page_content:", t.page_content)
    print("page:", t.metadata.get('page') or 0)
    print("file_name:", t.metadata.get('source'))
    

# 3. 对切割的文本进行ebmedding
from langchain_huggingface import HuggingFaceEmbeddings# 这里采用的ebmeding模型是m3e-base,请填写自己的实际路径
embedding_path = "D:\python\project\clj_glm\models\m3e-base"
model_kwargs = {'device': "cuda" if torch.cuda.is_available() else "cpu"}
encode_kwargs = {'normalize_embeddings': False}
embedding_model = HuggingFaceEmbeddings(model_name=embedding_path,
                                        model_kwargs=model_kwargs,
                                        encode_kwargs=encode_kwargs)

# embeddings = embedding_model.encode([t.page_content for t in texts]) 向量化

# 4.存储向量数据
from langchain_community.vectorstores import FAISS
faiss: FAISS = FAISS.from_texts(text_contents, embedding_model)

file_faiss = "./faiss_file/"
index_name = "pfbank"
faiss.save_local(file_faiss, index_name=index_name)

# 5.检索向量数据
# 本地加载向量数据
# faiss: FAISS = FAISS.load_local(file_faiss, embedding_model, allow_dangerous_deserialization=True)
question = "浦发银行的股东都有谁?"
retrieval_texts = faiss.similarity_search(question, 2)
print(retrieval_texts)
retrieval_content = "\n".join([t.page_content for t in retrieval_texts])


# 6.与大模型对话
# 定义提示词
prompt = """
<指令>
根据已知信息,简洁和专业的来回答问题,不允许在答案中添加编造成分,答案请使用中文。
如果无法从中得到答案,请说 "根据已知信息无法回答该问题"。
</指令>
<已知信息>{context}</已知信息>
<问题>{question}</问题>
"""

from openai import OpenAI

client = OpenAI(
    api_key="You Key",
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)
completion = client.chat.completions.create(
    model="glm-4-flash",
    messages=[
        {"role": "user", "content": prompt.format(context=retrieval_content, question=question)}
    ],
    top_p=0.7,
    temperature=0.9
)

print(completion.choices[0].message.content)

以上代码所需依赖

在这里插入图片描述

根据上面的代码就实现了RAG的功能,使用到的组件如下:

  • embedding模型是m3e-base,其他模型需要自行下载,也可以使用在线embedding模型。
  • 本例使用的向量数据是FAISS。

下面的流程图就讲述了RAG的实现原理,主要分为两个流程:

  1. 系统加载文档解析,切割后的文本通过向量化并存储到向量库。
  2. 用户搜索,经过向量化的问题在向量库中进行相似度搜索,讲匹配到的文本数据经过prompt组合传入大模型并响应。

img

这只是一个简单的RAG原理展示。在实际场景中,还会有很多的问题,比如:检索准确率低,召回完整性不够,导致LLM幻觉严重的问题,在之后将会分析如何优化RAG。

本文参考:

Langchain官方文档:https://python.langchain.com/

原论文出处:https://arxiv.org/pdf/2005.11401

m3e-base 模型下载:https://modelscope.cn/models/AI-ModelScope/m3e-base

如何零基础入门 / 学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

👉 福利来袭CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

全套AGI大模型学习大纲+路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

read-normal-img

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉 福利来袭CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

img

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

DeepSeek本地部署详细指南 通过上述步骤,你可以在本地成功部署DeepSeek模型,并通过Ollama或Open Web UI与模型进行交互。本地部署不仅能够保护数据隐私,还能根据需求灵活调整模型参数,满足不同场景下的使用需求。如果你在部署过程中遇到任何问题,可以在评论区留言,我们将一起解决。希望这篇教程能帮助你顺利部署DeepSeek模型,开启高效开发的新旅程! 阅读详情

相关推荐

一篇文章搞懂Spring AI,Java程序员玩转大模型

AI 模型是用于处理和生成信息的算法,通常模仿人类的认知功能。通过从大型数据集中学习模式和见解,这些模型可以做出预测、文本、图像或其他输出,从而增强各行各业的各种应用。有了上述的基本知识之后,我们就可以通过SpringAi 结合 Ollama、Elasticsearch 编写一个法律智能问答方面的RAG 检索增强实战案例,通过这个案例,除了可以学习SpringAi,还可以了解RAG相关的技术。这个项目还实现了 网络检索、RAG的混合检索、还实现了对话记忆、多伦对话的功能。

持续分享有趣的技术干货 3961

大模型大模型RAG检索增强生成技术使用详解

大模型RAG检索增强生成技术使用详解

congge 7626

LLM的MCP协议:初识MCP,搭建第一个MCP Server

MCP(Model Context Protocol),是一个开发的协议,标准化了应用程序如何为大模型提供上下文。MCP提供了一个标准的为LLM提供数据、工具的方式,使用MCP会更容易的构建Agent或者是基于LLM的复杂工作流。

Criss@陈磊 2万+

一文彻底整明白,基于Ollama工具的LLM大语言模型Web可视化对话机器人部署指南

在上一篇博文中,我们在本地部署了**Llama 3 8B**参数大模型,并用 Python 写了一个控制台对话客户端,基本能愉快的与 Llama 大模型对话聊天了。但控制台总归太技术化,体验不是很友好,我们希望能有个类似 ChatGPT 那样的 Web 聊天对话界面,本博文就安排起来……

老牛啊 1万+

使用ollama在本地部署llama3-8b大模型

使用ollama在本地部署llama3-8b大模型

weixin_39945822的博客 1万+

基础大模型入门教程RAG基本原理代码适合JAVA传统项目开发人员

基础大模型入门教程RAG基本原理代码适合JAVA传统项目开发人员

瓦罗兰特顶级C位的博客 1173

复刻简单的大模型RAG项目

FAIR这篇论文探讨了一种结合检索(Retrieval)和生成(Generation)的方法,即RAG用于处理知识密集型的NLP任务。具体来说,根据用户输入查询条件,它会先从一个庞大的文档集合中检索出相关信息,然后利用该信息再通过一个文本生成模型产生终输出,从而提升预测的质量和准确性。这个论文出来的时候,恐怕没预料到在3-4年后在大模型领域大放异彩。可解释性vs难解释性。

m0_68294392的博客 1688

基础学AI大模型RAG技术

RAG(Retrieval-Augmented Generation,检索增强生成)是一种“先检索、再生成”的AI技术架构——先从外部知识库(比如文档、数据库)里找到和问题相关的“靠谱资料”,再把这些资料和问题一起喂给大模型,让模型基于真实信息生成回答,而不是靠自己“脑补”。简单说:传统大模型是“凭记忆答题”,RAG是“先翻书再答题”,自然不容易出错~

chandfy的博客 1646

大模型应用】RAG 详细介绍和 Java 项目使用 RAG

RAG(检索增强生成)是一种结合信息检索与大型语言模型(LLM)的技术,通过从外部知识库检索相关上下文,提升LLM生成答案的准确性、时效性和可追溯性。其架构分为离线处理(数据加载、文本分割、向量化存储)和在线查询(问题向量化、语义检索、提示生成)两个阶段。Java生态可通过Apache Tika等工具解析文档,调用外部API或本地模型实现向量化,并集成Redis/Weaviate等向量数据库。推荐使用LangChain4J框架简化开发流程,快速构建企业级RAG应用,如智能客服和知识库问答系统。该方案成本低、

NeoLshu的博客 1428

【粉丝福利社】大模型RAG应用开发:构建智能生成系统

在数字化和信息爆炸的时代,自然语言处理(Natural Language Processing,NLP)技术已成为推动创新和提升效率的关键驱动力。尤其是在需要精准、实时地进行信息交互的应用中,如问答系统、客户支持和专业文档管理等,如何让生成模型实现高效且精准的信息生成与检索成为核心需求。

愚公智库 11万+

【必读收藏】传统RAG与Agentic RAG:当检索学会“行动“

传统RAG基于语义检索,适合概念说明类场景;Agentic RAG能执行"动作",适合数据查询等动态场景。传统RAG只能进行语义匹配,而Agentic RAG可以进行条件查询。在实际业务中,两种技术都需要使用,因为用户问题既包含简单的概念性问题,也有复杂的数据分析问题。本质上,它们都属于检索技术,但Agentic RAG多了一步筛选的动作。

m0_59162559的博客 925

大模型时代,传统程序员还需要写代码吗?

后,我认为在角色转化的过程中后等待我们的,并且难度很高的内容就是需要深入学习AI的底层原理,尤其是大模型的架构。我们在实现大多数模块需求的时候,通过是针对这个模块进行CRUD(增删查改)的代码编写,这个代码通过会加入一些异常判断或者实体类转化等操作,所以无法避免还是会产生一些重复的工作量,这个不需要脑力的重复操作也可以交给AI完成。可以看出其完整的编写关于用户标签的业务模块的代码,虽然业务逻辑很简单,但是我们可以在提示词中告诉他更多业务相关的判断逻辑,那么他就可以生成复杂的业务逻辑代码

2401_82452722的博客 1382

十年Java的焦虑:当新人用AI写代码比我快,传统后端路在何方?

十年Java的焦虑:当新人用AI写代码比我快,传统后端路在何方?

EnjoyEDU的博客 1365

Java 使用 LangChain4j 搭建大模型RAG 教程

RAG 的核心思想是将传统的信息检索(IR)技术与现代的生成式大模型结合起来。其工作原理可以分为以下几个步骤:接收请求:系统接收到用户的查询。信息检索(R):从知识库中检索出与查询相关的文档片段。生成增强(A):将检索到的文档片段与原始查询一起输入到大模型中。输出生成(G):大模型生成终的文本答案。LangChain4j 是 LangChain 的 Java 版本,旨在封装与 LLM 对接的细节,简化开发流程,提升基于 LLM 开发的效率。

人生一张西的博客 1422

大模型时代,2024的传统程序员还需要写代码吗?需要学习大模型吗?

我认为在角色转化的过程中后等待我们的,并且难度很高的内容就是需要深入学习AI的底层原理,尤其是大模型的架构。收录了近两年151个优秀的大模型落地应用案例,这些案例覆盖了金融、医疗、教育、交通、制造等众多领域,无论是对于大模型技术的研究者,还是对于希望了解大模型技术在实际业务中如何应用的业内人士,都具有很高的参考价值。可以看出其完整的编写关于用户标签的业务模块的代码,虽然业务逻辑很简单,但是我们可以在提示词中告诉他更多业务相关的判断逻辑,那么他就可以生成复杂的业务逻辑代码

2301_76168381的博客 1349

AGI|大模型时代,传统程序员还需要写代码吗?

尽管大模型的崛起对传统程序员带来了不小的冲击,但写代码的核心技能对于我们来说仍然至关重要。尤其在特定的业务场景和行业中,程序员的专业知识和经验依然不可替代。然而,随着AI技术的不断发展,程序员需要主动拥抱这一变化,通过学习新技能和技术,提升自己的竞争力。同时,探索人机协同带来的效率提升,也是程序员未来发展的重要方向。总之,在大模型时代,传统程序员不仅需要坚守传统的编程技能,还需不断创新,以适应未来的发展需求。

2401_85280106的博客 895
上一篇: 如何高效提升大模型的RAG效果?多种实用策略一次掌握
下一篇: 景观设计转行 | 从景观到大模型,我的产品经理转型探索纪实
少喝冰美式
博客等级 码龄2年 6628粉丝 · 517原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值