尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

合集:LangChain智能体开发(四)langchain-elasticsearch

合集:LangChain智能体开发(四)langchain-elasticsearch 大语言模型LLM的崛起让智能体AI Agent成为技术圈的热门话题。无论是自动化客服、个性化助手还是复杂任务求解智能体正逐步渗透到各个领域。而LangChain作为一款强大的LLM应用框架凭借其模块化设计和丰富的工具链成为开发者构建智能体的首选工具之一。本文将带你从零开始使用LangChain开发智能体并分享代码和实现思路。langchain-elasticsearch安装pipinstall-qUlangchain_elasticsearchcurl-fsSLhttps://elastic.co/start-local|sh# 创建一个弹性启动本地文件夹。要启动Elasticsearch和Kibanacdelastic-start-local ./start.sh# Elasticsearch将在http://localhost:9200.弹性用户的密码和API密钥存储在elastic-start-local文件夹的.env文件中。创建实例预训练嵌入模型使用API密钥实例化fromlangchain_elasticsearchimportElasticsearchEmbeddings embeddingsElasticsearchEmbeddings(model_idyour_model_id,es_urlhttp://localhost:9200,es_api_keyyour-api-key)使用用户名/密码进行实例化fromlangchain_elasticsearchimportElasticsearchEmbeddings embeddingsElasticsearchEmbeddings(model_idyour_model_id,es_urlhttp://localhost:9200,es_userelastic,es_passwordpassword)还可以通过客户端参数传入预先存在的Elasticsearch连接来连接到现有的Elasticspect实例。fromlangchain_elasticsearchimportElasticsearchEmbeddingsfromelasticsearchimportElasticsearch clientElasticsearch(http://localhost:9200)embeddingsElasticsearchEmbeddings(model_idyour_model_id,clientclient)云嵌入模型使用API密钥实例化fromlangchain_elasticsearchimportElasticsearchStorefromlangchain_openaiimportOpenAIEmbeddings storeElasticsearchStore(index_namelangchain-demo,embeddingOpenAIEmbeddings(),es_urlhttp://localhost:9200,es_api_keyyour-api-key)使用用户名/密码进行实例化fromlangchain_elasticsearchimportElasticsearchStorefromlangchain_openaiimportOpenAIEmbeddings storeElasticsearchStore(index_namelangchain-demo,embeddingOpenAIEmbeddings(),es_urlhttp://localhost:9200,es_userelastic,es_passwordpassword)还可以通过客户端参数传入预先存在的Elasticsearch连接来连接到现有的Elasticspect实例。fromlangchain_elasticsearch.vectorstoresimportElasticsearchStorefromlangchain_openaiimportOpenAIEmbeddingsfromelasticsearchimportElasticsearch clientElasticsearch(http://localhost:9200)storeElasticsearchStore(embeddingOpenAIEmbeddings(),index_namelangchain-demo,clientclient)操作实例Add Documentsfromlangchain_core.documentsimportDocument document_1Document(page_contentfoo,metadata{baz:bar})document_2Document(page_contentthud,metadata{bar:baz})document_3Document(page_contenti will be deleted :()documents[document_1,document_2,document_3]ids[1,2,3]vector_store.add_documents(documentsdocuments,idsids)Delete Documentsvector_store.delete(ids[3])Searchresultsvector_store.similarity_search(querythud,k1)fordocinresults:print(f*{doc.page_content}[{doc.metadata}])Search with filterresultsvector_store.similarity_search(querythud,k1,filter[{term:{metadata.bar.keyword:baz}}])fordocinresults:print(f*{doc.page_content}[{doc.metadata}])Search with scoreresultsvector_store.similarity_search_with_score(queryqux,k1)fordoc,scoreinresults:print(f* [SIM{score:3f}]{doc.page_content}[{doc.metadata}])异步fromlangchain_elasticsearchimportAsyncElasticsearchStore vector_storeAsyncElasticsearchStore(...)# add documentsawaitvector_store.aadd_documents(documentsdocuments,idsids)# delete documentsawaitvector_store.adelete(ids[3])# searchresultsvector_store.asimilarity_search(querythud,k1)# search with scoreresultsawaitvector_store.asimilarity_search_with_score(queryqux,k1)fordoc,scoreinresults:print(f* [SIM{score:3f}]{doc.page_content}[{doc.metadata}])高级特性ElasticsearchStore默认使用ApproxRetrievalStrategy该策略使用HNSW算法执行近似最近邻搜索。这是最快、最节省内存的算法。如果你想使用暴力/精确策略来搜索向量你可以将ExactRetrievalStrategy传递给ElasticsearchStore构造函数。使用 ExactRetrievalStrategyfromlangchain_elasticsearch.vectorstoresimportElasticsearchStorefromlangchain_openaiimportOpenAIEmbeddings storeElasticsearchStore(embeddingOpenAIEmbeddings(),index_namelangchain-demo,es_urlhttp://localhost:9200,strategyElasticsearchStore.ExactRetrievalStrategy())这两种策略都要求在创建索引时知道要使用的相似性度量。默认值是余弦相似性但也可以使用点积或欧几里德距离。总结现在我们掌握了怎么使用langfuse-elasticsearch。后面会继续更新langchain的使用方法。欢迎关注防止迷路。
返回列表