如何本地安装向量数据库,并搭建rag

大模型必备向量数据库-Milvus的安装过程 Milvus是一个开源的向量相似度搜索引擎,专注于大规模向量数据的快速相似度搜索。本文将介绍Milvus的安装,跟着走,肯定能装上(#^.^#) 阅读详情
AI摘要

本文介绍了本地知识库搭建和RAG检索增强生成技术。指出大模型存在数据迟滞和缺失问题,可通过向量数据库构建本地知识库解决。详细阐述RAG三阶段,包括检索、增强、生成,并给出完整代码示例,展示了代码执行结果,能提高大模型输出准确性。

在这里插入图片描述
一、本地知识库 搭建


1、大模型弊端

大模型弊端 : 大模型 有强大的 语言处理和理解 能力 , 但是 大模型本身并不具备 最新的数据 以及 特定领域的专有数据 , 一旦大模型没有相关知识内容 , 就会出现 " 幻觉 " , 开始 胡编乱造 ;

  • 数据迟滞 : 大模型 训练数据 往往存在一定的时滞性 , 如 : 1 月收集的数据 开始训练 , 要花半年才能训练完毕 , 使用大模型时是没有最近半年的数据的 ;
  • 数据缺失 : 特定领域的专业数据 也可能并不包含在大模型的训练集中 , 如 : 公司或行业的 保密数据 , 商业机密等 ; 大模型 在回答相关领域问题时 缺乏准确性 ;

2、向量数据库 -> 本地知识库

为了克服 大模型的 数据迟滞 和 数据缺失 弊端 , 可以通过 向量数据库 来 构建一个本地化的 知识库 , 以实现 特定领域知识 的 实时更新 , 进而 开发基于 本地知识库的智能问答系统 ;

本地知识库 作为 大模型的补充 , 存储

  • 最新数据
  • 特定领域的专有知识 ;

本地知识库 参与 提示词构建 : 通过 向量数据库 的 向量检索技术 , 我们可以 快速、准确地从知识库 中提取出与用户查询相关的信息 , 然后将本地知识 构建到 Prompt 提示词 中 ;

本地知识库 数据维护 : 本地知识库 应该 建立一套完善的 知识库 更新机制 , 当新的 数据或领域知识 出现时 , 可以及时 将 新知识 添加到 向量数据库 中 , 确保 本地知识库始终 保持最新、最全面的状态 ;

通过向量数据库搭建本地知识库 , 并实现领域知识的实时更新 , 可以有效解决大模型缺乏最新数据和特定领域专有数据的问题 , 充分利用 本地知识库 中的最新数据和专有知识 , 提高 大模型输出的准确性 ;

二、RAG 检索增强生成 三阶段


1、RAG 三阶段简介

RAG ( Retrieval-Augmented Generation , 检索增强生成 )是一种结合 信息检索 与 生成模型 的技术 , 通过 外部知识库 提升 生成内容的 准确性 和 相关性 ;

RAG 流程可分为 三阶段 :

  • 检索 Retrieval : 向量相似度 匹配本地知识
  • 增强 Augmented : 本地知识库信息 注入提示词
  • 生成 Generation : 大模型整合提示词 输出

RAG 积极意义 :

  • 动态知识更新 : 无需 重新训练模型 即可通过 更新 本地知识库 适应 新领域数据 或 实时数据 ;
  • 可解释性增强 : 生成结果可追溯至检索内容 , 便于验证来源可信度。

RAG 适用场景 : 问答系统、客服对话、长文本生成(如报告撰写)等需结合外部知识的任务 ;

2、RAG 三阶段 流程图

使用 Mermaid 语法绘制流程图 :

graph TD
    A[用户提出问题] --> B{查询 本地 向量数据库}
    B --> C[根据 语义相似度 获取本地知识]
    C --> D[Prompt 提示词构建]
    D --> E{提示词 输入 大模型}
    E --> F[获得最终回答]

用户提出问题

查询 本地 向量数据库

根据 语义相似度 获取本地知识

Prompt 提示词构建

提示词 输入 大模型

获得最终回答

graph 是指要绘制的图表类型 ,

  • TD 是 指方向为 自上而下 Top Down
  • LR 从左到右
  • BT 从下到上
  • RL 从右到左

3、检索 Retrieval - 向量相似度匹配

从 本地知识库 中快速 定位 与用户查询 最相关的信息片段 , 涉及到如下技术 :

  • 文本向量转化 : 使用 嵌入模型 ( 文本向量模型 ) , 如 : BERT、Sentence-BERT , 将 本地知识 转换为高维向量 ;
  • 文本向量相似度计算 : 通过 余弦距离 或 欧氏距离 衡量查询向量与文档向量间的相关性 ;
  • 向量高效检索 : 借助近似最近邻算法(如FAISS、HNSW)或 搜索引擎(如Elasticsearch)加速大规模向量匹配 ; 这里推荐使用 向量数据库 ;
  • 关键技术问题 : 平衡检索速度与准确性 , 处理不同语言的语义多样性 , 如 : 同义词、多义词 ;

4、增强 Augmented - 知识库信息注入

将检索到的关键信息整合到生成模型的输入中 , 也就是 Prompt 提示词 , 引导 大语言模型 生成更可靠的回答 ;

  • 提示工程 : 在输入提示中拼接检索到的文本(如“基于以下内容回答:[检索结果]+用户问题”)。
  • 注意力增强 : 通过模型架构设计(如Fusion-in-Decoder),让生成过程更聚焦于检索内容。
  • 减少幻觉 : 减少生成模型的“幻觉”(虚构事实),提升回答的可信度。
  • 关键问题 : 过滤噪声信息,避免信息过载对生成质量的影响。

5、生成 Generation - 大模型整合输出

基于检索信息和模型内部知识,生成自然、连贯且准确的最终回答。

  • 模型选择 : 通常采用大语言模型(如GPT-4、Llama、PaLM),利用其强大的语言理解和生成能力。
  • 生成策略 : 根据场景选择束搜索(保证连贯性)或采样(增加多样性),并可能加入后处理(如去重、引用标注)。
  • 关键技术点 : 回答的准确性、与检索内容的一致性,以及逻辑流畅性。

三、完整代码示例


1、生成本地知识库代码示例

当使用 RAG 服务时 , 首先从该 chroma_db 向量数据 中的 news_articles 集合 中 , 搜索 指定个数 的 相似结果 , 然后将这些相似的 文本 拼接到 提示词 中 , 再将提示词输入到 LLM 大语言模型 中 , 得到输出结果 ;

代码示例 ( 可独立运行 ) :

# 导入所需库
import chromadb  # ChromaDB 向量数据库
from openai import OpenAI  # OpenAI 客户端

# 初始化 OpenAI 客户端 (替换成自己的 API 信息)
client = OpenAI(
    api_key="sk-i3daF6",  # 替换为你的 OpenAI API Key , 这里我把自己的 API-KEY 隐藏了
    base_url="https://api.xiaoai.plus/v1"  # 替换为你的 API 服务端点
)

def get_embeddings(texts, model="text-embedding-ada-002"):
    """将文本转换为向量表示
    Args:
        texts: 需要编码的文本列表
        model: 使用的嵌入模型(默认OpenAI官方推荐模型)
    Returns:
        包含向量数据的列表,每个元素对应输入文本的768维向量
    """
    response = client.embeddings.create(
        input=texts,
        model=model
    )
    # 从响应中提取向量数据
    return [item.embedding for item in response.data]

# 初始化 ChromaDB 客户端 (持久化到本地目录)
chroma_client = chromadb.PersistentClient(path="chroma_db")

# 创建或获取集合 (相当于数据库表)
collection = chroma_client.get_or_create_collection(
    name="news_articles",  # 集合名称
    metadata={"hnsw:space": "cosine"}  # 使用余弦相似度
)

# 原始文本数据集(示例新闻标题)
documents = [
    "李彦宏称大模型成本每年降低90%",  # 科技类
    "乌军大批直升机击落多架俄无人机",  # 国际争端
    "王力宏回应是否想找新伴侣",      # 娱乐新闻
    "饺子不知道观众怎么想出的藕饼cp",  # 影视相关
    "加沙停火协议关键时刻生变"       # 国际争端
]

# 批量生成文档向量(OpenAI API调用)
document_embeddings = get_embeddings(documents)

# 生成唯一文档 ID (需要唯一标识符)
document_ids = [str(i) for i in range(len(documents))]  # 生成 ["0", "1", ..., "4"]

# 将文档插入数据库
collection.add(
    ids=document_ids,  # 唯一ID列表
    embeddings=document_embeddings,  # 文本向量列表
    documents=documents  # 原始文本列表
)

2、生成本地知识库执行结果

上述代码执行后 , 在本地生成数据库文件 ;

在这里插入图片描述

3、RAG 服务实现

RAG 流程可分为 三阶段 : 这 三个阶段 , 分别有对应的代码模块 ;

  • 检索 Retrieval : 向量相似度 匹配本地知识
  • 增强 Augmented : 本地知识库信息 注入提示词
  • 生成 Generation : 大模型整合提示词 输出
① 检索 Retrieval 模块

检索 Retrieval : 向量相似度 匹配本地知识

  • 首先 , 获取 chroma_db 向量数据库 以及 数据库 中的 news_articles 集合 ( 数据库表 ) , 这是 上一步 创建的 chromadb 向量数据库表 ;
    # 初始化向量数据库连接
    chroma_client = chromadb.PersistentClient(path="chroma_db")
    # 创建或获取集合 (相当于数据库表)
    collection = chroma_client.get_or_create_collection(
        name="news_articles",  # 集合名称
        metadata={"hnsw:space": "cosine"}  # 使用余弦相似度
    )

  • 然后 , 将要查询的 文本 转为 文本向量 ;
        # 1. 向量检索, 生成查询向量, 将文本转为向量
        query_embedding = get_embeddings([user_query])[0]

  • 最后 , 从 news_articles 数据库表 中 , 查询 目标文本向量 中最相近的 2 个文本 ;
        # 执行相似性查询
        search_results = collection.query(
            query_embeddings=[query_embedding],  # 查询向量
            n_results=2  # 返回前2个最相似结果
        )

② 增强 Augmented 模块

增强 Augmented : 本地知识库信息 注入提示词

  • 首先 , 给定一个提示词模板 prompt_template , 其中的 __INFO__ 需要替换为 向量数据库 中查询的内容 , __QUERY__ 需要替换为 用户的提问 ;
# 提示词模板(控制模型输出格式)
prompt_template = """
你是一名国际军事问题专家。你的任务是根据现有知识库和用户问题给出最佳答案。

已知信息 : 
__INFO__

用户提问 : 
__QUERY__

"""

  • 然后 , 使用下面 的 build_prompt 函数 , 处理上述 提示词模板 , 分别传入 info=search_results['documents'][0] 和 query=user_query 两个 键值对参数 , 这样就将 __INFO__ 和 __QUERY__ 替换为了指定的文本 ;
def build_prompt(**kwargs):
    """动态构建提示词
    Args:
        prompt_template: 提示词模板字符串
        **kwargs: 需要替换的键值对(自动匹配__KEY__占位符)
    Returns:
        完成替换后的完整提示词
    """
    prompt = prompt_template
    for k, v in kwargs.items():
        # 处理不同类型的数据输入
        if isinstance(v, str):
            val = v
        elif isinstance(v, list) and all(isinstance(elem, str) for elem in v):
            val = '\n'.join(v)  # 列表转换为多行文本
        else:
            val = str(v)  # 其他类型转为字符串
        prompt = prompt.replace(f"__{k.upper()}__", val)
    print("构建提示词:" + prompt)
    return prompt

  • 传参的实际调用代码为 :
        # 2. 构建增强提示
        prompt = build_prompt(
            info=search_results['documents'][0],  # 取最相关结果
            query=user_query
        )

③ 生成 Generation 模块

生成 Generation 模块 很简单 , 就是个 普通的 LLM 问答模块 , 调用下面的 函数 , 传入 构建好的 Prompt 提示词 , 完成 问答 ,得到一个 LLM 输出的内容 ;

def get_completion(prompt, model="gpt-3.5-turbo"):
    """封装OpenAI API调用
    Args:
        prompt: 完整的提示词内容
        model: 选择的大模型版本(默认gpt-3.5-turbo)
    Returns:
        模型生成的文本响应
    """
    messages = [{"role": "user", "content": prompt}]
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0,  # 控制输出随机性(0为最确定性输出)
    )
    return response.choices[0].message.content  # 提取响应内容

