【政务AI转型必读】:LangChain+Milvus高效构建知识问答系统的5大关键步骤

LangChain Q&A实战:从PDF文档构建可溯源的企业知识问答系统 Q&A系统是大语言模型落地知识服务的核心范式,其本质是将用户自然语言问题映射到结构化证据并生成可验证答案的技术闭环。其原理依赖检索增强生成(RAG)架构,通过文档解析、语义切分、向量嵌入与精准检索实现‘问题→证据→答案’的确定性链路。该技术显著提升答案准确性与审计合规性,避免幻觉,支撑金融、制造、医疗等强监管行业的智能客服、SOP助手与设备手册检索等关键场景。本文以LangChain RetrievalQA为载体,聚焦PDF文档加载、chunk策略、embedding选型、Chroma向量库配置及promp 阅读详情

第一章:政务AI转型的挑战与LangChain+Milvus应对策略

在推进数字政府建设的过程中,政务AI转型面临数据孤岛严重、非结构化信息处理困难、响应实时性要求高等多重挑战。传统系统难以高效整合跨部门文档、政策法规与历史工单数据,导致智能问答、政策推荐等应用场景效果受限。

语义理解与向量检索的融合方案

LangChain 提供了灵活的框架来编排大语言模型(LLM)与外部数据源的交互流程,结合 Milvus 向量数据库实现高维语义索引,可在海量政务文本中快速匹配最相关片段。通过将政策文件切片并编码为嵌入向量存储至 Milvus,系统可在用户提问时实现毫秒级精准召回。
  • 数据预处理:使用 LangChain 的文档加载器读取 PDF、Word 等格式的政务文件
  • 文本分块:按段落或章节进行语义分割,避免上下文断裂
  • 向量化存储:调用嵌入模型(如 BGE)生成向量,并写入 Milvus 集合
# 将文本存入 Milvus 示例代码
from langchain_community.vectorstores import Milvus
from langchain_community.embeddings import HuggingFaceEmbeddings

embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh-v1.5")
vector_db = Milvus.from_documents(
    documents, 
    embeddings, 
    connection_args={"host": "127.0.0.1", "port": "19530"}
)
# 文档被自动向量化并插入 Milvus

提升系统响应准确性的架构设计

通过构建“LangChain 编排 + Milvus 检索 + LLM 生成”的三级流水线,政务机器人可先从 Milvus 中检索相关政策依据,再交由本地部署的大模型生成合规答复,显著降低幻觉风险。
组件功能优势
LangChain流程调度与提示工程管理灵活集成多数据源与模型
Milvus向量相似度检索支持亿级向量高效查询
本地LLM基于检索结果生成回答保障数据不出域,符合安全要求

第二章:构建政务知识库的数据准备与向量化处理

2.1 政务文档数据采集与合规性清洗实践

政务文档的数据采集需兼顾效率与合法性,通常通过安全授权接口或离线交换通道获取原始文件。为保障数据质量,须在预处理阶段实施结构化解析与合规性校验。
数据清洗流程
  • 去除敏感信息:依据《个人信息保护法》过滤身份证号、联系方式等PII字段
  • 格式标准化:统一日期、编码、计量单位等表达形式
  • 元数据补全:补充来源机构、采集时间、文档密级等关键属性
代码示例:敏感词过滤逻辑
// 使用正则匹配常见敏感信息
var sensitivePatterns = map[string]*regexp.Regexp{
    "IDCard":   regexp.MustCompile(`\d{17}[\dXx]`),
    "Phone":    regexp.MustCompile(`1[3-9]\d{9}`),
    "Address":  regexp.MustCompile(`省|市|区|县.*?街道`),
}
func sanitizeText(text string) string {
    for _, pattern := range sensitivePatterns {
        text = pattern.ReplaceAllString(text, "[REDACTED]")
    }
    return text
}
上述Go语言函数通过预定义正则规则批量脱敏,适用于日志、公文等非结构化文本的初步清洗,确保输出数据符合《数据安全法》要求。

2.2 基于LangChain的文本分块与元数据增强方法

在构建高效的知识检索系统时,合理的文本分块策略是关键。LangChain 提供了灵活的文本分割器(Text Splitter),支持按字符、标记或递归方式切分文档,确保语义完整性。
常用分块方法
  • CharacterTextSplitter:基于指定字符(如换行符)进行分割;
  • RecursiveCharacterTextSplitter:优先尝试较小分隔符(如句号、逗号)递归切分,推荐使用。
