RAG实战,企业知识库搭建中向量化到底做了什么:从「猫狗距离」到 pgvector 建库

「文智助手」全场景办公AI助理AI+OPC全流程实践方案(大赛作品) 阅读详情

上一篇聊了 RAG 的全链路,有读者问:「Embedding 到底是什么?把文本变成向量这个过程,底层发生了什么?」

这个问题问得好。面试里大家都背过「把文本映射到高维空间的稠密向量」,但真要解释清楚——为什么这个向量能代表语义?为什么余弦相似度能衡量两段文字是不是在聊同一件事——很多人就含糊过去了。

这篇从直觉开始,到选型,到代码落地,把 Embedding 和向量数据库这块拆干净。


一、Embedding 到底表示了什么


先讲一个最直觉的例子。

假设你要给动物建一个坐标系:

                  会飞
                   ↑
           鸟      |       蝙蝠
                   |
有毛 ←──────────────┼──────────────→ 无毛
                   |
           狗      |       鳄鱼
                   ↓
                  不会飞

在这个二维坐标系里,「狗」和「猫」的坐标很近(都在左下区),「狗」和「鱼」很远。这就是向量的直觉——把对象的属性编码成坐标,坐标越近,属性越相似。

真实的 Embedding 模型做的是同一件事,只是维度从 2 维变成了 768 维或 1024 维,每一维对应某种抽象的语义属性(不一定能用人类语言描述)。模型是从海量文本中自动学会如何分配这些坐标的——语义相近的词和句子,在这个高维空间里自然聚在一起。

几个关键直觉:

  1. 语义在方向,不在长度

「我很开心」和「今天心情特别好」在 768 维空间里,方向相近,但向量的长度(模)可能不同。这就是为什么用余弦相似度而不是欧氏距离——余弦只看两个向量的夹角,不管长度。

余弦相似度 = cos(θ) = (A · B) / (‖A‖ × ‖B‖)

夹角越小(接近 0°),相似度越接近 1;方向相反(180°),相似度为 -1。

  1. 与 TF-IDF 的本质区别

如果你做过传统搜索引擎,对 TF-IDF 不陌生。TF-IDF 是词频统计,没有语义理解——「快乐」和「高兴」在 TF-IDF 里是两个不同的词,毫无关联。

Embedding 是语义表示,「快乐」和「高兴」的向量很近,即使字面上不同。

TF-IDF(稀疏向量):
「快乐的狗」→ [0, 0, 0, 1, 0, 1, 0, ...]  # 只有「快乐」「狗」对应位置为 1

Embedding(稠密向量):
「快乐的狗」→ [0.23, -0.18, 0.95, 0.02, ...]  # 768 个连续浮点数,每个都有值
「高兴的小狗」→ [0.25, -0.16, 0.93, 0.04, ...]  # 非常接近

这也是为什么 RAG 系统不用 TF-IDF 做语义检索——纯关键词召回会漏掉大量语义相关的内容。

  1. 向量化是有代价的

把一段 500 字的文档向量化,要调用 Embedding 模型做一次前向推理——计算量不小。100 万篇文档全量向量化,要认真估算时间和成本:

规模BGE-large(本地 GPU T4)text-embedding-3-small(OpenAI API)
10 万 chunk~5 分钟~$0.002
100 万 chunk~50 分钟~$0.02
1000 万 chunk~8 小时~$0.2

OpenAI 的 text-embedding-3-small 价格是 $0.02/百万 Token,本地部署 bge-large 在 T4 GPU 上跑 batch=256 大概 500ms 出一批。向量化是一次性的离线成本,后续增量更新才是持续压力。


二、代码 Embedding:搭代码搜索系统的正确姿势


通用 Embedding 模型对代码效果不好。原因很直接:代码有自己的语法结构、变量命名习惯、API 调用模式,通用模型在自然语言语料上训练,对代码的语义理解浮于表面。