实际的调用代码如下 :

        # 3. 调用大模型生成
        return self.llm_api(prompt)

④ 完整代码

完整代码示例 ( 可独立运行 ) : 下面的代码中 , 替换成自己的 OpenAI 的 api_key 和 base_url 即可 , 注意 Python 要使用 3.9 以上版本 , 否则无法成功安装 chromadb 向量数据库 ;

import chromadb
from openai import OpenAI

# 初始化 OpenAI 客户端 (替换成自己的 API 信息)
client = OpenAI(
    api_key="sk-i3dHqaF6",  # 替换为你的 OpenAI API Key , 这里我把自己的 API-KEY 隐藏了
    base_url="https://api.xiaoai.plus/v1"  # 替换为你的 API 服务端点
)

# 提示词模板(控制模型输出格式)
prompt_template = """
你是一名国际军事问题专家。你的任务是根据现有知识库和用户问题给出最佳答案。

已知信息 : 
__INFO__

用户提问 : 
__QUERY__

"""

def build_prompt(**kwargs):
    """动态构建提示词
    Args:
        prompt_template: 提示词模板字符串
        **kwargs: 需要替换的键值对(自动匹配__KEY__占位符)
    Returns:
        完成替换后的完整提示词
    """
    prompt = prompt_template
    for k, v in kwargs.items():
        # 处理不同类型的数据输入
        if isinstance(v, str):
            val = v
        elif isinstance(v, list) and all(isinstance(elem, str) for elem in v):
            val = '\n'.join(v)  # 列表转换为多行文本
        else:
            val = str(v)  # 其他类型转为字符串
        prompt = prompt.replace(f"__{k.upper()}__", val)
    print("构建提示词:" + prompt)
    return prompt

