【第3节】“茴香豆“:搭建你的 RAG 智能助理

目录

  • 1 基础知识
    • 1.1.RAG技术的概述
    • 1.2 RAG的基本结构有哪些呢?
    • 1.3 RAG 工作原理:
    • 1.4 向量数据库(Vector-DB ):
    • 1.5 RAG常见优化方法
    • 1.6RAG技术vs微调技术
  • 2、茴香豆介绍
    • 2.1应用场景
    • 2.2 场景难点
    • 2.3 茴香豆的构建:
  • 3 论文快读
  • 4 实践操作
    • 4.1 环境搭建
    • 4.2 模型下载
    • 4.3 使用茴香豆搭建RAG
      • 4.3.1 配置文件修改模型地址
      • 4.3.2 创建知识库
      • 4.3.3 运行茴香豆知识助手

1 基础知识

【资源汇总】文档 | 视频 | 论文:Retrieval-Augmented Generation for Large Language Models: A Survey

1.1.RAG技术的概述

RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺乏透明、可追溯的推理过程等。提供更准确的回答、降低推理成本、实现外部记忆。

LLM会产生误导性的 “幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。

RAG 通过在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,极大地提升了内容的准确性和相关性。RAG 有效地缓解了幻觉问题,提高了知识更新的速度,并增强了内容生成的可追溯性,使得大型语言模型在实际应用中变得更加实用和可信

1.2 RAG的基本结构有哪些呢?

要有一个向量化模块,用来将文档片段向量化。
要有一个文档加载和切分的模块,用来加载文档并切分成文档片段。
要有一个数据库来存放文档片段和对应的向量表示。
要有一个检索模块,用来根据 Query (问题)检索相关的文档片段。
要有一个大模型模块,用来根据检索出来的文档回答用户的问题。

功能:解决LLMs在处理知识密集型任务时可能遇到的挑战。提供更准确的回答、降低成本、实现外部记忆。
解决问题:生成幻觉(hallucination),过时知识,缺乏透明和可追溯的推理过程
应用:问答系统,文本生成,信息检索,图片描述

1.3 RAG 工作原理:

索引:将知识源(如文档或网页)分割成chunk,编码成向量,并存储在向量数据库中。
检索:接收到用户的问题后,将问题也编码成向量,并在向量数据库中找到与之最相关的文档块(top-k chunks ).
生成:将检索到的文档块与原始问题一起作为提示(prompt )输入到LLM中,生Generation成最终的回答。

在这里插入图片描述

1.4 向量数据库(Vector-DB ):

在这里插入图片描述

数据存储:将文本及其他数据通过其他预训练的模型转换为固定长度的向量表示,这些向量能够捕捉文体的语义信息。

相似性检索:根据用户的查询向量,使用向量数据库快速找出最相关的向量的过程通常通过计算余弦相似度或其他相似性度量来完成。检索结果根据相似度得分进行排序最相关的文档将被用于后续的文本生成。

向量表示的优化:包括使用更高级的文本编码技术如句子嵌入或段落嵌入,以及对数据库进行优化以支持大规模向量搜索。

1.5 RAG常见优化方法

嵌入优化,索引优化,查询优化,上下文管理,迭代、递归、自适应检索,LLM微调。
在这里插入图片描述

1.6RAG技术vs微调技术

在这里插入图片描述a.方法论:

RAG技术:RAG技术是一种结合了强化学习、注意力机制和生成模型的综合性方法。它不仅仅是一个单一的模型或技术,而是将多个领域的研究成果相互整合而成的。
微调技术:微调技术通常指的是在预训练模型的基础上,使用少量标注数据对模型进行微小调整,以适应特定任务或领域的需求。

b.数据需求:

RAG技术:RAG技术通常需要大量的未标注数据用于预训练模型,然后可以通过有监督或强化学习的方式进行进一步的调优。
微调技术:微调技术通常需要少量的标注数据用于模型微调,这使得微调技术在数据稀缺的情况下也能取得不错的效果。