一个典型的坑:用通用 Embedding 搜索「Python 排序算法」,可能返回一堆聊「算法复杂度」的文档,而漏掉实际包含 sort() 调用的代码文件。

2026 年代码 Embedding 选型:

模型特点推荐场景
voyage-code-3 (Voyage AI)跨语言代码最强,支持 Python/Java/Go/TS 等 20+ 语言多语言代码库搜索、企业代码 RAG
text-embedding-3-large (OpenAI)通用但对代码有一定支持,上下文 8K代码和文档混合的知识库
CodeBERT (微软开源)纯代码预训练,支持 Python/Java/JS 等 6 种语言本地部署、数据不出境
UniXcoder (微软开源)支持代码理解 + 代码生成,跨模态代码搜索 + 代码补全系统
jina-embeddings-v3通用但对代码有适配,本地部署友好轻量场景

选型建议:

你的代码库是什么语言?
├─ Python 为主 → voyage-code-3 或 CodeBERT(两者 Python 最强)
├─ 多语言混合 → voyage-code-3(覆盖最广)
│
需要本地部署(数据不出境)?
├─ 是 → CodeBERT 或 UniXcoder(微软开源)
└─ 否 → voyage-code-3(API,效果最好)
│
代码和文档混合的知识库?
└─ text-embedding-3-large(兼顾两者,但代码效果略差于专用模型)

实测对比(搜索「用 Python 实现二叉树的中序遍历」):

模型排名 #1 结果是否命中
text-embedding-3-large「树形数据结构概述」(文档)❌ 漏掉代码
voyage-code-3def inorder_traversal(root)... (代码)✅ 精准命中
CodeBERTdef inorder_traversal(root)... (代码)✅ 精准命中

如果你在搭代码智能搜索或 AI Code Review 系统,代码专用 Embedding 是不可跳过的选型点。

# voyage-code-3 使用示例
import voyageai

vo = voyageai.Client(api_key="your-api-key")

# 代码文档向量化
code_snippets = [
    "def quicksort(arr): ...",
    "public void mergeSort(int[] arr) { ... }",
]
result = vo.embed(code_snippets, model="voyage-code-3", input_type="document")
embeddings = result.embeddings  # List[List[float]],每个 1024 维

# 查询向量化(input_type="query" 与 document 不同)
query = "用 Python 实现快速排序"
query_result = vo.embed([query], model="voyage-code-3", input_type="query")

注意 voyage 区分 input_type="document" 和 input_type="query"——文档和查询用不同的编码方式,这是 Asymmetric Embedding 的设计,查询通常更短且语义模糊,文档通常更长且具体,分开编码效果更好。


三、向量数据库轻量选项:Chroma 什么时候用


前面写了 pgvector/Milvus/Qdrant 的详细对比,有读者问:「Chroma 呢?好多教程用这个。」

Chroma 的定位很明确:本地开发 / 快速原型 / 不需要运维的轻量场景。

# Chroma 5 行代码建一个知识库
import chromadb

client = chromadb.Client()  # 纯内存模式,重启清空
# 或 chromadb.PersistentClient(path="./my_db")  # 持久化到本地文件

collection = client.create_collection("my_docs")

collection.add(
    documents=["Python 是一种解释型编程语言", "Go 适合高并发服务"],
    ids=["doc1", "doc2"],
)

results = collection.query(query_texts=["什么语言适合写服务端?"], n_results=1)
print(results["documents"])  # [['Go 适合高并发服务']]

Chroma 内置了 Embedding 模型(默认用 all-MiniLM-L6-v2),不用自己处理向量化——传文本进去,它自动向量化再存储。这是它在教程里大量出现的原因:零配置,三行代码跑起来。

Chroma vs pgvector 决策:

场景选哪个理由
本地开发、调试 RAG 逻辑Chroma零运维,重启即清空,调试友好
写教程、演示 DemoChroma代码最简洁,读者上手快
生产环境,已有 PostgreSQLpgvector复用基础设施,零额外运维
生产环境,需要 ACID 事务pgvector和业务数据在同一个 DB
数据量 > 100 万,需要分布式Milvus/QdrantChroma 单机,pgvector 千万级开始吃力