def get_completion(prompt, model="gpt-3.5-turbo"):
    """封装OpenAI API调用
    Args:
        prompt: 完整的提示词内容
        model: 选择的大模型版本(默认gpt-3.5-turbo)
    Returns:
        模型生成的文本响应
    """
    messages = [{"role": "user", "content": prompt}]
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0,  # 控制输出随机性(0为最确定性输出)
    )
    return response.choices[0].message.content  # 提取响应内容

def get_embeddings(texts, model="text-embedding-ada-002"):
    """将文本转换为向量表示
    Args:
        texts: 需要编码的文本列表
        model: 使用的嵌入模型(默认OpenAI官方推荐模型)
    Returns:
        包含向量数据的列表,每个元素对应输入文本的768维向量
    """
    response = client.embeddings.create(
        input=texts,
        model=model
    )
    # 从响应中提取向量数据
    return [item.embedding for item in response.data]

class RAG_Service:
    def __init__(self, vector_db, llm_api, n_results=2):
        """初始化RAG机器人
        Args:
            vector_db: 已初始化的向量数据库连接对象
            llm_api: 大模型API调用函数
            n_results: 默认检索结果数量
        """
        self.vector_db = vector_db  # 向量数据库实例
        self.llm_api = llm_api  # LLM调用接口
        self.n_results = n_results  # 检索结果数量

    def chat(self, user_query):
        """处理用户查询的完整流程
        Args:
            user_query: 用户输入的自然语言问题
        Returns:
            结合知识库生成的回答
        """

        # 1. 向量检索, 生成查询向量, 将文本转为向量
        query_embedding = get_embeddings([user_query])[0]
        # 执行相似性查询
        search_results = collection.query(
            query_embeddings=[query_embedding],  # 查询向量
            n_results=2  # 返回前2个最相似结果
        )

        # 2. 构建增强提示
        prompt = build_prompt(
            info=search_results['documents'][0],  # 取最相关结果
            query=user_query
        )

        # 3. 调用大模型生成
        return self.llm_api(prompt)