from langchain.text_splitter import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,           # 每块最大长度
    chunk_overlap=50,         # 块间重叠大小,保留上下文
    separators=["\n\n", "\n", "。", " ", ""]
)
docs = text_splitter.split_text(raw_text)
上述代码中,chunk_size 控制信息密度,chunk_overlap 避免上下文断裂,separators 定义切分优先级,提升语义连贯性。
元数据增强策略
为每个文本块附加来源页码、章节标题等元数据,有助于后续溯源与过滤:
字段名用途
source记录原始文件路径
page标注页码或段落索引
section标记所属章节

2.3 使用Sentence Transformers实现高效语义嵌入

Sentence Transformers 是基于 Transformer 架构的 Sentence-Level 嵌入模型,专为生成高质量语义向量而设计。其核心优势在于利用孪生网络结构和对比学习目标,显著提升句子相似度计算的准确性。
安装与基础使用
首先通过 pip 安装库:
pip install sentence-transformers
该命令安装包含预训练模型和推理接口的核心包,支持多种 Hugging Face 模型架构。
生成语义向量
使用预训练模型对文本编码:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')
sentences = ["机器学习", "深度学习模型"]
embeddings = model.encode(sentences)
encode() 方法将文本转换为 384 维固定长度向量,适用于聚类、检索等下游任务。
常用模型对比
模型名称维度适用场景
all-MiniLM-L6-v2384通用语义匹配
paraphrase-multilingual-MiniLM-L12-v2384多语言任务

2.4 Milvus向量数据库的集合设计与索引优化

在Milvus中,集合(Collection)是数据组织的核心单元,合理的集合设计直接影响查询性能和存储效率。为提升检索速度,需针对向量字段建立高效索引。
索引类型选择
Milvus支持多种索引类型,如IVF_FLAT、IVF_PQ和HNSW。其中IVF系列适用于大规模数据集,通过聚类划分倒排列表,减少搜索范围。

from pymilvus import CollectionSchema, FieldSchema, DataType

# 定义向量字段与索引参数
fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
    FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
schema = CollectionSchema(fields)
index_params = {
    "index_type": "IVF_FLAT",
    "metric_type": "L2",
    "params": {"nlist": 100}
}
上述代码配置了基于L2距离的IVF_FLAT索引,nlist=100表示将数据划分为100个簇,构建倒排结构。查询时仅搜索最近的几个簇,显著降低计算量。
参数调优建议
  • nlist应根据数据总量调整,通常设为数据量的1‰至5‰;
  • nprobe控制查询时扫描的簇数,增大可提高召回率但影响延迟。

2.5 多源异构政务数据的统一向量化流水线构建

在政务数据融合场景中,面对结构化数据库、非结构化文档与半结构化日志等多源异构数据,需构建统一向量化处理流水线。
数据预处理与标准化
通过ETL工具清洗原始数据,对文本字段进行分词、去噪和归一化处理。例如,使用Python进行中文分词与编码转换:

import jieba
from sklearn.feature_extraction.text import TfidfVectorizer

# 示例:政务工单文本向量化
texts = ["户籍办理流程咨询", "社保缴费异常反馈"]
tokens = [' '.join(jieba.cut(t)) for t in texts]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(tokens)
该代码段实现文本分词与TF-IDF向量化,jieba提升中文语义切分精度,TfidfVectorizer将文本映射为数值向量,便于后续模型处理。
向量空间统一建模
采用Sentence-BERT模型对不同来源文本进行嵌入编码,确保向量语义一致性。结合元数据标签(如部门、业务类型)构建联合表示空间,实现跨系统数据语义对齐与高效检索。

第三章:基于LangChain的知识检索链设计与优化

3.1 构建可复用的Retrieval Chain政务问答基础架构

在政务问答系统中,构建可复用的Retrieval Chain是实现高效信息检索的核心。通过模块化设计,将文档加载、分块、向量化与检索逻辑解耦,提升系统的维护性与扩展性。
核心组件结构
  • Document Loader:统一接入各类政策文件、FAQ与数据库导出数据
  • Text Splitter:基于语义边界进行文本切分,避免关键信息割裂
  • Embedding Model:采用国产化支持的向量模型,保障数据合规性
  • Vector Store:集成Milvus或Elasticsearch,支持高并发检索
链式调用示例