Chroma 的硬伤:不适合生产。它没有完善的高可用方案,集群支持有限,大规模下性能和稳定性都比不上 Qdrant/Milvus。把 Chroma 用在生产的团队,一旦数据量涨上去,迁移成本会很高。

结论:Chroma 是最好的「开发期向量库」,pgvector 是「最低运维成本的生产向量库」。


四、pgvector 实战:用 PostgreSQL 构建最小知识库


pgvector 是 PostgreSQL 的扩展,向量作为一种数据类型直接存在 PG 表里。这意味着:

  • 向量索引和业务数据在同一个数据库,不用维护两套基础设施
  • 支持完整的 SQL 操作——WHERE、JOIN、事务全都可以用
  • 权限控制直接复用 PostgreSQL 的行级安全(RLS)
  • 运维团队已经熟悉 PG,学习成本几乎为零

适用场景:数据量 < 500 万向量,已有 PostgreSQL,团队不想引入新的基础设施组件。

4.1 环境准备

# 方式一:Docker(推荐本地开发)
docker run -d /
  --name pgvector-demo /
  -e POSTGRES_PASSWORD=yourpassword /
  -p 5432:5432 /
  pgvector/pgvector:pg16

# 方式二:已有 PostgreSQL,安装扩展
# Ubuntu/Debian:
sudo apt install postgresql-16-pgvector

# macOS (Homebrew):
brew install pgvector
-- 连接 PostgreSQL 后,开启扩展
CREATE EXTENSION IF NOT EXISTS vector;

4.2 建表与索引

-- 知识库文档表(以 RAG 客服场景为例)
CREATE TABLE knowledge_chunks (
    id          BIGSERIAL PRIMARY KEY,
    source_file TEXT NOT NULL,              -- 来源文档
    section     TEXT,                       -- 章节标题
    content     TEXT NOT NULL,              -- 原文
    embedding   VECTOR(1024) NOT NULL,      -- 向量(bge-m3 输出 1024 维)
    metadata    JSONB DEFAULT '{}',         -- 可扩展元数据(权限/部门/时间等)
    created_at  TIMESTAMPTZ DEFAULT NOW()
);

-- 创建 HNSW 索引(推荐,查询更快)
-- 余弦相似度用 vector_cosine_ops
CREATE INDEX ON knowledge_chunks
    USING hnsw (embedding vector_cosine_ops)
    WITH (m = 16, ef_construction = 64);

-- 或者 IVFFlat(内存更省,精度略低)
-- CREATE INDEX ON knowledge_chunks
--     USING ivfflat (embedding vector_cosine_ops)
--     WITH (lists = 100);

-- 元数据过滤加速(给高频过滤字段建普通索引)
CREATE INDEX ON knowledge_chunks ((metadata->>'dept'));
CREATE INDEX ON knowledge_chunks (created_at);

选 HNSW 还是 IVFFlat?

  • HNSW:查询更快(P99 < 20ms),召回率更高(97%+),支持增量写入,首选
  • IVFFlat:内存更省,但需要先有足量数据才能训练(建议 > 10 万条再用),lists 参数设 sqrt(N) 左右

4.3 Python 写入向量

import psycopg2
from psycopg2.extras import execute_values
from sentence_transformers import SentenceTransformer
from typing import List
import json

# 连接配置
conn = psycopg2.connect(
    host="localhost",
    database="postgres",
    user="postgres",
    password="yourpassword",
)
conn.autocommit = False

# Embedding 模型(中文场景用 bge-large-zh-v1.5 或 bge-m3)
embedder = SentenceTransformer("BAAI/bge-large-zh-v1.5")

