基于扣子实现智能客服系统的架构设计与性能优化实战
背景痛点传统客服系统的技术瓶颈在深入探讨基于扣子的智能客服系统之前我们有必要先厘清传统方案究竟卡在了哪里。我参与过几个从零到一的客服中台项目也接手过一些“历史悠久”的遗留系统发现它们普遍存在几个硬伤。首先并发处理能力是最大的软肋。很多老系统基于同步阻塞的架构比如用Spring MVC配合一个关系型数据库处理会话状态。当用户量稍微上来比如做一次促销活动并发请求一多响应时间就从几百毫秒飙升到几秒甚至超时。用户等得着急客服坐席也看不到完整的对话历史体验非常割裂。其次意图识别的准确率是个玄学。早期系统多基于关键词匹配或者简单的正则规则。用户问“我的订单怎么还没到”系统可能只匹配到“订单”这个词然后机械地回复一段物流查询的通用话术完全忽略了“还没到”所隐含的催单和焦急情绪。这种答非所问直接导致了大量问题需要转人工系统价值大打折扣。最后多轮对话管理几乎处于“裸奔”状态。很多系统没有成熟的对话状态管理Dialog State Tracking机制。一次完整的客服交互可能包含身份验证、问题定位、详细查询、解决方案确认等多个回合。传统系统往往在每个回合后就“失忆”了用户不得不反复提供信息对话流显得极其笨拙和断裂。这些瓶颈最终都指向两个核心问题扩展性差和智能化水平低。业务量增长和技术债积累让系统步履维艰而提升智能性又往往意味着推翻重来成本高昂。技术选型规则引擎、Rasa与扣子平台的三方对决面对这些痛点技术选型就成了第一个关键决策。我们团队当时重点评估了三种主流路径基于Drools的自研规则引擎、开源框架Rasa以及扣子Boz平台。为了更直观我整理了一个对比表格数据来源于我们内部的POC测试报告以及各技术的官方基准文档维度自研规则引擎 (如Drools)Rasa (开源方案)扣子 (Boz) 平台开发效率低。需自行设计规则语法、编写大量if-else逻辑、构建管理界面。一个中等复杂度的意图集可能需要2-3人月。中。提供NLU和Dialogue Management框架但需要大量标注数据训练模型部署和运维复杂度高。高。提供可视化流程设计器、预置行业语料和模型通过拖拽和配置即可完成大部分对话逻辑开发周期可缩短60%-70%。意图识别准确率 (F1-score)低 (~0.65)。严重依赖规则完备性对表述变化、新问法泛化能力差。较高 (~0.85)。依赖标注数据质量和数量在特定领域经过充分调优后可达到不错水平。高 (~0.88)。平台基于大规模预训练模型并持续用海量行业对话数据微调开箱即用准确率就很高且支持主动学习持续优化。扩展性差。规则库膨胀后维护成本指数级上升性能随规则数量增加而下降。中。架构灵活可自行改造但高可用、负载均衡等需要自行实现技术门槛高。优秀。平台原生支持分布式部署、弹性伸缩。根据其技术白皮书通过其智能路由和动态扩缩容可轻松应对万级TPS的流量洪峰。多轮对话管理需完全自研状态管理复杂。提供Tracker Store机制支持Redis等后端但策略需自行设计。内置强大支持。提供图形化的对话状态机设计上下文变量自动传递和生命周期管理简化了复杂业务流程设计。总体拥有成本高长期人力维护、迭代成本。中高算法工程师成本、数据标注成本、运维成本。中主要为平台资源使用成本大幅降低开发和运维人力投入。结论很清晰如果追求快速上线、稳定可靠、并希望团队能更专注于业务逻辑而非底层技术扣子平台是更优的选择。它平衡了能力、效率与成本尤其适合业务驱动型团队。核心实现从集成到优化选型确定后就到了动手环节。基于扣子平台的实现可以拆解为平台流程设计和后端集成两部分。1. 使用扣子Python SDK构建稳健的对话接口扣子提供了完善的REST API和Python SDK。以下是一个集成示例重点展示了会话状态管理和异常处理import logging from typing import Optional, Dict, Any import boz_sdk # 假设SDK包名为boz_sdk from boz_sdk.exceptions import BozAPIError, BozTimeoutError import redis # 用于会话缓存 # 配置日志 logging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__) class BozChatbotService: def __init__(self, api_key: str, api_base: str, redis_client: redis.Redis): 初始化客服服务。 :param api_key: 扣子平台API密钥 :param api_base: 扣子平台API端点 :param redis_client: Redis客户端用于维护会话上下文 self.client boz_sdk.Client(api_keyapi_key, base_urlapi_base) self.redis redis_client self.session_ttl 1800 # 会话过期时间30分钟 def _get_session_key(self, user_id: str) - str: 生成会话在Redis中的存储键 return fboz:session:{user_id} def process_message(self, user_id: str, user_message: str) - Dict[str, Any]: 处理用户消息的核心方法。 时间复杂度O(1)。主要操作为Redis读写和一次网络请求均为常数时间复杂度。 session_key self._get_session_key(user_id) # 1. 获取或初始化会话上下文 session_context self.redis.get(session_key) if session_context: try: context json.loads(session_context) except json.JSONDecodeError: logger.error(fInvalid session context for user {user_id}, resetting.) context {} else: context {} # 新会话 # 2. 调用扣子对话API try: # 将当前用户消息和已有上下文发送给扣子引擎 response self.client.create_chat_completion( messages[ {role: system, content: 你是一个专业的客服助手。}, # 可以将历史对话摘要放入上下文 {role: user, content: f对话历史上下文{context.get(summary, )}}, {role: user, content: user_message} ], session_iduser_id, # 利用session_id帮助平台端进行对话关联 timeout5 # 设置5秒超时 ) bot_reply response[choices][0][message][content] new_context response.get(context, {}) # 假设API返回更新后的上下文 # 3. 更新并存储会话上下文 if new_context: self.redis.setex(session_key, self.session_ttl, json.dumps(new_context)) elif context: # 即使上下文未变也刷新TTL以保持会话活跃 self.redis.expire(session_key, self.session_ttl) # 4. 记录交互日志可异步进行 self._log_interaction(user_id, user_message, bot_reply) return { reply: bot_reply, session_id: user_id, context_updated: bool(new_context) } except BozTimeoutError: logger.warning(fRequest timeout for user {user_id}.) return {reply: 请求超时请稍后再试。, error: timeout} except BozAPIError as e: logger.error(fBoz API error for user {user_id}: {e}) # 可考虑清除可能损坏的会话状态 self.redis.delete(session_key) return {reply: 服务暂时不可用请稍后重试。, error: api_error} except Exception as e: logger.exception(fUnexpected error for user {user_id}: {e}) return {reply: 系统内部错误。, error: internal_error} def _log_interaction(self, user_id: str, query: str, reply: str): 异步记录交互日志到数据库或文件 # 这里可以使用celery、asyncio或直接写入队列 # 示例写入日志文件 log_entry f{datetime.utcnow().isoformat()} | {user_id} | Q: {query} | A: {reply[:100]}\n with open(chatbot_interactions.log, a) as f: f.write(log_entry)这段代码体现了几个关键实践会话持久化使用Redis存储和恢复对话上下文保证用户在不同请求间的连续性。健壮的异常处理针对网络超时、API错误和未知异常进行了分级处理并向用户返回友好的提示。可观测性通过日志记录关键交互和错误便于问题排查和效果分析。2. 基于BERT的意图识别优化方案尽管扣子平台的默认意图识别已经很强但在某些极端垂直或专业术语很多的领域比如医疗问诊、金融合规咨询我们可能还需要一个“专家模型”进行前置过滤或二次确认。这时可以用一个轻量级的BERT模型进行微调。import torch from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments from sklearn.model_selection import train_test_split import pandas as pd # 1. 准备领域特定数据 # 假设我们有一个CSV包含text和intent_label两列 df pd.read_csv(domain_specific_intents.csv) texts df[text].tolist() labels df[intent_label].tolist() # 划分数据集 train_texts, val_texts, train_labels, val_labels train_test_split( texts, labels, test_size0.2, random_state42 ) # 2. 加载Tokenizer和模型 model_name bert-base-chinese # 中文领域 tokenizer BertTokenizer.from_pretrained(model_name) model BertForSequenceClassification.from_pretrained( model_name, num_labelslen(set(labels)) # 意图类别数 ) # 3. 数据编码 def encode_texts(text_list, label_list, tokenizer, max_len128): encodings tokenizer( text_list, truncationTrue, paddingmax_length, max_lengthmax_len, return_tensorspt ) encodings[labels] torch.tensor(label_list) return encodings train_encodings encode_texts(train_texts, train_labels, tokenizer) val_encodings encode_texts(val_texts, val_labels, tokenizer) # 创建PyTorch Dataset class IntentDataset(torch.utils.data.Dataset): def __init__(self, encodings): self.encodings encodings def __getitem__(self, idx): return {key: val[idx] for key, val in self.encodings.items()} def __len__(self): return len(self.encodings[input_ids]) train_dataset IntentDataset(train_encodings) val_dataset IntentDataset(val_encodings) # 4. 配置训练参数 training_args TrainingArguments( output_dir./intent_model_results, num_train_epochs5, per_device_train_batch_size16, per_device_eval_batch_size64, warmup_steps100, weight_decay0.01, logging_dir./logs, logging_steps50, evaluation_strategyepoch, # 每个epoch后评估 save_strategyepoch, load_best_model_at_endTrue, ) # 5. 创建Trainer并开始训练 trainer Trainer( modelmodel, argstraining_args, train_datasettrain_dataset, eval_datasetval_dataset, ) trainer.train() # 6. 保存模型以供推理使用 model.save_pretrained(./fine_tuned_intent_bert) tokenizer.save_pretrained(./fine_tuned_intent_bert)在实际架构中这个微调后的BERT模型可以作为前置关卡。用户输入先经过它进行粗粒度意图分类例如判断是否为“紧急投诉”、“业务办理”、“常规咨询”然后将意图标签和原始文本一同传递给扣子平台。扣子平台可以利用这个标签更精准地选择后续的对话流程分支从而在专业领域达到更高的准确率。性能优化应对高并发的实战策略系统跑起来之后性能是下一个必须攻克的堡垒。我们的目标是支撑2000 TPS每秒事务数的稳定请求。1. 使用Locust进行压力测试的方法论Locust是一个用Python编写的开源负载测试工具它允许你用代码定义用户行为非常适合模拟真实的、复杂的对话场景。# locustfile.py from locust import HttpUser, task, between import json import random class ChatbotUser(HttpUser): wait_time between(0.5, 2) # 用户思考时间模拟真实间隔 def on_start(self): 模拟用户开始一个会话获取一个唯一的用户ID self.user_id ftest_user_{random.randint(10000, 99999)} self.session_active True task(3) # 权重为3表示发送消息是更频繁的任务 def send_message(self): if not self.session_active: self.stop() # 如果会话结束停止此用户模拟 return # 从一个预设的、多样化的用户问题池中随机选取 message_pool [ 你好我想查询我的订单状态。, 我的快递怎么还没到, 如何办理退换货, 客服人工服务。, 介绍一下你们的会员权益。, 忘记密码了怎么办, ] user_message random.choice(message_pool) headers {Content-Type: application/json} payload { user_id: self.user_id, message: user_message } # 发送请求到我们的智能客服接口 with self.client.post(/api/chat, jsonpayload, headersheaders, catch_responseTrue) as response: if response.status_code 200: resp_json response.json() # 可以在这里根据回复内容决定是否结束会话例如回复中包含“再见” if 感谢您的咨询 in resp_json.get(reply, ): self.session_active False response.success() else: response.failure(fStatus code: {response.status_code}) task(1) # 权重为1模拟用户直接结束会话 def end_chat(self): payload { user_id: self.user_id, message: 结束对话 } self.client.post(/api/chat_end, jsonpayload) self.session_active False self.stop() # 停止这个用户实例测试执行与数据分析启动Locust Masterlocust -f locustfile.py --master启动多个Worker在多台机器上locust -f locustfile.py --worker --master-hostmaster_ip通过Web UI默认8089端口配置测试设置目标用户数如5000和每秒生成用户速率如100然后启动测试。关注核心指标响应时间P95, P99确保95%和99%的请求在可接受范围内例如P951s。失败率必须接近于0。TPS/RPS观察系统实际能达到的吞吐量。资源监控同时监控测试期间服务器的CPU、内存、网络IO以及Redis、数据库的负载。通过Locust我们不仅测试了极限还发现了在并发量陡增时数据库连接成为瓶颈。2. 连接池与异步处理的最佳实践针对发现的瓶颈我们做了以下优化数据库/Redis连接池化避免为每个请求创建和销毁连接。# 使用redis-py的连接池 import redis pool redis.ConnectionPool(hostlocalhost, port6379, max_connections50, decode_responsesTrue) redis_client redis.Redis(connection_poolpool)采用异步Web框架我们将部分接口从同步的Flask迁移到了FastAPI利用async/await实现非阻塞IO特别是在处理网络请求调用扣子API和日志写入时。from fastapi import FastAPI, BackgroundTasks import asyncio import aiohttp app FastAPI() app.post(/api/async_chat) async def async_chat(request: ChatRequest, background_tasks: BackgroundTasks): # 1. 异步调用扣子API async with aiohttp.ClientSession() as session: async with session.post(BOZ_API_URL, jsonrequest.dict(), timeout5) as resp: boz_response await resp.json() reply process_response(boz_response) # 2. 将会话更新操作放入后台任务不阻塞本次请求响应 background_tasks.add_task(update_session_async, request.user_id, boz_response.get(context)) # 3. 记录日志也放入后台 background_tasks.add_task(log_interaction_async, request.user_id, request.message, reply) return {reply: reply}通过异步化我们在相同的硬件资源下将系统的吞吐量提升了约40%同时P99延迟下降了60%。避坑指南前人踩过的坑后人请绕行在实战中有些细节如果处理不好会让整个系统变得脆弱或不稳定。1. 对话上下文存储方案对比方案优点缺点适用场景内存缓存 (如Python dict)速度极快零延迟。1. 无法跨进程/机器共享。2. 服务重启数据全丢。3. 内存容量有限。仅用于单机原型验证或测试严禁生产环境。Redis1. 性能高内存存储支持复杂数据结构。2. 支持持久化可配置。3. 支持分布式。4. 自带过期时间TTL功能。1. 纯内存成本较高。2. 数据容量受物理内存限制除非使用集群。生产环境首选。适合存储会话上下文、频繁访问的缓存、限流计数器等。MongoDB1. 存储容量大磁盘存储。2. 文档模型灵活可直接存储JSON格式的复杂上下文。3. 查询功能强大。1. 读写延迟高于Redis毫秒级 vs 微秒级。2. 需要更多的运维知识。适合需要长期存档、复杂查询分析的会话日志存储。可以将Redis作为热存储MongoDB作为冷备份和分析库。我们的选择采用Redis MongoDB的组合。Redis存储活跃会话上下文设置30分钟TTL保证对话的实时性和高性能。同时所有完整的交互日志包括用户query、系统reply、时间戳、会话ID、识别出的意图等异步写入MongoDB用于后续的客服质量分析、模型训练数据收集和审计溯源。2. 敏感词过滤的合规性实现这是一个严肃的合规性问题。我们不能完全依赖第三方模型必须在自己的服务层建立一道可靠的防线。import ahocorasick # 使用Aho-Corasick自动机算法实现高效多模式匹配 class SensitiveWordFilter: def __init__(self, word_file_path: str): 初始化敏感词过滤器。 时间复杂度构建自动机O(Σ|keyword|)匹配过程近似O(n)n为文本长度。 self.automaton ahocorasick.Automaton() with open(word_file_path, r, encodingutf-8) as f: for word in f: word word.strip() if word: self.automaton.add_word(word, word) # 将敏感词加入自动机 self.automaton.make_automaton() # 构建自动机 def contains_sensitive(self, text: str) - bool: 检查文本是否包含敏感词 for end_index, original_word in self.automaton.iter(text): return True return False def replace_sensitive(self, text: str, replace_char*) - str: 替换文本中的敏感词 sensitive_positions [] for end_index, original_word in self.automaton.iter(text): start_index end_index - len(original_word) 1 sensitive_positions.append((start_index, end_index)) # 从后往前替换避免索引变化 result_list list(text) for start, end in reversed(sensitive_positions): result_list[start:end1] replace_char * (end - start 1) return .join(result_list) # 在消息处理流程中集成 filter SensitiveWordFilter(sensitive_words.txt) def preprocess_user_input(user_message: str): if filter.contains_sensitive(user_message): # 策略1直接拦截返回提示 # return {reply: 您的输入包含不当内容请重新表述。} # 策略2替换后继续处理根据业务合规要求选择 cleaned_message filter.replace_sensitive(user_message) logger.warning(fSensitive word filtered. Original: {user_message}, Cleaned: {cleaned_message}) return cleaned_message return user_message关键点词库来源词库需要定期更新可结合网信办等官方发布的列表以及业务积累。算法选择Aho-Corasick算法在匹配大量敏感词时效率远高于遍历或正则适合实时过滤。处理策略需与法务、业务部门共同制定是拦截、替换还是仅告警需明确规则。日志记录所有过滤操作必须留下不可篡改的日志以满足合规审计要求。延伸思考结合LLM增强复杂问题处理能力扣子平台本身已经具备较强的语言理解能力但对于一些极其开放、需要深度推理或创造性解决方案的复杂问题例如“结合我过去三年的订单历史和浏览行为给我一个个性化的购物节省钱攻略”我们可以引入一个更强大的通用大语言模型LLM作为“专家顾问”。架构思路设计一个路由决策层。扣子平台作为主流程引擎处理90%的标准业务问答查询、办理、投诉等。当扣子平台识别到问题超出其预设流程范围或用户问题非常复杂且模糊时将当前完整的、结构化的对话历史包括用户画像、订单信息等需脱敏传递给一个LLM网关例如调用GPT-4、文心一言或开源Llama的API。LLM扮演“高级客服专家”的角色进行深度分析和内容生成其回复再经由扣子平台或直接返回给用户。同时这次交互可以被记录下来经过人工审核后转化为扣子平台新的知识库条目或对话流程从而实现系统的自我进化。这种“扣子确定流程 LLM开放推理”的混合架构既保证了常规业务的高效稳定又为处理长尾、复杂问题提供了可能性是智能客服系统走向真正“智能”的一个重要方向。总结一下基于扣子构建智能客服系统核心在于善用其平台能力快速搭建主体同时在自己的集成层做好性能、可靠性和合规性的加固。从我们的实践来看这套方案成功将平均工单处理时间从8分钟降低到2.5分钟以内并且能平稳应对业务高峰真正实现了效率的倍增。希望这篇笔记里的具体代码、数据对比和踩坑经验能为你带来一些实实在在的参考。