from langchain.chains import RetrievalQA
from langchain.embeddings import HuggingFaceEmbeddings

# 初始化嵌入模型
embeddings = HuggingFaceEmbeddings(model_name="uer/sbert-base-chinese-nli")

# 构建检索链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vector_store.as_retriever(search_kwargs={"k": 3}),
    return_source_documents=True
)
上述代码中,search_kwargs={"k": 3} 控制返回最相关的3个文档片段,chain_type="stuff" 表示将全部上下文注入提示词,适用于政策条文精确匹配场景。

3.2 提升召回精度:Hybrid Search与重排序策略集成

在现代检索系统中,单一的向量搜索或关键词匹配已难以满足复杂语义场景下的精度需求。引入混合搜索(Hybrid Search)机制,结合稠密向量与稀疏词项匹配优势,可显著提升初检阶段的召回质量。
Hybrid Search 实现逻辑

# 示例:Elasticsearch 中融合 BM25 与向量检索
query = {
  "query": {
    "hybrid": [
      {"match": {"title": "机器学习模型"}},
      {"script_score": {
        "query": {"match_all": {}},
        "script": {
          "source": "cosineSimilarity(params.query_vector, 'embedding') + 1",
          "params": {"query_vector": [0.1, 0.5, ...]}
        }
      }}
    ]
  }
}
该查询同时执行关键词匹配与向量相似度计算,最终得分融合两者结果。BM25 捕捉字面相关性,向量模型捕捉语义相似性,互补增强覆盖能力。
重排序优化语义排序
初检结果经重排序(Reranking)模块精调,使用更复杂的交叉编码器(Cross-Encoder)对候选文档重新打分,提升排序准确性。

3.3 上下文感知的查询扩展与意图识别机制实现

上下文建模与语义增强
为提升用户查询的准确性,系统引入基于历史交互和会话上下文的语义扩展机制。通过构建动态上下文向量,模型能够捕捉用户连续提问中的隐含意图。

# 示例:基于BERT的上下文编码
def encode_context(query, history):
    inputs = tokenizer(
        history + " [SEP] " + query,
        return_tensors="pt",
        truncation=True,
        max_length=512
    )
    outputs = bert_model(**inputs)
    return outputs.last_hidden_state.mean(dim=1)  # 句向量表示
该函数将历史对话与当前查询拼接,利用预训练模型生成融合上下文的语义向量,[SEP]标记用于区分不同语句。
意图分类与查询重写
采用多层感知机对上下文向量进行意图判别,并触发相应的查询扩展策略。例如,识别出“对比”意图时,自动补充相关实体属性。
意图类型触发词扩展动作
比较哪个更好、相比如何添加性能指标字段
追溯最早、第一次增加时间升序排序

第四章:安全可控的政务AI问答系统集成部署

4.1 LangChain与Milvus服务的高可用部署方案

在构建基于LangChain与Milvus的生成式AI应用时,高可用部署是保障系统稳定性的关键。通过容器化编排与分布式架构设计,可实现服务的弹性扩展与故障自愈。
服务架构设计
采用Kubernetes进行集群管理,将LangChain应用与Milvus向量数据库分别部署为独立服务。Milvus支持多副本模式,结合etcd与MinIO实现元数据与存储分离,提升容灾能力。
部署配置示例
apiVersion: apps/v1
kind: Deployment
metadata:
  name: milvus-standalone
spec:
  replicas: 3
  selector:
    matchLabels:
      app: milvus
  template:
    metadata:
      labels:
        app: milvus
    spec:
      containers:
      - name: milvus
        image: milvusdb/milvus:v2.3.0
        ports:
        - containerPort: 19530
        env:
        - name: ETCD_ENDPOINTS
          value: "etcd-cluster:2379"
该配置定义了Milvus的三副本部署,通过ETCD实现集群协调,确保节点故障时自动切换,维持向量检索服务连续性。

4.2 敏感信息过滤与回答可解释性保障机制

在构建可信的AI问答系统时,敏感信息过滤是防止数据泄露的关键环节。通过正则匹配与关键词识别结合的方式,可有效拦截身份证号、手机号等隐私内容。
敏感词规则配置示例
{
  "patterns": [
    {
      "type": "phone",
      "regex": "\\b1[3-9]\\d{9}\\b",
      "description": "中国大陆手机号格式"
    },
    {
      "type": "id_card",
      "regex": "[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dX]",
      "description": "中国居民身份证号码"
    }
  ]
}
上述规则利用正则表达式精准识别结构化敏感数据,配合NLP模型提升上下文理解能力,避免误判。
可解释性增强策略
  • 记录每条响应的推理路径与知识来源
  • 输出置信度评分及依据片段
  • 支持用户追溯答案生成逻辑链