# RAG 使用示例
if __name__ == "__main__":
    # 初始化向量数据库连接
    chroma_client = chromadb.PersistentClient(path="chroma_db")
    # 创建或获取集合 (相当于数据库表)
    collection = chroma_client.get_or_create_collection(
        name="news_articles",  # 集合名称
        metadata={"hnsw:space": "cosine"}  # 使用余弦相似度
    )

    # 创建 RAG 实例
    bot = RAG_Service(
        vector_db=collection,
        llm_api=get_completion
    )

    # 示例查询
    user_query = "你对国际争端新闻的评价"

    # 生成查询向量
    query_embedding = get_embeddings([user_query])[0]

    # RAG 回答
    response = bot.chat(user_query)

    print("RAG 系统回答:", response)

4、RAG 服务 执行结果

代码执行后 , 用户提出的问题是 " 你对国际争端新闻的评价 " ,

从本地知识库中 , 查询 与 用户问题 相似的 知识文档 , 查询结果是 :

加沙停火协议关键时刻生变
乌军大批直升机击落多架俄无人机

将上述查询结果 , 拼接到 提示词中 , 则 完整的提示词为 :

你是一名国际军事问题专家。你的任务是根据现有知识库和用户问题给出最佳答案。

已知信息 : 
加沙停火协议关键时刻生变
乌军大批直升机击落多架俄无人机