def ingest_chunks(chunks: List[dict]):
    """
    批量写入文档块。
    chunks 格式:[{"content": "...", "source_file": "...", "section": "...", "metadata": {...}}]
    """
    texts = [c["content"] for c in chunks]

    # 批量向量化(batch 推理比逐条快 10x+)
    embeddings = embedder.encode(
        texts,
        batch_size=64,
        normalize_embeddings=True,  # L2 归一化,余弦相似度等价内积
        show_progress_bar=True,
    )

    rows = [
        (
            c["source_file"],
            c.get("section"),
            c["content"],
            embedding.tolist(),        # VECTOR 类型接受 Python list
            json.dumps(c.get("metadata", {})),
        )
        for c, embedding in zip(chunks, embeddings)
    ]

    with conn.cursor() as cur:
        execute_values(
            cur,
            """
            INSERT INTO knowledge_chunks
                (source_file, section, content, embedding, metadata)
            VALUES %s
            """,
            rows,
            template="(%s, %s, %s, %s::vector, %s::jsonb)",
        )
    conn.commit()
    print(f"已写入 {len(rows)} 条")

# 使用示例
ingest_chunks([
    {
        "content": "退换货政策:自签收之日起 7 天内可申请无理由退货,需保持原包装完好。",
        "source_file": "policy/refund.md",
        "section": "退换货",
        "metadata": {"dept": "客服", "version": "2026-Q2"},
    },
    {
        "content": "物流异常处理:若显示已签收但未收到,请 48 小时内联系客服并提供订单号。",
        "source_file": "policy/logistics.md",
        "section": "物流",
        "metadata": {"dept": "物流", "version": "2026-Q2"},
    },
])

4.4 语义查询

def semantic_search(
    query: str,
    top_k: int = 5,
    dept_filter: str = None,
) -> List[dict]:
    """
    语义检索:支持可选的部门元数据过滤。
    """
    query_embedding = embedder.encode(
        [query],
        normalize_embeddings=True,
    )[0].tolist()

    # pgvector 的距离算子:
    #   <=>  余弦距离(1 - cosine_similarity),越小越相似
    #   <->  欧氏距离(L2)
    #   <#>  内积的负值(归一化后与余弦等价)
    sql = """
        SELECT
            id,
            source_file,
            section,
            content,
            metadata,
            1 - (embedding <=> %s::vector) AS cosine_similarity
        FROM knowledge_chunks
        {where_clause}
        ORDER BY embedding <=> %s::vector
        LIMIT %s
    """

    params = [query_embedding, query_embedding, top_k]

    if dept_filter:
        # JSONB 字段过滤:先走普通索引筛选,再做向量检索
        where_clause = "WHERE metadata->>'dept' = %s"
        params = [query_embedding, dept_filter, query_embedding, top_k]
        sql = sql.format(where_clause=where_clause)
        # 注意参数顺序:第一个 %s 是 WHERE 前的 embedding,第二个是 dept,
        # 第三个是 ORDER BY 的 embedding,第四个是 LIMIT
        sql = """
            SELECT
                id, source_file, section, content, metadata,
                1 - (embedding <=> %s::vector) AS cosine_similarity
            FROM knowledge_chunks
            WHERE metadata->>'dept' = %s
            ORDER BY embedding <=> %s::vector
            LIMIT %s
        """
        params = [query_embedding, dept_filter, query_embedding, top_k]
    else:
        sql = sql.format(where_clause="")

    with conn.cursor() as cur:
        cur.execute(sql, params)
        rows = cur.fetchall()

    return [
        {
            "id": r[0],
            "source_file": r[1],
            "section": r[2],
            "content": r[3],
            "metadata": r[4],
            "similarity": float(r[5]),
        }
        for r in rows
    ]

# 使用示例
results = semantic_search("退货需要什么条件", top_k=3)
for r in results:
    print(f"[{r['similarity']:.3f}] {r['source_file']} - {r['content'][:60]}")
# [0.921] policy/refund.md - 退换货政策:自签收之日起 7 天内可申请无理由退货...