c.模型结构:

RAG技术:RAG技术通常由多个组件组成,包括生成器、注意力机制、强化学习部分等,模型结构较为复杂。
微调技术:微调技术通常是在预训练模型的基础上进行微小的参数调整,模型结构相对简单。

d.性能表现:

RAG技术:RAG技术在一些自然语言处理任务中表现出色,如生成式问答、摘要生成等,尤其在处理开放域的文本理解和生成任务中表现优异。
微调技术:微调技术在特定任务上可以取得很好的性能,特别是在有限标注数据的情况下,微调技术往往能够更好地利用数据,实现任务定制化的效果。

2、茴香豆介绍

茴香豆简介:

茴香豆是一个基于LLMs的领域知识助手,由书生浦语团队开发的开源大模型应用。

专为时事通讯(IM)工具中群聊场景优化的工作流,提供及时而又准确的技术支持和自动问答程序。
通过应用检索增强生成(RAG)技术,茴香豆能够理解和高效准确的回应与特定知识领域相关的复杂查询。
茴香豆应用于信息量巨大的用户群组,可以进行讨论与解答相关问题,也可以充当智能客服。传统的NLP解决方案无法准确解析用户意图,且无法给用户提供满意的答案,而茴香豆这种领域知识助手可以准确识别并回答有意义的相关领域的问题,剔除与不回复无用问题或信息。
在这里插入图片描述

2.1应用场景

  • 智能客服:技术支持、领域知识对话
  • IM工具中创建用户群组,讨论、解答相关的问题。
  • 随着用户数量的增加,答复内容高度重复,充斥大量无意义和闲聊,人工回复,成本高,影响工作效率。
  • 茴香豆通过提供自动化的问答支持,帮助维护者减轻负担,同时确保用户问题得到有效解答。

2.2 场景难点

  • 群聊中的信息量巨大,且内容多样,从技术讨论到闲聊应有尽有。
  • 用户问题通常与个人紧密相关,需要准确的实时的专业知识解答。
  • 传统的NLP解决方案无法准确解析用户意图且往往无法提供满意的答案。
  • 需要一个能够在群聊中准确识别与回答相关问题的智能助手,同时避免造成消息过载。

2.3 茴香豆的构建:

茴香豆的知识库构建通常是个人与企业的相关技术知识文档,目前支持Markdown文件、word文档、ppt文件等常用的文件类型,可以设置积极和消极的标签控制助手的回答范围。
茴香豆读取用户问题以及相关文档的平台,在国内一般是微信群和飞书群,国外是discord和slack等技术交流应用软件。
茴香豆目前支持调用本地或远端大模型的API,如书生浦语、通义千问、ChatGPT。Kimi等

茴香豆的工作流:预处理部分会将用户的输入筛选,转换为合适的问询,然后模型对于问询进行相应的分析,对问询给出评分,根据得分判断该问题是否进入问答环节,如果确定要回答,则由大模型根据问询和检索到的知识内容进行回答。以下是茴香豆的工作流程图:
在这里插入图片描述
LLM scroing是一个很重要的角色,通过更改它的阈值可以使茴香豆是一个话痨形象还是一个专业技术大师的形象
在这里插入图片描述

3 论文快读

《Retrieval-Augmented Generation for Large Language Models: A Survey》
使用通义千问做论文快读,概述如下:

摘要翻译: 大型语言模型(LLMs)虽然展示了令人印象深刻的能力,但在处理特定任务时仍面临一些显著局限,例如编造信息、信息过时、推理过程不透明且不可追溯等问题。为了克服这些挑战,检索增强生成(Retrieval-Augmented Generation, RAG)作为一种有前景的方法出现,它将外部数据库的知识融入LLMs中,从而提高了生成内容的准确性和可信度,特别是在需要大量知识的任务中,还允许持续更新知识并整合领域特定信息。这篇综述论文系统地探讨了RAG范式的演变历程,涵盖了朴素RAG、高级RAG和模块化RAG三个主要发展阶段,并深入剖析了RAG框架的三大核心组成部分——检索、生成和增强技术的最新进展。此外,本文还介绍了最新的评估框架和基准,最后详细阐述了当前面临的问题和未来的研究方向。