该机制提升了系统透明度,为关键场景下的决策提供审计支持。

4.3 权限控制、审计日志与系统监控体系建设

基于角色的访问控制(RBAC)设计
在微服务架构中,统一的权限控制是安全体系的核心。通过引入RBAC模型,将用户与权限解耦,借助角色进行中间映射,提升管理灵活性。
  • 用户(User):系统操作者
  • 角色(Role):权限集合的逻辑分组
  • 权限(Permission):对资源的操作许可,如 read、write
审计日志记录关键操作
所有敏感操作需记录审计日志,包含操作人、时间、IP、操作类型等字段,便于事后追溯。
{
  "timestamp": "2025-04-05T10:00:00Z",
  "user_id": "u1001",
  "action": "DELETE_USER",
  "resource": "user:u1002",
  "ip": "192.168.1.100",
  "result": "success"
}
该日志结构清晰,便于接入ELK进行集中分析,确保操作可审计。
系统监控指标采集
使用Prometheus采集服务健康状态,关键指标包括CPU、内存、请求延迟和错误率。
指标名称含义告警阈值
http_request_duration_secondsHTTP请求延迟>1s
service_cpu_usage_percentCPU使用率>80%

4.4 微服务架构下的API网关与前端集成实践

在微服务架构中,API网关作为统一入口,承担请求路由、认证、限流等职责。前端通过单一入口与后端服务通信,降低耦合。
典型请求流程
用户请求先抵达API网关,经身份验证后路由至对应微服务。网关聚合响应,返回标准化数据格式。
配置示例(Nginx + JWT)

location /api/ {
    proxy_pass http://backend_service;
    auth_request /validate_jwt;
}
该配置将所有/api/请求转发至后端服务,并调用/validate_jwt进行JWT令牌校验,确保安全访问。
前端集成策略
  • 使用Axios封装通用请求头,自动携带Token
  • 通过环境变量管理不同部署阶段的网关地址
  • 错误码集中处理,提升用户体验

第五章:未来展望——AI驱动的智慧政务服务演进路径

智能审批流程自动化
多地政务系统已引入基于机器学习的审批辅助引擎。例如,深圳市推出的“秒批”服务通过规则引擎与自然语言处理技术自动解析申请材料,并执行预设逻辑判断。以下为简化版审批决策代码示例:

# 模拟AI审批决策函数
def ai_approve(application):
    if application['credit_score'] > 700 and \
       'missing_docs' not in application:
        return {"status": "approved", "reason": "符合自动通过条件"}
    else:
        return {"status": "pending", "reason": "需人工复核"}
多模态政务客服升级
新一代政务问答系统融合语音识别、语义理解和图像识别能力。广州市12345热线集成视觉AI模块,市民上传房产证照片后,系统可自动提取信息并关联业务数据库,减少手动输入。
  • 支持身份证、营业执照等10类证件OCR识别
  • 日均处理非结构化咨询请求超8万条
  • 响应时间从平均6分钟缩短至45秒
数据协同治理架构
为打破部门间数据孤岛,浙江省构建省级政务AI中台,统一接入公安、税务、社保等23个系统。该平台采用联邦学习机制,在不共享原始数据的前提下实现跨域模型训练。
指标2022年2023年
跨部门协同比例37%68%
平均办件时长(小时)14.26.5
政务大模型落地实战:从RAG架构到本地化部署的避坑指南 大语言模型凭借其强大的自然语言理解和生成能力,正成为推动产业智能化升级的关键技术。其核心原理在于基于海量数据预训练,通过微调适配特定领域任务。在政务这类对安全、合规有严苛要求的场景中,大模型的价值尤为凸显,它能将分散的政策知识整合为统一的智能入口,实现从“人找政策”到“政策找人”的服务模式变革。技术落地的关键在于采用RAG(检索增强生成)架构与智能体(Agent)工作流,前者通过结合向量数据库与领域知识库,有效缓解模型“幻觉”,确保回答的准确性与可追溯性;后者则通过大模型调度专用工具,实现复杂的跨部门业务流 阅读详情

相关推荐

Agent技术驱动智慧政务:从“人找事”到“事找人”的实践路径