4.5 与 LangChain 集成(三行接入)

如果你的项目已经在用 LangChain,pgvector 有官方集成,不需要手写 SQL:

from langchain_community.vectorstores import PGVector
from langchain_community.embeddings import HuggingFaceEmbeddings

embedder = HuggingFaceEmbeddings(model_name="BAAI/bge-large-zh-v1.5")

# CONNECTION_STRING 格式:postgresql+psycopg2://user:pwd@host/dbname
vectorstore = PGVector(
    connection_string="postgresql+psycopg2://postgres:yourpassword@localhost/postgres",
    embedding_function=embedder,
    collection_name="knowledge_chunks",
)

# 写入文档
from langchain.schema import Document
vectorstore.add_documents([
    Document(page_content="退换货政策...", metadata={"source": "policy/refund.md"}),
])

# 语义搜索
docs = vectorstore.similarity_search("退货条件", k=3)

LangChain 的 PGVector 会自动创建表和索引(默认用 IVFFlat)。如果想用 HNSW,需要在数据库里手动建索引,或等 LangChain 下游版本支持 HNSW 参数配置。

4.6 pgvector 生产注意事项

注意点 1:先写数据,再建 HNSW 索引

IVFFlat 在数据量不足时效果很差(需要先有足量数据做 K-Means);HNSW 没有这个限制,但如果你的数据会大量更新,建索引前先写完一批数据,再建索引,性能更好。

注意点 2:maintenance_work_mem 要调大

HNSW 索引构建很耗内存,默认的 64MB 通常不够:

-- 建索引前临时调大,建完恢复
SET maintenance_work_mem = '1GB';
CREATE INDEX ON knowledge_chunks USING hnsw (embedding vector_cosine_ops);
RESET maintenance_work_mem;

注意点 3:查询时设 ef_search

HNSW 索引的 ef_search 参数控制查询精度,默认值 40 在百万级数据时召回率可能不够:

-- 会话级设置,提高查询召回率
SET hnsw.ef_search = 100;

注意点 4:数据量超 500 万考虑迁移

pgvector 是单机方案,超过 500 万向量后 P99 延迟开始显著上升,超过 1000 万就该考虑迁 Qdrant 或 Milvus 了。迁移成本:把数据导出重新向量化写入,通常一个周末搞定。


五、一张表总结选型


需求推荐方案理由
本地开发调试Chroma零运维,三行代码起
生产环境 < 100 万向量 + 已有 PGpgvector复用基础设施,零额外运维
生产环境,需要 ACID 事务pgvector向量和业务数据同库
生产环境 100 万-5000 万QdrantRust 性能 + Payload 过滤无损
生产环境 > 5000 万,分布式Milvus唯一验证过十亿级的开源方案
多语言代码库搜索voyage-code-3 + 任意向量库代码语义理解最强
代码数据不出境CodeBERT + pgvector全链路本地

结尾

今天这篇覆盖了几个容易被忽视的点:

  • Embedding 的方向才是语义,长度没有意义——这是余弦相似度的根本原因
  • 代码 Embedding 要用专用模型,通用模型对代码语义理解浮于表面
  • Chroma 是开发期的最佳拍档,但别在生产用它
  • pgvector 是 500 万以下规模的最低阻力方案,建库代码加上去不超过 50 行

下一篇把检索策略聊完——混合检索、RRF、Reranker 怎么组合,以及查询改写(Query Rewriting)的工程实现。


这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

👇👇扫码免费领取全部内容👇👇
在这里插入图片描述

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

在这里插入图片描述

4. 2026行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

7. 资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:

👇👇扫码免费领取全部内容👇👇
在这里插入图片描述