论文内容概括(Markdown格式)
摘要

本篇论文重点介绍了大型语言模型(LLMs)在应对如幻觉性生成、过时知识引用和缺乏透明可追溯推理等方面的不足,提出了检索增强生成(RAG)这一解决方案。RAG通过集成外部数据库的知识来提高LLMs的回答质量和可靠性,特别适合于知识密集型任务,并支持实时知识更新和特定领域的知识整合。
第一部分:简介

简述了LLMs的成功及其局限性,指出RAG技术如何通过结合外部知识资源改善LLMs在推理阶段回答复杂知识驱动问题的能力,进而促进了RAG研究领域的迅速发展。作者不仅关注RAG在推理阶段的改进,还强调了与LLMs微调技术的融合。
第二部分:Naive RAG

这部分详细描述了Naive RAG的研究范式,它是最早且最基础的RAG方法,随着ChatGPT普及而受到关注。Naive RAG遵循传统的索引-检索-生成流程,分为以下步骤:

索引阶段:从不同格式的原始数据中提取文本内容,将其转换成统一的纯文本格式,然后分割成易于处理的小块,并使用嵌入模型将其编码为向量形式存储在矢量数据库中。
检索阶段:用户提出查询后,系统利用索引阶段相同的编码模型将查询转化为向量表示,计算查询向量与索引语料库中各个片段向量之间的相似度,选取最相关的前K个片段。
生成阶段:将原始问题和检索到的文档片段组合成一个连贯的提示输入给LLM,促使模型生成最终答案。根据任务需求,LLM可能依据内在参数知识或仅依据提供的文档信息来生成答案,尤其在对话交互场景中可以考虑之前对话的历史上下文。

第三部分:RAG进展与核心技术

该部分系统梳理了超过100项RAG研究,总结了三种主要研究范式(包括朴素RAG、高级RAG和模块化RAG)的发展脉络,深入分析了RAG框架核心阶段“检索”、“生成”和“增强”所使用的先进技术。同时,论文还填补了现有研究在RAG评估方法方面的空白,全面回顾了适用于RAG的各种下游任务、数据集、基准和评估方法。
结论与贡献

本文旨在提供一个详细的、结构化的大型语言模型与RAG方法的理解框架,通过对RAG技术演化过程的梳理,评估不同方法在各自背景下的优缺点,并展望未来的趋势和创新点。主要贡献如下:

对RAG方法进行了全面且系统的回顾,追踪其从朴素RAG到高级阶段的发展路径。
完整总结了RAG应用于各种任务时所使用的数据集和方法,并对用于评估RAG的不同指标进行了汇总。

总体而言,这篇论文既是一个对RAG技术发展历程和技术手段的综合梳理,也是一个对未来RAG研究方向具有指导意义的文献综述。

4 实践操作

4.1 环境搭建

选择 cuda 11.7 环境,前置内容可以参考 【第 2 节】轻松玩转书生·浦语大模型趣味 Demo

# s1:前置pytorch环境
conda create -n intern_rag python=3.9 -y
conda install cudatoolkit==11.7
conda activate intern_rag
pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu117

# huixiangdou 安装
# s2: 安装 python 依赖
# pip install -r requirements.txt

pip install protobuf==4.25.3 accelerate==0.28.0 aiohttp==3.9.3 auto-gptq==0.7.1 bcembedding==0.1.3 beautifulsoup4==4.8.2 einops==0.7.0 faiss-gpu==1.7.2 langchain==0.1.14 loguru==0.7.2 lxml_html_clean==0.1.0 openai==1.16.1 openpyxl==3.1.2 pandas==2.2.1 pydantic==2.6.4 pymupdf==1.24.1 python-docx==1.1.0 pytoml==0.1.21 readability-lxml==0.8.1 redis==5.0.3 requests==2.31.0 scikit-learn==1.4.1.post1 sentence_transformers==2.2.2 textract==1.6.5 tiktoken==0.6.0 transformers==4.39.3 transformers_stream_generator==0.0.5 unstructured==0.11.2

