当前位置: 首页 > wzjs >正文

运城网站建设网站网站开发实施步骤和说明

运城网站建设网站,网站开发实施步骤和说明,报名网站怎么做,建筑模板的规格文章目录 FastGPT 源码:controller.ts 主要定义1. 主要函数和参数定义2. 参数初始化3. 内部工具函数4. 多查询召回实现5. 主流程执行 FastGPT 源码:controller.ts 主要定义 controller.ts 中的核心搜索实现。 1. 主要函数和参数定义 type SearchDatas…

文章目录

    • FastGPT 源码:controller.ts 主要定义
      • 1. 主要函数和参数定义
      • 2. 参数初始化
      • 3. 内部工具函数
      • 4. 多查询召回实现
      • 5. 主流程执行

FastGPT 源码:controller.ts 主要定义

controller.ts 中的核心搜索实现。

1. 主要函数和参数定义

type SearchDatasetDataProps = {teamId: string;        // 团队IDmodel: string;         // 向量模型similarity?: number;   // 最小相似度阈值limit: number;         // 最大Token限制datasetIds: string[];  // 要搜索的数据集IDssearchMode?: `${DatasetSearchModeEnum}`; // 搜索模式(embedding/全文/混合)usingReRank?: boolean; // 是否使用重排序reRankQuery: string;   // 重排序查询queries: string[];     // 搜索查询列表
};

2. 参数初始化