船载 OpenHarmony AIS 航海工作台:告警与防碰撞预警系统 船载OpenHarmony AIS航海工作台的告警与防碰撞系统,集成十余类告警(超速、偏航、会遇、SOS等),通过网格空间索引实现高效邻近判定,保障实时性。告警管理器统一调度规则、去重、通知与日志,支持悬浮球、语音、跑马灯、弹窗多渠道触达,确保航行安全。SOS紧急通道独立运行,避免干扰。系统设计强调性能优化与多场景适配,为航海安全提供核心支撑。 阅读详情

相关推荐

将Python爬取的数据导入钉钉多维表

摘要:本文介绍将Python爬取的数据导入钉钉多维表的完整解决方案。首先通过requests库爬取数据并解析为结构化格式,然后使用钉钉开放平台API对接多维表。关键步骤包括获取app_key、app_secret等凭证,通过OAuth2获取access_token,以及批量写入记录。文章详细说明了参数获取位置、字段类型匹配、权限配置等注意事项,并提供了错误处理建议和性能优化方法。适用于需要将网络数据同步到钉钉多维表的开发场景。

IT深耕十余载,大道之简 2131

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 378

西门子840D新建项目

1、需要一个32位的WIN7或者XP系统,并且已经在系统中安装完成西门子840Dsl开发包和VS2008。(我采用的是XP系统虚拟机) 2、在开始->所有程序找到如下位置 3、在这个位置打开Visual Studio 4、文件->新建->项目 名称和位置都可以随意更改,点击确定。 5、在左侧选择第二个选项进入下面的界面 点击“Add Screen”按钮 可以修改“class name”然后点击“OK”返回上一个界面,再点击“Add Form” 可以修...

qq_36987047的博客 1861

AI 问数真的能替代 BI 报表吗?

AI问数赋能自然语言查询,提升临时分析效率,但无法替代传统报表。报表适用于稳定输出与持续监控,AI则擅长探索性提问。企业用好AI问数,关键在于夯实数据模型、统一指标口径、健全权限体系与结果校验机制。合理组合报表、仪表板与AI,才能实现高效、准确的业务洞察。

葡萄城技术团队博客 298

三菱 FX5U PLC 4轴程序 控制松下伺服3个, 步进电机一个

三菱 FX5U PLC 4轴程序。 控制松下伺服3个, 步进电机一个, 四轴自动堆垛码垛设备程序, 回原点动作用专用的原点回归指令写的, 手动运行用三菱相对定位指令写的 , 自动运行用绝对定位指令写的取料运行, 表格定位写的自动放料运行, 设备各种报警异常都有写出 程序每一步都有注释。 包括PLC程序、显控触摸屏 程序、松下伺服驱动器接线图。 程序内都有IO注释 编号:4816635519484681汇美0808 ...

m0_68069172的博客 3381

BurpSuite实战:5分钟搞定Pikachu靶场表单爆破(附最新字典配置技巧)

本文通过Pikachu靶场实战,详细演示了如何使用BurpSuite的Intruder模块对Web登录表单进行暴力破解。从代理配置、请求捕获、集束炸弹模式设置,到载荷配置与结果分析,提供了完整的操作流程。文中还分享了2024年有效的字典获取与优化技巧,帮助安全测试人员快速定位弱口令漏洞。

weixin_29327977的博客 601

AI Agent之核心框架

A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

剑雨巍巍的博客 263

告别TI官网迷路!手把手教你用C2000Ware为TMS320F28027搭建Proteus仿真工程模板

本文详细指导如何使用C2000Ware为TMS320F28027搭建Proteus仿真工程模板,帮助DSP开发者快速上手。从资源获取、工程目录设计到关键文件配置,再到CCS与Proteus的联调技巧,全面解析仿真工程搭建的每个步骤,特别适合初学者和工程师参考。

weixin_42715608的博客 474

ChatGPT、Perplexity、Gemini 与 AI Overviews 引用对比:谁的引用更可信

AI 引擎的引用机制差异很大:ChatGPT 以行内引用加 Sources 列表呈现来源,Perplexity 几乎逐句可溯源,Gemini 在回答中内嵌相关来源链接,AI Overviews 则把多源聚合答案与来源列表一起放在搜索结果顶部。本文从引用透明度、来源偏好、可干预性 3 个维度对比这 4 个引擎,并给出 GEO 的 3 点启示,帮企业在多引擎环境下提升被引用的概率。