用户提问 : 
你对国际争端新闻的评价

将上述提示词 输入到 OpenAI 大模型 中 , 得到的结果为 : " 作为国际军事问题专家,我认为国际争端新闻总是令人担忧的。加沙停火协议的变化和乌克兰军队击落俄罗斯无人机的事件都表明国际局势仍然不稳定。这些事件可能会导致更多的紧张局势和冲突,需要各方保持冷静和谨慎,寻求通过对话和外交手段解决分歧。国际争端的解决需要各方共同努力,避免采取激烈的行动,以避免进一步升级局势。 "

执行结果 :

D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/OpenAI/rag_service.py
构建提示词:
你是一名国际军事问题专家。你的任务是根据现有知识库和用户问题给出最佳答案。

已知信息 : 
加沙停火协议关键时刻生变
乌军大批直升机击落多架俄无人机

用户提问 : 
你对国际争端新闻的评价


RAG 系统回答: 作为国际军事问题专家,我认为国际争端新闻总是令人担忧的。加沙停火协议的变化和乌克兰军队击落俄罗斯无人机的事件都表明国际局势仍然不稳定。这些事件可能会导致更多的紧张局势和冲突,需要各方保持冷静和谨慎,寻求通过对话和外交手段解决分歧。国际争端的解决需要各方共同努力,避免采取激烈的行动,以避免进一步升级局势。

Process finished with exit code 0

在这里插入图片描述


优快云独家福利

最后,感谢每一个认真阅读我文章的人,礼尚往来总是要有的,下面资料虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

三大开源向量数据库大比拼 向量数据库具有一系列广泛的好处,特别是在生成式人工智能方面,更具体地说,是在大语言模型(LLM)方面。这些好处包括先进的索引和精确的相似度搜索,有助于交付强大的先进项目。 阅读详情

相关推荐

【从零开始】5. 向量数据库选型与搭建(番外篇)

本文将结合 docker 版本的 elasticsearch 8.x 给各位展示自封装的 python elasticsearch 工具类。与此同时创建今后演示需要的项目 brain-mix 到 github 库

Kida 的躺平小屋 1809

milvus向量数据库 快速入门

 Milvus向量数据库,目标只有一个:存储、索引和管理海量数据嵌入向量由深度神经网络和其他机器学习(ML)模型生成。作为一个专门为处理输入向量查询而设计的数据库,它能够索引万亿级的向量。与现有的主要按照预定义模式处理结构化数据的关系数据库不同,Milvus是自底向上设计的,用于处理从非结构化数据。随着互联网的发展,非结构化数据变得越来越普遍,包括电子邮件、论文、物联网传感器数据、脸书照片、蛋白质结构等等。为了让计算机理解和处理非结构化数据,使用嵌入技术将这些数据转换成矢量。Milvus存储并索引这些向量。Milvus能够通过计算相似性距离来分析两个向量之间的相关性。如果两个嵌入向量非常相似,这意味着原始数据源也很相似。   通过课程可以学习到milvus向量数据库的安装部署,日常管理,备份恢复等基础操作;从而对向量数据库有一个基本的认识。 