在数字化转型浪潮中,智能体(Agent)技术正成为推动服务模式变革的关键引擎。其核心原理在于通过感知、规划、决策与执行的闭环能力,将传统被动响应升级为主动预测与串联服务。这一技术价值在于能够深度融合业务场景,实现跨系统、跨部门的无感化流程协同。在政务服务领域,Agent通过构建专业工具集与知识库,能够精准理解用户意图,并基于检索增强生成(RAG)技术提供实时、准确的决策支持。其典型应用场景包括智能咨询问答、“一件事”集成办理与政策精准推送,最终推动政务服务从“多站跑”向“一键办”演进,实现服务理念与用户体验

anjichan4261的博客 504

政务大模型落地难题全破解(LangChain+Milvus集成指南)

auto-generated

LearnFlow的博客 757

AI Agent开发实战:从国产大模型架构到智能体核心模块构建

在人工智能技术快速发展的今天,大语言模型已成为构建智能系统的核心推理引擎。其基于Transformer架构,通过自注意力机制、位置编码等技术,实现了对自然语言的深度理解与生成能力。这一技术价值在于,它使得机器能够处理复杂的多步骤任务,从简单的问答升级为具备规划、执行与决策能力的智能体。在实际应用场景中,AI Agent通过规划模块、工具调用模块和记忆模块的协同,能够自主拆解用户目标、调用外部工具并利用历史信息,实现从“认知”到“行动”的闭环。例如,在数据分析、电商运营、自动化办公等场景,智能体可以安全、可靠

weixin_34082789的博客 449

开源模型应用落地-LangChain实用小技巧-检索器-元数据过滤(二十)

构建自查询检索器时,元数据过滤通过引入细致的过滤条件,显著提升信息检索的准确性和效率。

以微薄之力,予他人些许温暖. 9540

企业AI大模型应用构建全景图:从业务对齐到工程落地的五步实践

人工智能大模型正成为企业数字化转型的核心驱动力,其核心原理在于通过海量数据预训练,获得强大的语言理解和生成能力。这项技术的价值在于能够将非结构化数据转化为可交互的智能服务,从而在智能客服、知识管理、内容创作等应用场景中实现降本增效。然而,从技术概念到稳定可用的企业级产品,需要一套严谨的工程化方法。本文聚焦于当前企业应用的主流范式——检索增强生成技术,并深入探讨如何通过精心设计的数据准备与知识库构建流程,为模型提供高质量的“燃料”,这是决定应用效果上限的关键。同时,文章结合工程实践,剖析了在模型选型、成本控制

weixin_30855099的博客 463

AI 中时代下核心概念和行业态势

AI。

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 1171

Milvus:过滤功能详解(二十一)

文章摘要:本文详细介绍了Milvus数据库的过滤功能,包括基本概念、操作符类型和实际应用场景。过滤功能通过"字段-操作符-值"结构实现精准数据筛选,支持比较、范围、算术、逻辑等多种操作符,并针对特定数据类型(JSON、ARRAY、VARCHAR、GEOMETRY)提供专用操作符。文章还介绍了过滤器模板、随机抽样等高级特性,以及性能优化建议。过滤功能可应用于查询、搜索、删除等操作,能够有效提升数据检索效率,降低资源消耗,适用于推荐系统、地理信息检索等多种业务场景。

若不知道要驶向哪个码头,那么任何风都不会是顺风。 1303

企业AI大模型私有化部署实战:从数据安全到RAG应用全解析

在人工智能领域,大模型已成为推动技术革新的核心引擎。其工作原理基于海量数据的深度学习,通过Transformer等架构实现强大的理解和生成能力。这项技术的核心价值在于将通用智能转化为解决特定业务问题的生产力。尤其在金融、医疗、政务等对数据安全与合规性要求极高的行业,如何安全、可控地利用大模型技术成为关键挑战。私有化部署应运而生,它通过将模型、数据和计算全流程置于企业内部环境中,从根本上保障数据不出域,满足严格的合规要求。在此基础上,结合检索增强生成(RAG)技术,可以将企业内部知识库与大模型能力深度融合,构

weixin_30566063的博客 744

基于本地知识库的政务问答智能体