相关新闻

椭圆周长问题

椭圆周长问题

椭圆周长没有一个能用初等函数精确表示的简单公式,这是人所共知的。其精确表达式,是一个叫做第二类完全椭圆积分的形式,其中 和 分别为椭圆的长半轴和短半。首先我们看,也就是圆的情况,长轴和短轴不相等的时候&#xf…

2026/7/7 12:50:33 阅读更多 →
公司级智能客服系统入门指南:从零搭建到核心功能实现

公司级智能客服系统入门指南:从零搭建到核心功能实现

智能客服系统正成为企业提升服务效率、降低运营成本的关键工具。它能实现7x24小时不间断服务,快速响应大量并发咨询。通过精准的意图识别,将用户问题高效路由至对应知识库或人工坐席,显著优化客户体验。痛点分析:新手搭建路上的三…

2026/5/17 6:20:18 阅读更多 →
智能客服实体填槽技术实战:从原理到避坑指南

智能客服实体填槽技术实战:从原理到避坑指南

1. 背景痛点:为什么实体填槽这么“难缠”? 大家好,最近在折腾智能客服项目,发现“实体填槽”这个环节真是让人又爱又恨。简单来说,填槽就是从用户说的话里,把关键信息(实体)抓出来&a…

2026/7/3 7:08:03 阅读更多 →