淡然一笑 的专栏 223

海康VisionMaster与西门子PLC1200进行S7通信

通信是连通算法平台和外部设备的重要渠道,在海康VisionMaster算法平台中既支持外部数据的读入也支持数据的写出,当通信构建起来以后既可以把软件处理结果发送给外界,又可以通过外界发送字符来触发相机拍照或者软件运行。 本文以西门子PLC1200作为外部设备为例,讲解海康VisionMaster与西门子PLC1200进行S7通信。......

haier123888的博客 1万+

【SpringBoot笔记44】SpringBoot多数据源配置(方式一:配置多个mapper扫描不同的包路径实现多数据源配置)

在SpringBoot应用开发中,一般情况下,都是只会配置一个数据源信息,之后整个工程都是对当前数据源进行增删改查的操作。但是,在实际开发里面,也有可能会遇到多数据源的情况,例如:当前工程中除了需要访问自己应用的数据库,还需要直接连接第三方系统的数据库进行业务处理,这种情况下,就需要进行多数据源的配置。SpringBoot考虑到了这一点,所以它是支持多数据源的配置的,下面介绍一下如何配置多数据源。

✅ Java 开发工程师 1118

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 575

医疗工具识别(手术器械计数):基于YOLOv8的智能手术器械管理系统

YOLOv8是Ultralytics公司于2023年推出的最新一代目标检测算法,相比前代YOLOv5,在精度和速度上都有显著提升。Anchor-free检测:不再使用预定义的anchor boxes,简化了检测流程更高效的骨干网络:采用CSPDarknet53作为特征提取网络多尺度特征融合:通过PANet结构实现更好的小目标检测损失函数优化:使用CIoU损失提高边界框回归精度YOLOv8提供了多种规模的模型(n/s/m/l/x),可根据实际需求在精度和速度之间进行权衡。

YOLO 480

AI 应用开发工程师技术实践:大模型接入、通用组件封装与性能优化

本文提出AI应用从PoC到生产的核心挑战:模型调用的持续可用、可控与可优化。通过构建统一LLM网关实现多供应商路由与故障转移,封装对话、工具调用与RAG组件以解耦业务逻辑,结合前缀缓存、批处理与流式背压治理等性能优化手段,形成“接通→接稳→接快”的工程路径,最终以工程化能力决定AI应用的生产可用性。

2301_79189962的博客 633

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

抽象主义人工智能和生命体AI的内在联系

彭军辉提出“抽象主义人工智能”作为第四大AI范式,批判符号主义、连接主义、行为主义剥离生命本体的误区,确立“智能是现象,生命是本体”的核心公理。主张原生智能必须依附具备存续诉求的生命本体,提出“生命体AI理论”,构建七层演化阶梯与自闭环工程框架,强调智能不可跳过底层存续机制直接模拟语言。该体系为生成式AI提供科学边界,推动从“仿真表象”向“原生智能”的范式跃迁,开辟硅基人工生命新赛道。

抽象主义人工智能和生命体AI 177

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OpenAI Control Room 架构拆解:给企业 AI Agent 加一套可审计的急停系统

OpenAI 公开了用于追踪和停止研究模型工作负载的 Control Room。本文拆解 job_id、推理前鉴权、35 秒撤销窗口与 Fail Closed 设计,并给出企业 AI Agent 急停控制面的数据模型、FastAPI 参考实现、缓存撤销策略和故障演练清单。

jerry764的博客 326

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

OpenClaw 深度调查:把 AI 助手做成你自己的控制平面

对 openclaw/openclaw 的完整技术尽调:Gateway 架构、Agent 运行时、工具与沙箱、30 个消息通道、181 个插件、安全信任边界、工程代价与采用建议。17 章 / 10 张图,全部数字标注口径,数据截至 2026-10-31。