如何搭建一个好的本地向量数据库?

选择合适的向量数据库软件:确保你选择的软件能够支持你的数据规模、查询速度以及其它特定需求。确保你的数据质量高,并且已经过适当的清洗和标准化。如果你需要处理更多的数据或更高的查询负载,你的数据库应该能够轻松地扩展以满足这些需求。配置数据库:根据你的需求配置数据库的参数,如内存大小、索引类型、相似度算法等。安全性:确保你的数据库具有适当的安全措施,如身份验证、访问控制、加密等。备份和恢复:确保你的数据库有可靠的备份和恢复策略。搭建一个好的本地向量数据库,首先你需要明确你的需求和目标。

怀揣梦想,一颗执着于技术的心从未磨灭,内心住着一颗顽强的小强时刻提醒自己层层突破自我,同时也成就他人 2285

保姆级教程:给你的Jetson Orin NX换个‘大房子’——新SSD初始化与JetPack 6.x刷机全流程

本文提供Jetson Orin NX存储升级与JetPack 6.x系统部署的完整指南,涵盖SSD选型、分区策略、刷机流程及性能优化技巧。通过实测数据展示如何提升AI模型加载速度33%,并分享温度管理、I/O调度等实战经验,助力开发者突破边缘计算存储瓶颈。

weixin_42715608的博客 156

【faers数据库-R语言】

摘要:本文详细介绍了FAERS数据库不良反应信号挖掘的完整流程,包括数据解压导入(R代码示例)、数据结构理解、数据清洗(缺失值处理、标准化、合并和编码映射)、信号挖掘准备(药物-反应组合表创建)以及信号强度指标计算(PRR和ROR)。重点阐述了数据清洗的关键步骤,如缺失值处理(colSums(is.na()))、数据标准化(toupper()、as.Date())和表合并(merge()),并提供了完整的R语言实现代码。最后强调结果需结合临床知识解读,建议使用data.table等高效工具处理大数据。整个流

weixin_46587777的博客 1500

一文带你入门向量数据库milvus:含docker安装、milvus安装使用、attu 可视化,完整指南启动 Milvus 进行了向量相似度搜索

一文带你入门向量数据库milvus:含docker安装、milvus安装使用、attu 可视化,完整指南启动 Milvus 进行了向量相似度搜索

丨汀、的博客 4万+

【一】Android MediaPlayer整体架构源码分析 -【初始化和创建】

本系列文章分析的安卓源码版本:【Android 10.0 版本】 一、MediaPlayer的简单调用关键流程 【这只是一个简单使用过程示例】 // 此处变量声明省略 private void play() { // 先获取SurfaceHolder mSurfaceView = findViewById(R.id.surface_view); mSurfaceHolder = mSurfaceView.getHolder(); mSurfac

CloverLHao的博客 4347

手把手系列 | 使用Milvus、Llama 3、Ollama、LangChain本地设置RAG应用

随着 Llama、Mistral、Gemma 等开源大语言模型(LLM)的出现,我们越来越能感受到 LLM 的力量,而本地运行基于 LLM 的 RAG 应用的需求越来越强烈。在将应用推至生产环境前,我们往往都需要先本地运行和测试。因此,本文将介绍如何使用 Ollama、Llama 3 和 Milvus 向量数据库在本地部署一个检索增强生成(RAG)应用。本文将使用到的软件和工具包括:LangCha...

ZILLIZ 1399

基于STM32F407与AD9910/AD9959的高频可调DDS信号源设计与实战