最新新闻

TC78H653FTG与MKV46F128VLH16的直流电机驱动方案

TC78H653FTG与MKV46F128VLH16的直流电机驱动方案

1. 直流有刷电机驱动系统概述在现代工业控制和消费电子领域,直流有刷电机因其结构简单、控制方便和成本低廉等优势,仍然是许多应用场景的首选驱动方案。然而,要充分发挥这类电机的性能潜力,需要精心设计的驱动电路和控制系统。TC7…

2026/7/7 12:51:39 阅读更多 →
Metasploitable2靶机实战:Kali Linux渗透测试与五大经典漏洞利用解析

Metasploitable2靶机实战:Kali Linux渗透测试与五大经典漏洞利用解析

1. 项目概述:从靶场到实战思维的桥梁如果你刚接触网络安全,面对Kali Linux和Metasploit这些名字,可能会觉得它们既神秘又强大,仿佛掌握了就能瞬间“黑”进任何系统。但现实是,没有经过系统训练的盲目尝试,就…

2026/7/7 12:51:39 阅读更多 →
浏览器中的SVG绘图神器:SVG-edit免费矢量图形编辑器入门指南

浏览器中的SVG绘图神器:SVG-edit免费矢量图形编辑器入门指南

浏览器中的SVG绘图神器:SVG-edit免费矢量图形编辑器入门指南 【免费下载链接】svgedit Powerful SVG-Editor for your browser 项目地址: https://gitcode.com/gh_mirrors/svg/svgedit 还在为复杂的矢量图形软件而发愁吗?想找一个既免费又强大的S…