厚积薄发 310

AI赋能智慧港口建设|造形家快速生成港口全要素三维场景

随着智慧港口、港口数字孪生项目的持续推进,港口三维场景的需求日益旺盛。传统港口三维建模,往往需要航拍倾斜摄影采集数据,再人工搭建吊机、岸桥、船舶、集装箱等大量工业设施模型,项目周期长、人力成本高,修改迭代繁琐,制约港口可视化项目落地效率。国产AI三维建模工具,依托卫星影像 AI 识别能力,无需航拍作业,一键快速搭建港口完整三维场景,为港口数字孪生、方案汇报、投标演示提供高效的场景解决方案。

m0_69539167的博客 65

从设备增点到治理闭环:老旧小区物业数智化落地实践

系统连接合同审批、银行流水、收费记录与项目台账,执行到期提醒、收入核验、异常标色和月度对账,让每一笔资金来源明确、去向可查。针对设施老旧、诉求响应慢、公共收益不透明等问题,津南以6类小区为试点场景,统一建设物业数字化底座,关联楼栋、单元、房屋、业主、空间、设施设备、工单、公共收益等核心数据。系统采用统一编码管理,将摄像头、路灯、井盖、道路、绿化等设施纳入资产台账,解决纸质记录更新滞后、故障责任难追溯的问题。基于历史工单建立分类模型和知识库,辅助识别照明、给排水、电梯、环境秩序、秩序维护等问题;

wuyeshuzhihua的博客 136

企业微信iPad协议详解:接口接入、实时消息同步与语音转码实践

深入解析企业微信iPad协议的技术架构与开发思路,涵盖API接口接入、长连接通信、实时消息同步、Silk语音转码、异常重连及高并发优化,帮助开发者了解企业微信自动化系统的设计与实现。

欢迎来到祖安! 461

Product Hunt 热榜 2026-11-13:Plurai Simulation、YouArt Desktop App、Omnigraph

2026-11-13 Product Hunt 新产品精选:Plurai Simulation、YouArt Desktop App、Omnigraph。汇总 15 款产品的中文介绍、功能关键词和产品链接。

LaughingZhu的博客 537

【AI Agent面试系列】AI Agent可观测、评测、安全相关的知识点

之前的文章介绍了和,本文主要介绍AI Agent的测评、可观测等知识。

346

Docling 原理解读:是什么、为什么、怎么样

从论文视角拆解 Docling 的整体架构、DoclingDocument 数据模型、PDF 预处理、版面分析、OCR、TableFormer 双解码器、阅读顺序与装配流程,并解释版面框与 OCR 框的区别。

PLANTTHESON的博客 381

WorkBuddy 实战:一句话需求 → 七屏可交互原型,户外徒步 App 的 AI 设计全流程

WorkBuddy 实战:一句话需求 → 七屏可交互原型,户外徒步 App 的 AI 设计全流程,跟着博主一起来还原整个过程。

夜郎King的博客 5060

从认识人工智能到理解机器学习:我的 AI 入门第一课

正式开始学习人工智能之前,我对 AI 的认识其实比较模糊:知道 ChatGPT、知道大模型,也知道现在很多岗位都在谈 AI,但如果有人问我“人工智能到底是什么”“机器是怎么学会识别一只猫的”,我未必能从头到尾讲清楚。上午的课程更偏向行业全景:人工智能的发展、研究方向、NLP、岗位分工、学习路线和 AI Coding 工具。下午的课程更偏向技术基础:机器学习的原理、有监督学习、深度学习、模型训练和评估方法。

chh563的博客 527
上一篇: 做了四年H5营销页,我追求的是“所有人看到同一个惊艳页面“,现在我要让每个人看到的页面都不
下一篇: 项目经理:做了六年交付,我转型做了AI产品经理
AI_小站
博客等级 码龄3年 6255粉丝 1154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值