export async function searchDatasetData(props: SearchDatasetDataProps) {let {teamId,reRankQuery,queries,model,similarity = 0,limit: maxTokens,searchMode = DatasetSearchModeEnum.embedding,  // 默认使用向量搜索usingReRank = false,datasetIds = []} = props;// 初始化搜索模式searchMode = DatasetSearchModeMap[searchMode] ? searchMode : DatasetSearchModeEnum.embedding;// 检查是否可以使用重排序usingReRank = usingReRank && global.reRankModels.length > 0;// token数量限制,最小50if (maxTokens < 50) {maxTokens = 1500;}
}

3. 内部工具函数

// 计算不同搜索模式下的召回限制
const countRecallLimit = () => {if (searchMode === DatasetSearchModeEnum.embedding) {return { embeddingLimit: 150, fullTextLimit: 0 };  // 纯向量搜索}if (searchMode === DatasetSearchModeEnum.fullTextRecall) {return { embeddingLimit: 0, fullTextLimit: 150 };  // 纯全文搜索}return { embeddingLimit: 100, fullTextLimit: 80 };   // 混合搜索
};// 向量检索实现
const embeddingRecall = async ({ query, limit }) => {// 1. 获取查询文本的向量const { vectors, tokens } = await getVectorsByText({...});// 2. 从向量库检索const { results } = await recallFromVectorStore({...});// 3. 获取完整的QA数据const dataList = await MongoDatasetData.find({...});// 4. 格式化结果return { embeddingRecallResults: formatResult, tokens };
};// 全文检索实现
const fullTextRecall = async ({ query, limit }) => {// 使用MongoDB的全文索引搜索let searchResults = await Promise.all(datasetIds.map(id => MongoDatasetData.find({$text: { $search: jiebaSplit({ text: query }) }})));return { fullTextRecallResults, tokenLen: 0 };
};// 重排序实现
const reRankSearchResult = async ({ data, query }) => {// 调用重排序模型const results = await reRankRecall({query,documents: data.map(item => ({id: item.id,text: `${item.q}\n${item.a}`}))});// 合并重排序分数return mergeResult;
};

4. 多查询召回实现

const multiQueryRecall = async ({ embeddingLimit, fullTextLimit }) => {// 并行执行每个query的向量和全文检索await Promise.all(queries.map(async (query) => {const [{ tokens, embeddingRecallResults }, { fullTextRecallResults }] = await Promise.all([embeddingRecall({ query, limit: embeddingLimit }),fullTextRecall({ query, limit: fullTextLimit })]);// 收集结果...}));// 使用RRF合并多个查询的结果const rrfEmbRecall = datasetSearchResultConcat(embeddingRecallResList.map(list => ({ k: 60, list })));const rrfFTRecall = datasetSearchResultConcat(fullTextRecallResList.map(list => ({ k: 60, list })));
};

5. 主流程执行

/* main step */
// 1. 获取召回限制
const { embeddingLimit, fullTextLimit } = countRecallLimit();// 2. 执行多查询召回
const { embeddingRecallResults, fullTextRecallResults } = await multiQueryRecall({...});// 3. 执行重排序
const reRankResults = await (async () => {if (!usingReRank) return [];// 合并向量和全文结果const concatRecallResults = embeddingRecallResults.concat(fullTextRecallResults.filter(item => !set.has(item.id)));// 去重并重排序return reRankSearchResult({...});
})();// 4. 最终RRF合并
const rrfConcatResults = datasetSearchResultConcat([{ k: 60, list: embeddingRecallResults },{ k: 60, list: fullTextRecallResults },{ k: 58, list: reRankResults }
]);// 5. 结果过滤
// - 去重
// - 相似度过滤
// - Token限制过滤
const filterSameDataResults = rrfConcatResults.filter(...);
const scoreFilter = filterByScore(filterSameDataResults);
const finalResults = filterResultsByMaxTokens(scoreFilter, maxTokens);

实现完整覆盖如下流程:

  1. 多种搜索模式(向量/全文/混合)
  2. 多查询并行检索
  3. 查询结果RRF合并
  4. 重排序优化
  5. 结果过滤和限制

整个过程保证了搜索的全面性(多种召回方式)和准确性(重排序和过滤)。


文章转载自:

http://v1EcZppy.fpbyk.cn
http://hryzAHXO.fpbyk.cn
http://q53DlpM1.fpbyk.cn
http://Uoo917Yn.fpbyk.cn
http://MFHen9E2.fpbyk.cn
http://Ga96YkBs.fpbyk.cn
http://zVNYS1wV.fpbyk.cn
http://Gv0YVQpl.fpbyk.cn
http://40JWvUVO.fpbyk.cn
http://UFpfZndi.fpbyk.cn
http://KN9cRjtv.fpbyk.cn
http://72DUnG1Q.fpbyk.cn
http://sEc3H8yu.fpbyk.cn
http://FX6BVloD.fpbyk.cn
http://Qd7zkmz9.fpbyk.cn
http://5DEmdT4H.fpbyk.cn
http://GFhazzCd.fpbyk.cn
http://VhvyeJf6.fpbyk.cn
http://aMn6f6tG.fpbyk.cn
http://XPDVWDR7.fpbyk.cn
http://0CmaQFvY.fpbyk.cn
http://V5yyXvjW.fpbyk.cn
http://N7pSQEOR.fpbyk.cn
http://AKndCjsF.fpbyk.cn
http://8npHTSaQ.fpbyk.cn
http://yu44GNHn.fpbyk.cn
http://VetmsuRr.fpbyk.cn
http://I8w96X6u.fpbyk.cn
http://7rXtIexD.fpbyk.cn
http://rN2k0jq7.fpbyk.cn
http://www.dtcms.com/wzjs/688690.html

相关文章:

  • 长沙网站备案拍照点优化网站教程
  • 博望网站建设全媒体运营师报考条件
  • 电子商务网站建设与维护概述wordpress悬浮小人
  • seo做子网站绍兴专门做网站
  • 外贸网站建设公司方案包头北京网站建设
  • 青岛崂山建设局网站万网网站域名
  • 华为网站建设策划书网站建设吉金手指专业12
  • 什么是电子商务网站绝唯cms网站管理系统
  • 有什么做任务拿钱的网站拉新推广平台有哪些
  • 公司建设网站的费用企业手机网站程序是什么
  • 手机如何制作网站和网页安阳县公共资源交易中心
  • 加网络网站建设工作室网站维护要多久时间
  • 自己网站建设基本流程网站建设服装项目设计书
  • 厦门安能建设品牌网站建设wordpress弹出式表单
  • phpcms怎么做网站搜索网站排名优化策略
  • 搜索网站老是跳出别的网站要怎么做网站开发文章怎么分类
  • 外贸公司网站建设 重点是什么意思自己创建网站怎么得流量钱
  • 上海网站关键词优化用dw做的网站怎么发布
  • 福建网站开发速成班广告公司名字 三个字
  • 一键做网站商务网站建设与推广实训报告
  • 开发网站公司排行电商网站流量统计
  • 中山建设安监站网站集约化网站群建设情况
  • 网站内容及内链建设网站cron
  • 网站开发小作业查房价的官方网站
  • 有做的小说网站植物染企业解决方案
  • 工作室网站建设的意义济南 微网站
  • 网站建设目标定位如何看一个网站的备案在哪里做的
  • 仿网站百度会怎么做wordpress附加字段
  • 深圳宝安高端网站建设免费发布的空间
  • go语言做的网站在家做网站建设