首先判断用户的提问是否合规,对于合规的用户输入的问题进行分类,如果是非政务咨询类的问题,直接委婉回复咨询的问题不属于咨询范围。在支持数据的迁移适配的基础上,可以做多节点的部署、节点到节点的迁移,通过这些操作,可以有效的解决真实场景的高并发问题、升级问题、用户租户问题,真正将应用向产品化迈进。政务咨询系统通过精准解答、流程提效、数据驱动、安全可控四大核心能力,实现了从 “被动咨询” 到 “主动服务” 的升级,不仅降低了政务服务成本,更提升了公众满意度和政府公信力,是数字政府建设的重要基础设施。

年轻即出发, 3257

AI Agent工程师实战路线图:从Function Calling到生产级RAG与多Agent编排

AI Agent是构建智能业务系统的核心范式,其本质是LLM驱动的可编程决策流,依赖Function Calling实现工具协同、RAG增强知识可信度、多Agent架构分解复杂任务,并通过状态管理与可观测性保障生产稳定性。当前主流技术栈中,LangChain提供函数调用基础能力,LlamaIndex+Chroma降低RAG冷启动门槛,CrewAI封装协作协议,LangGraph解决状态持久化与人工干预,Spring AI则填补Java生态的事务一致性空白。本文聚焦真实工程落地中的Schema校验、向量检索优

weixin_33957648的博客 428

基于GIS的生态安全网络格局构建(附练习数据下载)

基于GIS的生态安全网络格局构建(附练习数据下载)

qq_43173805的博客 3125

Qwen3-4B Instruct-2507实战落地:政务热线知识库问答系统构建案例

本文介绍了如何在星图GPU平台上自动化部署⚡Qwen3-4B Instruct-2507镜像,构建政务热线知识库问答系统。该镜像专为中文政策理解与精准文本生成优化,可实时响应市民咨询(如入学材料、医保参保等高频问题),显著提升12345热线解答效率与口径一致性。

weixin_35509395的博客 369

2022-04-06 RK3566 上调试百兆以太网卡YT8512C 调试记录

