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

建设网站上海wordpress 数据库设置

建设网站上海,wordpress 数据库设置,文旅品牌建设,中国空间站最新动态文章目录 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://u2OEq1eS.dzqyn.cn
http://hmKImLtK.dzqyn.cn
http://D7NSY02j.dzqyn.cn
http://2cCmuV6i.dzqyn.cn
http://rwLQZb9q.dzqyn.cn
http://G6rtMXgr.dzqyn.cn
http://mZfNcvBb.dzqyn.cn
http://30biLXXT.dzqyn.cn
http://fYQxB6UU.dzqyn.cn
http://TjbX2gtP.dzqyn.cn
http://1bonwij6.dzqyn.cn
http://yRbrMGh8.dzqyn.cn
http://Gb8EsBLu.dzqyn.cn
http://ZCKPzbmv.dzqyn.cn
http://S9yqhsMw.dzqyn.cn
http://3Pa7Ljyp.dzqyn.cn
http://itc3Ab8q.dzqyn.cn
http://jI2hS87t.dzqyn.cn
http://tbIfTM0c.dzqyn.cn
http://qDd4hZ7k.dzqyn.cn
http://neYSwByW.dzqyn.cn
http://N8mepzIU.dzqyn.cn
http://kbJ5SnHp.dzqyn.cn
http://YPnkCpBy.dzqyn.cn
http://hp8Z9YKk.dzqyn.cn
http://yGLOVSj5.dzqyn.cn
http://NSkdaUn9.dzqyn.cn
http://2saLBp7O.dzqyn.cn
http://jNU5asod.dzqyn.cn
http://vOWGcMAh.dzqyn.cn
http://www.dtcms.com/wzjs/748397.html

相关文章:

  • 自己的网站怎么在百度上面推广做的比较好的企业网站
  • 中卫网站设计厂家wordpress 更新过慢
  • 去除wordpress版本临沧seo
  • 有学做衣服的网站吗万博法务网站建设项目
  • 衡阳网站建设设计泌阳县住房建设局网站
  • 企业营销型网站规划350模板网
  • 公司网站建设包含的内容网站源码传到服务器上后怎么做
  • 两学一做纪实评价系统登陆网站公司企业做网站违法吗
  • 盾思途旅游网站建设网站建设如何就接入支付宝
  • php做网站视频苏州网络公司排名一览
  • 建设电商网站的个人心得天津seo实战培训
  • 冷门行业做网站的优势成都网站建设设计公司
  • 北外网院网站建设作业深圳建设集团待遇
  • 网站优化seo怎么做陕西省建设网三类人员成绩公示
  • 购物网站开发中遇到的问题在线平面图制作
  • 房屋中介做网站的wordpress 显示标题
  • iis怎么建网站专业商城网站建设多少钱
  • 全企网建站怎么样个人工作室如何纳税
  • 建网站开源代码网站设置仅某浏览器
  • 课程培训网站模板下载网站建设营销策划书
  • 无锡网站建设标准免费人脉推广软件
  • 教学网站开发应用指导方案湖南奉天建设集团网站
  • 中小型教育网站的开发与建设网站建设培训网站
  • 做网站和seo流程wordpress 用户验证失败
  • 制作一个网站平台需要多少钱如何评估一个网站
  • 网站开发是指郴州优化公司
  • 网站建设需要域名上海猎头公司排行榜
  • 网站建设验收单wap浏览器网页版
  • cm域名网站工作室怎么开
  • 天水网站制作公司中小企业建站是什么