2026/7/7 12:47:38 阅读更多 →
如何在老旧安卓电视上安装MyTV-Android:免费电视直播应用终极指南

如何在老旧安卓电视上安装MyTV-Android:免费电视直播应用终极指南

如何在老旧安卓电视上安装MyTV-Android:免费电视直播应用终极指南 【免费下载链接】mytv-android 使用Android原生开发的视频播放软件 项目地址: https://gitcode.com/gh_mirrors/my/mytv-android 还在为家中老旧安卓电视找不到合适的直播软件而烦恼吗&#…

2026/7/7 12:47:38 阅读更多 →
YOLOv8道路坑洼识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置+目标检测)

YOLOv8道路坑洼识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置+目标检测)

摘要 本研究设计并实现了一套基于YOLOv8(You Only Look Once version 8)目标检测算法的道路坑洼智能识别检测系统。该系统以YOLOv8s作为基础检测模型,在包含3,490张标注图像的自建道路坑洼数据集上进行训练、验证与测试,其中训练…

2026/7/7 12:45:38 阅读更多 →
思源宋体TTF终极指南:7个字重免费商用字体如何提升你的设计效率

思源宋体TTF终极指南:7个字重免费商用字体如何提升你的设计效率

思源宋体TTF终极指南:7个字重免费商用字体如何提升你的设计效率 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为商业项目寻找专业中文字体而烦恼版权问题吗&#xff…

2026/7/7 12:43:37 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