一、原理图 二、dts &gmac1_clkin{ clock-frequency = <50000000>; status = "okay"; }; &gmac1 { phy-mode = "rmii"; clock_in_out = "input"; snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>; snps,reset-active-low; sn...

海月汐辰 1万+

【LangChain+Milvus政务AI落地实战】:揭秘智能政务服务系统构建全流程

auto-generated

InitFlow的博客 967

从零配置到稳定运行:A4988步进电机驱动模块的实战避坑指南

本文详细介绍了A4988步进电机驱动模块的配置与优化技巧,涵盖硬件连接、电流调节、微步设置及散热优化等关键环节。通过实战经验分享,帮助用户避开常见陷阱,实现步进电机的稳定运行,特别适合单片机开发者和3D打印机爱好者参考。

weixin_28452161的博客 169

电子货架标签应用浅析(ESL)

​【 关注与分享,是对原创最大的鼓励 】 年底了,会断续介绍几个主要的BLE的应用及市场情况,这篇文章介绍的是电子货架标签, ESL (Electronic Shelf Label)。 文章将从应用简介,市场规模,产业链,头部玩家及系统框架进行介绍。只对技术感兴趣的可以直接拉到底。 ESL简介 ESL,是一种显示产品,其主要是替代传统的纸质标签,应用于大型商超,...

iotthings的博客 4691

收藏级指南|Java开发者必看:5个月搞定大模型转型,抢占AI高薪赛道

不少成功转型的开发者,已从普通后端工程师升级为AI应用架构师,薪资与职业价值实现双重提升。

2301_81940605的博客 301

【移远EG800K-CN】从AT指令到MQTT实战:4G模块云端通信全解析

本文详细解析移远EG800K-CN 4G模块的AT指令应用与MQTT云端通信实战。从硬件连接到网络配置,再到MQTT协议的数据上报与命令接收,提供了完整的物联网通信解决方案,帮助开发者快速实现设备与云端的稳定数据交互。

o1p2q3r的博客 560

构建本地化AI安全分析平台:架构设计与实战指南

大语言模型(LLM)与检索增强生成(RAG)技术正深刻改变数据处理与知识应用的方式。其核心原理在于通过深度学习理解并生成自然语言,并结合外部知识库检索,为专业领域提供精准、可追溯的智能问答与分析能力。在数据隐私与合规要求极高的企业安全领域,这些技术的价值尤为凸显。通过本地化部署,企业可以在确保敏感数据不出域的前提下,构建专属的领域智能体(Agent)。应用场景广泛覆盖安全运营中心(SOC)的日常核心工作,例如利用智能体进行自动化告警研判与降噪,以及通过RAG构建可查询的内部威胁情报与知识库。本文以“Hacx

weixin_34130389的博客 1071

若依(RuoYi)框架从零到部署:Spring Boot+Vue权限系统完整配置指南

在Java企业级应用开发中,Spring Boot作为构建微服务和单体应用的基石,极大地简化了项目初始化和配置流程。其核心原理在于通过自动配置和起步依赖,快速整合数据访问、安全认证、缓存等常用模块,显著提升开发效率。这一技术价值在需要快速构建后台管理系统的场景中尤为突出,例如权限管理、用户角色分配等通用需求。若依(RuoYi)框架正是基于Spring Boot和Vue.js的优秀实践,它封装了RBAC权限模型、代码生成器等高频功能,提供了开箱即用的解决方案。本文聚焦于若依框架的【环境配置】与【项目部署】,通

weixin_33984032的博客 457

Qt思岚激光雷达

Qt关于思岚激光雷达研究示例,本示例采用qt界面开发,可以串口也可以tcp进行设备连接。接收数据进行相关的数据进行绘图, 这种雷达可以用于大屏触摸场景,会场互动触摸场景开发。 #ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QTimer> #include <QWidget> #include "lidarmgr.h" namespace Ui { class MainWidget; } class MainWidget.

cqltbe131421的博客 1598

全栈AI应用架构实战:从RAG、智能体到向量数据库的融合设计

在数字化转型浪潮中,人工智能(AI)与软件工程的结合正催生新一代应用架构。其核心原理在于,通过大语言模型(LLM)等基础AI能力,赋予系统理解、推理和生成自然语言等认知功能。这一融合的技术价值在于,能够将非结构化数据转化为可操作的智能,从而驱动业务流程自动化与决策智能化。典型的应用场景包括智能问答、文档分析与自动报告生成等。本文聚焦于实现此类智能系统的关键技术路径,深入探讨了检索增强生成(RAG)技术如何结合向量数据库构建专属知识库,以及如何利用智能体(Agent)框架进行复杂任务编排,为构建可靠、高效的生

angou6476的博客 319

PSM倾向性评分分析介绍、spss进行倾向性评分分析示例

PSM倾向性评分分析介绍、spss进行倾向性评分分析示例

statistics+insight+vista+power 1482

小白必看!大模型RAG开发全流程保姆级解析,建议收藏

本文阐述了RAG的核心动机,指出LLM因缺乏私有数据而存在局限。随后详细介绍了RAG的三大核心阶段:索引、检索和生成,深入讲解了文档处理、向量化存储及逻辑链构建的具体实现,并提及利用LangSmith进行系统可观测性追踪,旨在帮助开发者构建有据可查的大模型应用。

2401_85154887的博客 451

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

小白程序员必看:收藏这份RAG开发指南,轻松入门大模型!

本文介绍了RAG(检索增强生成)技术的核心动机,即解决LLM预训练数据局限性问题,通过将外部信息提供给模型来增强其能力。文章详细阐述了RAG的三个基本阶段:索引、检索和生成,并解释了如何通过文档处理、向量化存储和逻辑链构建来实现这些阶段。此外,还提到了使用LangSmith进行追踪和可观测性分析的重要性,帮助开发者调试和优化RAG流程。

datian1234的博客 455

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

生成式AI重塑产品:从理念到实战的智能系统构建指南

生成式AI作为人工智能领域的前沿技术,其核心原理在于通过大规模预训练模型理解和生成自然语言、代码、图像等内容,实现了从传统“检索与匹配”到“创造与理解”的能力跃迁。这一技术价值在于极大地扩展了产品的可能性空间,使其能够处理非结构化、模糊的用户意图,并生成符合语境的全新内容。在工程实践中,这驱动了产品范式的转变,催生了AI原生的交互体验。其关键应用场景广泛覆盖了智能推荐、内容创作、个性化对话和复杂工作流自动化等领域。本文聚焦于如何利用生成式AI进行产品“重塑”,深入探讨了结合检索增强生成(RAG)和智能体(A

weixin_34216107的博客 411

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 游戏服务器响应延迟飙升?教你用aiohttp+Redis实现百万级并发优化方案
下一篇: 为什么顶级团队都在用PyO3?深入剖析Rust集成Python的五大优势
LiteCode
博客等级 码龄1年 146粉丝 2019原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值