## 因为 Intern Studio 不支持对系统文件的永久修改,在 Intern Studio 安装部署的同学不建议安装 Word 依赖,后续的操作和作业不会涉及 Word 解析。
## 想要自己尝试解析 Word 文件的同学,uncomment 掉下面这行,安装解析 .doc .docx 必需的依赖
# apt update && apt -y install python-dev python libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev

# s3:从茴香豆官方仓库下载茴香豆

cd /home/fusionai/project/internllm
# 克隆代码仓库
git clone https://github.com/internlm/huixiangdou && cd huixiangdou
git checkout 63f2eef0e6e4ac113b05ede0316b193948a42cda

4.2 模型下载

去modelscope上搜索了一下,可以搜到对应的模型名称,所以直接下载就好

from modelscope import snapshot_download, AutoModel, AutoTokenizer

model_dir = snapshot_download('maidalun/bce-embedding-base_v1')
model_dir = snapshot_download('maidalun/bce-reranker-base_v1')

下载路径是~/.cache/modelscope/hub/maidalun里面有这2个对应的模型

4.3 使用茴香豆搭建RAG

4.3.1 配置文件修改模型地址

用已下载模型的路径替换 xxxx_downloaddir/huixiangdou/config.ini 文件中的默认模型,需要修改 3 处模型地址。如图所示:
在这里插入图片描述

4.3.2 创建知识库

本示例中,使用 InternLM 的 Huixiangdou 文档作为新增知识数据检索来源,在不重新训练的情况下,打造一个 Huixiangdou 技术问答助手。

首先,下载 Huixiangdou 语料:

cd huixiangdou && mkdir repodir
git clone https://github.com/internlm/huixiangdou --depth=1 repodir/huixiangdou

提取知识库特征,创建向量数据库。数据库向量化的过程应用到了 LangChain 的相关模块,默认嵌入和重排序模型调用的网易 BCE 双语模型,如果没有在 config.ini 文件中指定本地模型路径,茴香豆将自动从 HuggingFace 拉取默认模型。

除了语料知识的向量数据库,茴香豆建立接受和拒答两个向量数据库,用来在检索的过程中更加精确的判断提问的相关性,这两个数据库的来源分别是:

  • 接受问题列表,希望茴香豆助手回答的示例问题
    存储在 huixiangdou/resource/good_questions.json 中
  • 拒绝问题列表,希望茴香豆助手拒答的示例问题
    存储在 huixiangdou/resource/bad_questions.json 中
    其中多为技术无关的主题或闲聊
    如:“nihui 是谁”, “具体在哪些位置进行修改?”, “你是谁?”, “1+1”
    运行下面的命令,增加茴香豆相关的问题到接受问题示例中:(就是或者备份一下huixiangdou/resource/good_questions.json,重新修改一下内容)
cd /root/huixiangdou
mv resource/good_questions.json resource/good_questions_bk.json