本文详细介绍了基于STM32F407微控制器与AD9910/AD9959高性能DDS芯片的高频可调信号源设计与实现。文章从DDS原理入手,阐述了双芯片方案的优势,并重点分享了高频电路设计中的电源、PCB布局布线等关键硬件设计技巧与避坑指南。同时,提供了通过SPI配置DDS芯片及利用Matlab生成任意波形的软件驱动方法,旨在帮助开发者打造一个覆盖10Hz至4200MHz的实用信号发生器。

weixin_36184718的博客 120

niushop靶场漏洞查找-文件上传漏洞等(超详细)

发现报错,而且这个报错十分熟悉,与我们所学的sqli报错注入特别像。这里查询到后面的url有且仅有一个,目测估计是后台。上传的图片是包含一句话木马的图片。发现获取到了webshell。实战漏洞-niushop。

qq_59020256的博客 1726

spring AI实战:搭建本地RAG环境

RAG 的全称是 Retrieval-Augmented Generation,即 “检索增强生成”,顾名思义,它的核心思想是:在大型语言模型生成答案之前,先从外部知识库中检索相关信息,然后将这些检索到的信息作为上下文,连同用户的问题一起交给大模型,从而生成更准确、更可靠的答案。

weixin_42044020的博客 534

Python与网络爬虫案例:电影评论抓取

接下来,我们就可以通过分析该页面中的HTML代码,来确定需要抓取的内容。在这段代码中,我们首先对每个评论div元素进行for循环,然后通过find方法获取class为'title'、'text'、'rating-other-user-rating'的元素,并将结果分别赋值给title、content和rating变量。在这段代码中,我们首先定义了目标网站的URL和headers信息,然后通过requests.get方法向目标网站发送了一个GET请求,并将返回的响应赋值给了response变量。

吃不胖. 1262

RAG 实践-Ollama+AnythingLLM 搭建本地知识库

RAG,即检索增强生成(Retrieval-Augmented Generation),是一种先进的自然语言处理技术架构,它旨在克服传统大型语言模型(LLMs)在处理开放域问题时的信息容量限制和时效性不足。RAG的核心机制融合了信息检索系统的精确性和语言模型的强大生成能力,为基于自然语言的任务提供了更为灵活和精准的解决方案。

Q2024107的博客 1015

Android性能优化之Android Profiler

在移动应用开发中,打造一个流畅、省电且不卡顿的用户体验是至关重要的。然而,随着应用功能的日益复杂,内存泄漏、CPU暴涨、网络卡顿以及电量消耗过快等问题常常化身为隐形杀手,悄悄吞噬着用户体验。为了帮助开发者精准定位并解决这些性能瓶颈,谷歌在Android Studio中集成了一款强大的一站式性能分析工具Android Profiler。Android Profiler作为Android Studio内置的实时数据可视化工具,支持运行在Android 5.0及更高版本的设备上。

xiangzhihong8的专栏 197

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于Ollama和Spring AI:本地大模型对话与 RAG 功能实现

本文介绍了在本地部署开源AI大模型的完整方案。通过Ollama框架运行Qwen3:0.6b轻量级模型,结合SpringAI实现基础对话功能。同时采用RAG技术,使用nomic-embed-text模型和pgvector数据库构建知识库增强系统。文章详细说明了Docker环境部署、模型安装、向量数据库配置等步骤,并提供了对话接口实现和知识库上传功能的代码示例。该方案既能节省API调用费用,又能保证数据隐私,但需要2核CPU以上的服务器资源支持。对于只需基础对话功能的用户,可以跳过RAG相关配置部分。

RemainderTime 1092

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

5步搭建本地RAG系统:beginner-local-rag-system新手环境配置完全指南

**beginner-local-rag-system** 是一个完全离线的**本地RAG系统**:它用 OpenSearch 做混合检索、Sentence Transformers 生成向量、Ollama 运行本地大模型、Streamlit 提供网页界面,全程无需云服务,个人文档不出本机。本文按 5 个步骤带你完成新手环境配置,零基础也能顺利跑通。 ## 🗺️ 先认识三大核心组件 | 组件

gitblog_01072的博客 78

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

基于Ollama和Spring AI:实现本地大模型对话与 RAG 功能