echo '[
    "mmpose中怎么调用mmyolo接口",
    "mmpose实现姿态估计后怎么实现行为识别",
    "mmpose执行提取关键点命令不是分为两步吗,一步是目标检测,另一步是关键点提取,我现在目标检测这部分的代码是demo/topdown_demo_with_mmdet.py demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth   现在我想把这个mmdet的checkpoints换位yolo的,那么应该怎么操作",
    "在mmdetection中,如何同时加载两个数据集,两个dataloader",
    "如何将mmdetection2.28.2的retinanet配置文件改为单尺度的呢?",
    "1.MMPose_Tutorial.ipynb、inferencer_demo.py、image_demo.py、bottomup_demo.py、body3d_pose_lifter_demo.py这几个文件和topdown_demo_with_mmdet.py的区别是什么,\n2.我如果要使用mmdet是不是就只能使用topdown_demo_with_mmdet.py文件,",
    "mmpose 测试 map 一直是 0 怎么办?",
    "如何使用mmpose检测人体关键点?",
    "我使用的数据集是labelme标注的,我想知道mmpose的数据集都是什么样式的,全都是单目标的数据集标注,还是里边也有多目标然后进行标注",
    "如何生成openmmpose的c++推理脚本",
    "mmpose",
    "mmpose的目标检测阶段调用的模型,一定要是demo文件夹下的文件吗,有没有其他路径下的文件",
    "mmpose可以实现行为识别吗,如果要实现的话应该怎么做",
    "我在mmyolo的v0.6.0 (15/8/2023)更新日志里看到了他新增了支持基于 MMPose 的 YOLOX-Pose,我现在是不是只需要在mmpose/project/yolox-Pose内做出一些设置就可以,换掉demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py 改用mmyolo来进行目标检测了",
    "mac m1从源码安装的mmpose是x86_64的",
    "想请教一下mmpose有没有提供可以读取外接摄像头,做3d姿态并达到实时的项目呀?",
    "huixiangdou 是什么?",
    "使用科研仪器需要注意什么?",
    "huixiangdou 是什么?",
    "茴香豆 是什么?",
    "茴香豆 能部署到微信吗?",
    "茴香豆 怎么应用到飞书",
    "茴香豆 能部署到微信群吗?",
    "茴香豆 怎么应用到飞书群",
    "huixiangdou 能部署到微信吗?",
    "huixiangdou 怎么应用到飞书",
    "huixiangdou 能部署到微信群吗?",
    "huixiangdou 怎么应用到飞书群",
    "huixiangdou",
    "茴香豆",
    "茴香豆 有哪些应用场景",
    "huixiangdou 有什么用",
    "huixiangdou 的优势有哪些?",
    "茴香豆 已经应用的场景",
    "huixiangdou 已经应用的场景",
    "huixiangdou 怎么安装",
    "茴香豆 怎么安装",
    "茴香豆 最新版本是什么",
    "茴香豆 支持哪些大模型",
    "茴香豆 支持哪些通讯软件",
    "config.ini 文件怎么配置",
    "remote_llm_model 可以填哪些模型?"
]' > /root/huixiangdou/resource/good_questions.json


再创建一个测试用的问询列表,用来测试拒答流程是否起效:

cd /root/huixiangdou

echo '[
"huixiangdou 是什么?",
"你好,介绍下自己"
]' > ./test_queries.json

在确定好语料来源后,运行下面的命令,创建 RAG 检索过程中使用的向量数据库:

# 创建向量数据库存储目录
cd /root/huixiangdou && mkdir workdir 

# 分别向量化知识语料、接受问题和拒绝问题中后保存到 workdir
python3 -m huixiangdou.service.feature_store --sample ./test_queries.json

向量数据库的创建需要等待一小段时间,过程约占用 1.6G 显存。

完成后,Huixiangdou 相关的新增知识就以向量数据库的形式存储在 workdir 文件夹下。

检索过程中,茴香豆会将输入问题与两个列表中的问题在向量空间进行相似性比较,判断该问题是否应该回答,避免群聊过程中的问答泛滥。确定的回答的问题会利用基础模型提取关键词,在知识库中检索 top K 相似的 chunk,综合问题和检索到的 chunk 生成答案。
在这里插入图片描述

4.3.3 运行茴香豆知识助手

我们已经提取了知识库特征,并创建了对应的向量数据库。现在,让我们来测试一下效果:

(1)InternLM2-Chat-7B 的关于 huixiangdou 问题的原始输出
在这里插入图片描述
(2)小助手的回答
命令行运行:

# 填入问题
sed -i '74s/.*/    queries = ["huixiangdou 是什么?", "茴香豆怎么部署到微信群", "今天天气怎么样?"]/' /root/huixiangdou/huixiangdou/main.py

# 运行茴香豆
cd /root/huixiangdou/
python3 -m huixiangdou.main --standalone

RAG 技术的优势就是非参数化的模型调优,这里使用的仍然是基础模型 InternLM2-Chat-7B, 没有任何额外数据的训练。面对同样的问题,我们的茴香豆技术助理能够根据我们提供的数据库生成准确的答案:

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

总结: 可以看到在预先构建知识库的前提下,一些存在的问题,从原来的根本不了解 -> 可以找到预备知识并且回答。(当然关于天气的问题他并没有办法找到具体知识,所以没有显示). 这个跟前面讲的更新实时性、解决模型幻想等有了重大突破,而且增加知识库要比训练容易的多。未来可期

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/574104.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Swift - Playground

文章目录 Swift - Playground1. 新建Playground2. View3. 图片4. ViewController5. Playground - 多Page6. 注释6.1 Playground的注释支持markup语法(与markdown相似)6.1.1 语法 Swift - Playground Playground可以快速预览代码效果,是学习语…

SpringCloud系列(15)--Eureka自我保护

前言:在上一章节中我们说明了一些关于Eureka的服务发现功能,也用这个功能进行接口的实现,在本章节则介绍一些关于Eureka的自我保护 1、Eureka保护模式概述 保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。默认情况…

chrome插件 脚本 使用和推荐

chrome插件使用 在极简插件中可以进行下载并进行安装, 内部有安装教程在极简插件中搜索"油猴",下载一个油猴插件,并安装,可以用于下载很多的用户脚本用户脚本下载地址Greasy Fork,里面有很多实用的用户脚本供下载,并在油猴中进行管理 推荐的插件 Tampermonkey 篡改…

动态规划---斐波那契数列模型

目录 一、斐波那契数列的基本概念 二、动态规划在斐波那契数列中的应用与优势 三、实际案例:使用动态规划解决斐波那契数列问题 四、动态规划问题的做题步骤 五、例题 1、第N个泰波那契数---点击跳转题目 2、三步问题----点击跳转题目 3、最小花费爬楼梯---…

SparkSQL---简介及RDD V.S DataFrame V.S Dataset编程模型详解

一、SparkSQL简介 SparkSQL,就是Spark生态体系中的构建在SparkCore基础之上的一个基于SQL的计算模块。SparkSQL的前身不叫SparkSQL,而叫Shark,最开始的时候底层代码优化,sql的解析、执行引擎等等完全基于Hive,总之Sha…

ElasticSearch:查询操作合集

先看下我的数据: 1、查询所有文档: GET /cartest/_search或者 GET /cartest/_search {"query": {"match_all": {}} }2、匹配查询: match匹配类型查询,会把查询条件进行分词,然后进行查询&…

el-table 三角形提示

<template><div><el-table :data"tableData" style"width: 100%"><el-table-column prop"ddd" label"日期2" width"150" /><el-table-column prop"ddd" label"日期2" width…

Apifox接口调试工具

1、Apifox简介 Apifox 是集 API 文档、API 调试、API Mock、API 自动化测试多项实用功能为一体的 API 管理平台&#xff0c;定位为 Postman Swagger Mock JMeter。旨在通过一套系统、一份数据&#xff0c;解决多个工具之间的数据同步问题。只需在 Apifox 中定义 API 文档&a…

线性模型算法-完结总结篇

简介 该篇文章就是在CSDN上更新的最终版本。 本文章将介绍&#xff1a;机器学习中的线性模型有关内容&#xff0c;我将尽可能做到 详细地介绍线性模型的所有相关内容,模块如下&#xff0c;希望这些将有助于读者了解这种最初步但却强大的算法&#xff1a; 线性回归逻辑回归 S…

Day22 SSH远程管理服务

sshd服务&#xff0c;系统自带&#xff0c;默认开机自启运行 云/物理服务器的安全组和防火墙默认放行该端口 软件包&#xff1a;openssh-server&#xff08;服务端&#xff09;&#xff1b;openssh-client&#xff08;客户端&#xff09;&#xff1b; 格式&#xff1a;ssh I…