AI 大模型浪潮来势汹汹,各大厂商的API 调用费用也随之水涨船高。对于我们这些靠代码吃饭的程序员来说,每一次 API 调用都在悄悄掏空钱包。与其持续给资本"充值",不如动手在本地搭建一个属于自己的 AI 大模型——省钱的同时,还能获得更多的掌控权。特别注意: 本文同时涵盖了本地大模型对话和RAG 功能的实现,篇幅较长。如果你只想快速实现本地大模型的基础对话功能,可以直接跳过所有标记为"支持 RAG"的内容和章节,这样能大幅缩短阅读和实践时间。

2401_89221445的博客 1208

大模型入门到进阶!手把手教你使用Milvus、Llama 3、Ollama、LangChain本地设置RAG应用

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

老皮的博客 1302

搭建基于AIGC的私有知识库

目前大量成熟的开源大模型和周边生态工具,基于开源大模型和工具,如检索增强生成(RAG)甚至模型微调等,可以轻松的搭建一个私有的AIGC知识库。本文通过Qwen7B大模型,以及Ollama、AnythingLLM等搭建无需网络就可使用的本地私有知识库。

techsen的博客 1676

【收藏】手把手教你部署本地大模型+搭建知识库,程序员必看实战指南

本文详细介绍了如何使用Ollama部署本地大模型,通过Open WebUI提供交互界面,并利用AnythingLLM构建完全本地化的知识库。文章深入讲解了RAG技术的五大核心流程(文档加载、文本分割、存储、检索、输出),帮助读者理解ChatGPT的信息流转机制,并提供了从安装配置到实际应用的完整指南,让读者能够掌握本地大模型部署与知识库搭建的全过程。

Android23333的博客 1122

手把手部署:本地大模型以及搭建个人知识库(文末福利)大模型入门到精通,收藏这篇就足够了!

手把手部署:本地大模型以及搭建个人知识库(文末福利)大模型入门到精通,收藏这篇就足够了!

2401_82469710的博客 1308

dify+rag+钉钉自动化助手搭建智能客服

摘要:本文解决Dify部署中的两个常见问题。1)端口冲突:当443端口被占用时,修改.env文件中的NGINX_SSL_PORT和EXPOSE_NGINX_SSL_PORT参数,若修改EXPOSE_NGINX_PORT需在访问时添加新端口号。2)权限不足报错:通过编辑.env文件将OPENDAL_FS_ROOT指向有权限的目录(如/home/qadevops/storage),并创建相应目录设置权限,避免直接修改源码。注意提示AI建议可能误导,应结合实际判断。

weixin_44259638的博客 937

使用embedchain快速建立rag知识库,本地大模型

利用开源框架embedchain快速建立RAG知识库

weixin_38786751的博客 225

搭建个人知识库 | 手把手教你本地部署大模型_本地知识库搭建 大模型

今天给大家分享的是手把手教你如何部署本地大模型以及搭建个人知识库 读完本文,你会学习到 如何使用Ollama一键部署本地大模型 通过搭建本地的聊天工具,了解ChatGPT的信息是如何流转的 RAG的概念以及所用到的一些核心技术 如何通过AnythingLLM这款软件搭建完全本地化的数据库

qkh1234567的博客 490

Ollama+Dify本地部署DeepSeek:搭建私有知识库的完整指南

大模型私有化部署正成为企业数据安全与成本控制的重要选择。在本地运行开源模型,配合检索增强生成(RAG)技术,可以让模型在不接触公网的情况下理解内部文档、FAQ等私有资料。Ollama作为轻量级模型运行时,负责DeepSeek等模型的下载与推理;Dify则提供可视化的知识库编排能力,将文档切分、向量检索和Prompt拼接封装成完整流水线。这一组合不仅适用于数据敏感的项目开发与内部系统,也为研究者和硬件爱好者提供了低成本的智能工作站方案。在实际搭建中,硬件选型、模型量化、环境配置以及常见报错排查是关键环节。本文

weixin_32285357的博客 223
上一篇: 大模型应用场景10家企业的最佳实践
下一篇: 如何训练自己的大模型?只需三步你也可以!
大模型工程师老蓝
博客等级 码龄4年 2058粉丝 379原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值