抖音小店没有流量怎么办?这两点做对!别人羡慕你赚的盆满钵满

哈喽~我是电商月月 电商行业&#xff0c;说一句实在的话&#xff0c;每一年都有一批人说电商不好做&#xff0c;但每一年都有人从电商行业赚到钱 做抖音小店没流量出不出单的原因其实很简单&#xff0c;就是思维不同&#xff0c;导致的结果差异 我们做抖店并不是赚一单就满足…

三维点云处理-滤波器

前言&#xff1a; 点云中往往会存在很多噪声&#xff0c;也就是常说的离群点&#xff0c;如下左图中的黑色圈位置&#xff0c;可能会对有效数据的提取分析造成影响&#xff0c;因此在数据分析前通常会考虑采用滤波器&#xff08;Filter&#xff09;等手段进行一些预处理的操作。…

东北大学工程训练CNC加工中心(坤图)

东北大学加工中心&#xff08;CNC&#xff09;采用的系统为FANUC系统。 要求学生自主设计图样&#xff0c;编写GCODE文件&#xff0c;操作电脑使机床按设计路径铣出图案。 本人设计的图样为坤坤图 图为用CAD设计绘制的图样。 计算坐标&#xff0c;设计铣刀轨迹&#xff0c;得…

解析社交电商:从私域流量到移动突破口

亲爱的朋友们&#xff0c;我是微三云的周丽&#xff0c;一名专注于私域电商模式创新的探索者。 随着互联网的迅速发展和科技的不断进步&#xff0c;社交电商作为新型商业模式不断崛起。在这个时代&#xff0c;私域流量、社群电商、社区电商以及移动电商等概念层出不穷&#xf…

成功密码期刊投稿简介

《成功密码》综合版是由国家新闻出版总署批准&#xff0c;江西省教育厅主管的正规期刊&#xff0c;"以培养担当民族复兴大任的时代新人为着眼点&#xff0c;强化教育引导、实践养成、制度保障"&#xff0c;倡导教育研究的学术水准&#xff0c;注重理论与实践的有机结…

Linux消息队列信号量(了解)

消息队列 要实现进程间通信我们必须得让不同的进程看到同一份资源&#xff0c; 根据这个资源的不同&#xff08;文件缓冲区&#xff0c; 内存块&#xff0c; 队列&#xff09; 我们将通信方式分为管道&#xff0c;共享内存&#xff0c;以及我们接下来要讲的消息队列。 消息队…

【学习笔记二十七】EWM存储类型控制

一、EWM存储类型控制概述 Storage control 是用来决定仓库产品移动时所需要的流程步骤。它的目的是用来处理基于仓库物理布局及仓库流程所要求的复杂的上架和下架流程步骤。 仓库里常见的操作步骤有:Picking、Packing、Staging、Loading、Putaway、Unloading、Counting、Quali…

【C语言】联合体详解

目录 1.联合体的声明 2.联合体的特点 3.相同成员的结构体和联合体对比 4.联合体大小的计算 1.联合体的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。 联合体的特点是所…

操作系统:进程间通信 | System V IPC

目录 前言&#xff1a; 1.共享内存 1.1.什么是共享内存 1.2.共享内存使用接口 shmget函数 shmat函数 shmdt函数 shmctl函数 2.共享内存实现通信 2.1.代码实现 comm.hpp server,cpp client.cpp 2.2.共享内存的缺点 2.3.实现通信的同步化 2.4共享内存通信的优势 3.…

Vitis HLS 学习笔记--HLS入门示例集合-目录

目录 1. 示例集合概述 2. Interface 接口 2.1 Aggregation_Disaggregation 聚合与解聚 2.1.1 aggregation_of_m_axi_ports 2.1.2 aggregation_of_nested_structs 2.1.3 aggregation_of_struct 2.1.4 auto_disaggregation_of_struct 2.1.5 disaggregation_of_axis_port …