暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在docker内部署deepseek rag环境

    首先介绍下什么是RAG(Retrieval-Augmented Generation),deepseek等通用大模型在回答专业细分领域知识的时候,由于上下文缺乏,导致最终效果不是很好。因此诞生了检索增强生成。在提示词阶段,先把背景知识库向量化后输入向量数据库。用户提问的时候,先检索向量数据库,根据余弦相似度等相似度算法,匹配上下文信息,补充提示词的上下文,然后投喂给LLM,获得更接近的答案。
        下面介绍下如何在docker内部搭建基于deepseek的rag环境。deepseek环境的搭建类似于在mac上部署本地deepseek模型。只不过运行在docker环境内部。首先我们拉取ollama镜像
    docker run -d \
      --name ollama \
      -e OLLAMA_MODELS=/root/models \
      -v learn/langchain/ollama/data:/root/.ollama \
      -v /learn/langchain/ollama/models:/root/models \
      -p 11434:11434 \
      ollama/ollama:latest
    这里做了个映射,把模型路径存储到主机目录防止容器重启后模型丢失。但是实践后发现,重启后会丢失,折腾了很久,怀疑是ollama/ollama镜像的问题,每次重启后会重写模型所在的目录。
            为了解决这个问题,可以在模型下载完毕后,备份blobs和manifasts文件,每次镜像重启后,将上述备份拷贝到models目录,这样就可以避免每次重复下载模型。
            然后运行ollama命令拉取deepseek模型,并启动服务,和在主机运行ollama一样,只不过这次在docker 内部。
      docker exec -it ollama ollama run deepseek-r1:1.5b
      然后查看下我们的模型列表
        docker exec -it ollama ollama list
        NAME                       ID              SIZE      MODIFIED
        deepseek-r1:1.5b           a42b25d8c10a    1.1 GB    12 minutes ago
        接着访问下我们的ollama端口,看看服务是否启动成功
          curl 'http://127.0.0.1:11434/'
          Ollama is running
          测试下
            verifying sha256 digest
            writing manifest
            success
            >>> 你叫什么名字
            <think>
            </think>
            您好!我是由中国的深度求索(Deep^@Seek)
            有了大模型后,我们需要拉取一个向量化的模型
              docker exec -it ollama ollama pull nomic-embed-text:latest
              注意nomic-embed-text只是一个向量化的模型,不能单独run,单独执行会报错
                % docker exec -it ollama ollama run nomic-embed-text:latest 
                verifying sha256 digest
                writing manifest
                success
                Error"nomic-embed-text:latest" does not support generate
                拉取完毕后检查下模型列表
                  docker exec -it ollama ollama list
                  NAME                       ID              SIZE      MODIFIED
                  nomic-embed-text:latest    0a109f422b47    274 MB    46 seconds ago
                  deepseek-r1:1.5b           a42b25d8c10a    1.1 GB    12 minutes ago
                  接着测试下向量化后的结果
                    % curl http://localhost:11434/api/embeddings -d '{
                      "model""nomic-embed-text:latest",
                      "prompt""The sky is blue because of Rayleigh scattering"
                    }'
                      {"embedding":[0.5902549624443054,0.40202265977859497,-3.305935859680176,-0.5254905819892883,0.7497862577438354,1.5192416906356812,-0.12496642768383026,0.3969007432460785,0.06764500588178635,-1.108625888824463,0.6921310424804688,1.2784963846206665,1.1455689668655396,1.0881975889205933,0.25135597586631775,0.2931778132915497,0.15207765996456146,-0.6338958144187927,-0.21013586223125458,-0.1955464780330658,-1.7957712411880493,-0.6292394399642944,0.03766331821680069,-0.6676965355873108,1.2617651224136353,1.2765393257141113,-0.15992604196071625,-0.0015721656382083893,-0.29779133200645447,-0.48010051250457764,1.2054181098937988,-0.638550341129303,-0.5400823950767517,-1.035055160522461,0.6305906176567078,-1.2092297077178955,0.6830517053604126,-0.058875489979982376,-0.19688262045383453,0.12828567624092102,-0.014542888849973679,-0.5536658763885498,0.3515326976776123,0.0449858084321022,0.5978518128395081,-0.9542090892791748,0.5081562399864197,1.5728836059570312,-0.7142339944839478,-0.3835756778717041,-0.6688358187675476,1.1393837928771973,-0.10421445965766907,-1.9462788105010986,0.46659478545188904,1.434537649154663,0.505582332611084,-0.3426622152328491,0.496824711561203,0.08511268347501755,1.3481026887893677,1.8009079694747925,0.08728518337011337,1.1066232919692993,1.301540732383728,-0.9266610145568848,-1.138162612915039,-0.18383421003818512,0.19463543593883514,-0.33013173937797546,1.475450038909912,-1.2715392112731934,0.06277623772621155,0.7978441715240479,-0.5997520089149475,-1.1083190441131592,-1.3164232969284058,0.4171225130558014,-0.10787201672792435,1.0668607950210571,0.33312278985977173,0.4377760589122772,0.46056169271469116,0.2221822440624237,1.2031840085983276,0.6119828224182129,0.7442829608917236,-0.35289543867111206,-0.30258333683013916,-0.13138070702552795,0.17294088006019592,-0.5773493051528931,1.4193164110183716,0.2021069973707199,-0.4479771554470062,-0.12425240129232407,-0.6138477325439453,1.463781476020813,-1.345292329788208,-0.6457579135894775,-1.1808421611785889,-0.5075060725212097,-0.9156967401504517,0.7159985899925232,1.5090142488479614,0.5308347344398499,-0.23216991126537323,-0.17967846989631653,-0.6045764088630676,-0.9472198486328125,0.1917516589164734,0.6947235465049744,-0.08700121194124222,0.04331512749195099,-0.21380840241909027,-1.4154554605484009,0.0929659977555275,-0.8737536668777466,0.24506762623786926,1.9958688020706177,0.8855870366096497,-0.07040607929229736,0.08218206465244293,-0.3486440181732178,-0.2084377110004425,1.0229907035827637,-0.6091663837432861,0.005509037524461746,0.26507556438446045,-1.0337761640548706,-0.7352027297019958,-0.7601297497749329,-0.09458187222480774,0.27465224266052246,0.10689474642276764,0.43954673409461975,-0.2000734955072403,-0.841012716293335,0.13513877987861633,0.4176371693611145,0.8088560104370117,0.4536168575286865,0.9772404432296753,-0.6688436269760132,-0.11820852011442184,-1.3558279275894165,0.588799238204956,-0.021157260984182358,-0.24399074912071228,-0.7184224128723145,-0.55394446849823,-0.17889147996902466,0.41651982069015503,0.6462463140487671,0.10671070218086243,-1.1119965314865112,0.5379765033721924,-0.20099826157093048,0.5504292845726013,0.6676234006881714,1.101499319076538,0.47930020093917847,-0.2505323886871338,0.47351714968681335,-0.4850727915763855,-0.6560611128807068,1.1198631525039673,0.8037500977516174,0.6610767841339111,0.7610702514648438,-1.093968152999878,-1.6832035779953003,-0.5538008809089661,-0.9295867681503296,-0.05142227187752724,0.18762223422527313,1.4193390607833862,-0.4554476737976074,0.1889803111553192,-0.8117234110832214,-0.22632110118865967,-1.3917527198791504,0.30362215638160706,0.1616096794605255,0.5474790334701538,0.04113607481122017,-1.1702473163604736,-0.8143051266670227,-0.7331222891807556,-0.5523784160614014,-0.23422789573669434,-0.5322402715682983,-1.4006837606430054,-0.928683876991272,0.211378276348114,-0.48647812008857727,1.1392441987991333,1.0098371505737305,0.36189085245132446,0.3644583225250244,-0.14308114349842072,-0.31282681226730347,0.4827479124069214,-0.22282138466835022,0.23171119391918182,1.2741384506225586,0.2801584005355835,0.9301142692565918,-1.142275333404541,0.10021426528692245,1.2260041236877441,-0.3912127912044525,0.226417675614357,-0.12741263210773468,1.2135988473892212,0.08898216485977173,-0.9707157611846924,-0.022104188799858093,-0.2811766266822815,1.6940381526947021,-0.4619690775871277,0.36113452911376953,0.6449199318885803,-0.4661353826522827,0.8197789192199707,0.035774871706962585,-0.6311402916908264,0.14048272371292114,0.9443014860153198,-0.3509438931941986,0.2071262001991272,0.27821555733680725,0.6886400580406189,0.7114009857177734,0.6226175427436829,0.8258316516876221,0.441867470741272,1.1989152431488037,-0.195376917719841,-0.003494124859571457,-0.8344205617904663,1.3400378227233887,-1.5052785873413086,0.2647409737110138,-0.9824638962745667,0.9999460577964783,-0.45677345991134644,-0.38859984278678894,-0.8292840719223022,-0.005491673946380615,0.7382622957229614,0.09618281573057175,0.6157180070877075,1.0295312404632568,0.023550134152173996,-1.6385056972503662,-1.2619620561599731,0.07304394245147705,-0.06840911507606506,-1.0610004663467407,-0.6645064353942871,-0.8153526782989502,0.8966238498687744,-1.5425227880477905,-1.2509379386901855,1.1576364040374756,-0.5344998240470886,0.5227556228637695,0.39142024517059326,-1.5173358917236328,0.656743049621582,0.554728627204895,0.4264308512210846,0.25932103395462036,0.2396654188632965,-0.5763992071151733,0.36714881658554077,-0.6128922700881958,-0.111339271068573,0.9324719905853271,-0.34982404112815857,-0.1796116977930069,-0.6884113550186157,-0.20354366302490234,0.30305734276771545,0.29488110542297363,0.5040866732597351,1.5871877670288086,0.009325975552201271,0.987169623374939,0.7897540330886841,0.21686097979545593,0.6583410501480103,1.6159051656723022,-0.4601771831512451,0.6951206922531128,1.3456039428710938,0.06288732588291168,0.7118212580680847,-0.8056425452232361,0.27275532484054565,0.3813910484313965,1.0242270231246948,0.14326871931552887,-0.05659397691488266,0.2801011800765991,0.048041947185993195,0.38376471400260925,0.4748428165912628,-0.5916394591331482,-0.2089501917362213,1.1938042640686035,-0.5420145988464355,1.9747247695922852,-0.6870943903923035,1.1687809228897095,0.5587100982666016,-0.007252035662531853,0.685484766960144,0.6833534836769104,0.38507887721061707,-0.695202648639679,0.4743543267250061,-0.1334955096244812,0.5956460237503052,0.7862718105316162,-0.8968833684921265,0.9741674065589905,-0.8000143766403198,-1.0461399555206299,-0.20715442299842834,0.5553405284881592,0.4278690218925476,-0.4005158543586731,-1.4901738166809082,-0.17319266498088837,-0.20165491104125977,-1.1152273416519165,-0.4350237548351288,1.1485729217529297,1.2929883003234863,-1.762764811515808,-0.15558116137981415,-1.0937422513961792,-0.43047064542770386,-0.321791410446167,-0.12024664878845215,-0.22734379768371582,0.5600617527961731,-0.3252902626991272,-0.35526224970817566,0.12875017523765564,0.14851775765419006,-0.25755029916763306,-0.5035961866378784,0.31384754180908203,-0.5569375157356262,0.534613847732544,0.9152207374572754,-0.0031408630311489105,0.2144937366247177,-1.0354678630828857,-0.20500531792640686,-0.28645384311676025,-0.7403791546821594,0.7579309344291687,0.1834549605846405,0.38255181908607483,0.07914049178361893,-0.26099538803100586,-0.7057366371154785,-0.2687780261039734,-0.8526152968406677,1.090847134590149,0.2677750885486603,0.1926111876964569,-0.6477405428886414,-1.245110273361206,0.43625280261039734,0.1889190375804901,-0.5119461417198181,0.685589075088501,0.021328363567590714,0.44654613733291626,-0.015781400725245476,0.3597427308559418,-0.49003201723098755,-1.147721767425537,-0.4693222641944885,-0.6146681308746338,-0.2536124587059021,-1.2240231037139893,-0.3984963595867157,-0.035470977425575256,0.3573286533355713,-1.3010010719299316,1.1138978004455566,-0.4879891872406006,-0.45147672295570374,0.42689254879951477,-0.5531646013259888,-0.7595297694206238,-0.48930561542510986,-1.2193936109542847,-0.03646070137619972,0.6085262298583984,-0.15792402625083923,-1.5300654172897339,1.1301020383834839,0.9360635280609131,0.5175453424453735,0.7953710556030273,-0.14992718398571014,-2.242547035217285,-0.007441490888595581,0.03868390992283821,0.43549180030822754,0.07086608558893204,0.36889025568962097,0.278085857629776,1.4762845039367676,1.0896620750427246,0.1874150037765503,-0.43659308552742004,0.9285088181495667,0.359994113445282,0.22209814190864563,0.5441240072250366,0.4201962351799011,-1.0685515403747559,0.052661553025245667,-0.22051043808460236,-0.42410820722579956,-0.23336409032344818,-1.2046130895614624,0.5271250009536743,-0.35314273834228516,-0.19294847548007965,0.29456183314323425,1.7017501592636108,1.124868392944336,-1.427431344985962,-0.5897367596626282,-1.2265989780426025,1.4705865383148193,2.43519926071167,0.3017994463443756,-2.2074050903320312,-0.8146705031394958,0.3940669000148773,-0.3699454069137573,-1.0259705781936646,0.8733479380607605,1.6584373712539673,1.854499101638794,-0.12134882062673569,-0.5762386918067932,0.4769596755504608,1.0809565782546997,1.7736433744430542,0.611369252204895,0.14179174602031708,-0.14363059401512146,-0.0768827423453331,0.28492191433906555,-0.2509063482284546,-0.15430650115013123,-0.1339089572429657,0.13070771098136902,0.6602044105529785,-1.1284618377685547,-0.22847896814346313,0.36104127764701843,-0.6920824646949768,-1.21451997756958,0.0898507758975029,-1.4317827224731445,-0.06791216135025024,0.7147699594497681,1.1361980438232422,0.47086820006370544,0.7374725937843323,-0.311487078666687,-0.9141111969947815,-0.5672876834869385,1.6384942531585693,0.1923980414867401,0.34681642055511475,0.3320661783218384,-0.6184331774711609,0.5665132403373718,-0.7139265537261963,0.2172793596982956,-0.19448232650756836,0.4698663353919983,-0.3608713448047638,0.26833057403564453,-0.5503847599029541,0.06593833118677139,0.050809912383556366,0.04934351518750191,0.443372517824173,0.5055491328239441,0.3853088319301605,-0.553620457649231,0.3864809274673462,0.7187691926956177,-0.7916120886802673,-0.28928709030151367,1.2794402837753296,-0.49785295128822327,-1.690543532371521,1.5130430459976196,0.18752232193946838,-0.07526274025440216,-1.0345567464828491,-0.32903754711151123,0.9245283603668213,-0.5244737863540649,-0.26772966980934143,0.5532608032226562,-0.6308310627937317,-0.41568857431411743,0.192485049366951,-0.8591070175170898,1.117379069328308,-0.06073032692074776,-0.7619264125823975,0.4648423194885254,0.34083276987075806,0.039908573031425476,0.2524356245994568,-0.6397166848182678,-0.7186207175254822,0.6761427521705627,-0.495867520570755,-0.2957354187965393,0.9929589033126831,-0.003059063106775284,0.8929554224014282,0.02170231007039547,0.5074197053909302,0.4579066336154938,-0.007418248802423477,-0.26100099086761475,0.23581066727638245,-1.4128870964050293,0.33322983980178833,1.376550316810608,-0.41847988963127136,0.6501562595367432,-0.9170938730239868,0.5238574147224426,0.24851641058921814,1.1796029806137085,-0.5514514446258545,0.13276490569114685,-0.3508771061897278,-1.186322808265686,0.1123272106051445,0.11802485585212708,0.2792990803718567,0.1932956725358963,0.1797236204147339,1.1080105304718018,-1.3916685581207275,-0.028988488018512726,0.4554978907108307,0.37476545572280884,0.01499694213271141,-0.03842337802052498,-0.40181633830070496,-0.5230839848518372,-0.5276205539703369,-0.1404138207435608,0.3534380793571472,0.20086286962032318,0.1265084147453308,-1.0574681758880615,-0.44801652431488037,1.1767895221710205,0.060725223273038864,1.156095266342163,-0.04782982915639877,-0.32177504897117615,-0.4658099412918091,0.22990092635154724,-1.1256799697875977,1.7599365711212158,-1.014540433883667,-0.4612731337547302,-0.2580401599407196,-0.5997004508972168,-0.8200098872184753,-0.2702450752258301,-1.0805045366287231,-0.2652173340320587,-0.9878853559494019,-1.8133832216262817,-0.07142071425914764,0.4499768018722534,-0.7349036931991577,1.0541999340057373,-1.0218571424484253,0.32496947050094604,0.38203516602516174,-0.10084941983222961,-0.9651745557785034,0.34730929136276245,-0.29552993178367615,0.37116697430610657,-0.4135858118534088,0.12287530303001404,-0.17716780304908752,0.07624395191669464,-1.2881388664245605,1.3642770051956177,-0.07242320477962494,0.7137618064880371,-2.0167295932769775,-0.12958091497421265,-1.9637391567230225,0.37120431661605835,-1.1135913133621216,1.1649090051651,-0.9577018022537231,-1.1605116128921509,-1.1161413192749023,0.7973802089691162,0.725649356842041,-0.07357807457447052,0.8201191425323486,-0.24960680305957794,-0.3990001380443573,-0.06323541700839996,0.4308834373950958,-0.2279161512851715,0.6405664682388306,0.5949374437332153,0.5161832571029663,0.2944585680961609,1.0152395963668823,0.34974971413612366,-0.4346923530101776,1.0104600191116333,-0.15703552961349487,1.1755988597869873,-0.4625154137611389,0.038168054074048996,-0.8857408761978149,1.29044508934021,0.7273467779159546,0.551577091217041,-0.9666677713394165,0.6102562546730042,-0.4812222123146057,0.5419994592666626,0.14762137830257416,-0.4700641632080078,-2.068753719329834,-1.057124137878418,-0.09908923506736755,-2.1731584072113037,0.18170759081840515,0.6767982244491577,-0.539772629737854,0.2862907350063324,-0.5599069595336914,-1.782150149345398,0.13367867469787598,-0.8155393600463867,0.5427301526069641,-0.426263689994812,-0.4515812397003174,-0.014414411038160324,-0.2366878092288971,0.42549335956573486,0.8465206623077393,0.5117866396903992,-0.07615885138511658,0.9350349307060242,0.9119160175323486,-0.30355405807495117,-0.26843664050102234,-0.30765247344970703,-0.21004796028137207,-0.4186844229698181,-0.2829710841178894,0.6270721554756165,-2.465914249420166,0.43892163038253784,0.3952021896839142,-1.2573139667510986,-1.555622935295105,0.49084600806236267,-0.6943134665489197,0.3407479226589203,-0.6433624029159546,0.40619534254074097,-0.4007031321525574,-1.173006296157837,-0.11225155740976334,0.3792665898799896,0.8458161354064941,0.13303595781326294,-0.9427300095558167,0.48553359508514404,-0.4482620060443878,-0.21637402474880219,-0.08169276267290115,-0.3077913820743561,0.5727307200431824,0.35423994064331055,0.9982998967170715,0.11067429929971695,0.37933406233787537,-0.10633593797683716,0.26839879155158997,-0.6069013476371765,1.0168105363845825,0.8137241005897522,-0.3675660490989685,-0.6235893964767456,-1.460611343383789,-0.04149287939071655,-0.4192575216293335,0.6581112742424011,-1.4603354930877686,-0.09662415087223053,-0.6553117632865906,0.11036783456802368,1.014018177986145,-0.2577196955680847,0.5036007165908813,-0.34895986318588257,-0.8150458335876465,-0.5782333016395569,0.14164850115776062,-0.045449115335941315,-0.30580106377601624,-1.2989492416381836,0.24294884502887726,0.20173799991607666,0.3297150731086731,0.01728317141532898,-0.45367631316185,0.29591330885887146,0.5287966132164001,1.4786059856414795,-0.3651050925254822,0.44642066955566406,0.2279335856437683,-0.1619456559419632,0.347711443901062,0.42738205194473267,0.6878538727760315,0.4376688301563263,-0.0214751735329628,2.0361337661743164,-0.053912170231342316,0.458416223526001,-0.21915140748023987,0.34066179394721985,0.70799320936203,-1.1498903036117554,-0.14846456050872803,-0.5520614385604858,0.46919533610343933]}
                      很多人对向量化很陌生,其实就是得到了上面所示的一个高维向量。有了向量之后,我们需要把向量存储到向量数据库。这里选取qdrant,同样部署到docker里面,其中6333和6334分别对应http端口和grpc端口
                        docker run -d -p 6333:6333 -p 6334:6334 \
                        -v /learn/langchain/qdrant/storage:/qdrant/storage \
                        qdrant/qdrant:latest


                                     _                 _
                            __ _  __| |_ __ __ _ _ __ | |_
                           / _` |/ _` | '__/ _` | '_ \| __|
                          | (_| | (_| | | | (_| | | | | |_
                           \__, |\__,_|_|  \__,_|_| |_|\__|
                              |_|
                          Version1.13.6build: 4db98ecd
                          Access web UI at http://localhost:6333/dashboard
                                  进入后台看看下http://localhost:6333/dashboard#/welcome
                                  根据里面的quick start,我们可以快速创建集合charts,并在charts里面插入点向量
                            PUT collections/star_charts
                            {
                              "vectors": {
                                "size": 4,
                                "distance""Dot"
                              }
                            }
                            创建集合返回如下
                              {
                                "result": true,
                                "status": "ok",
                                "time": 11.794904818
                              }
                              往集合里加入点
                                PUT collections/star_charts/points
                                {
                                  "points": [
                                    {
                                      "id": 1,
                                      "vector": [0.05, 0.61, 0.76, 0.74],
                                      "payload": {
                                        "colony""Mars"
                                      }
                                    },
                                    {
                                      "id": 2,
                                      "vector": [0.19, 0.81, 0.75, 0.11],
                                      "payload": {
                                        "colony""Jupiter"
                                      }
                                    },
                                    {
                                      "id": 3,
                                      "vector": [0.36, 0.55, 0.47, 0.94],
                                      "payload": {
                                        "colony""Venus"
                                      }
                                    },
                                    {
                                      "id": 4,
                                      "vector": [0.18, 0.01, 0.85, 0.80],
                                      "payload": {
                                        "colony""Moon"
                                      }
                                    },
                                    {
                                      "id": 5,
                                      "vector": [0.24, 0.18, 0.22, 0.44],
                                      "payload": {
                                        "colony""Pluto"
                                      }
                                    }
                                  ]
                                }
                                  {
                                    "result": {
                                      "operation_id": 0,
                                      "status": "acknowledged"
                                    },
                                    "status": "ok",
                                    "time": 0.052241224
                                  }
                                  检索我们的向量
                                    POST collections/star_charts/points/search
                                    {
                                      "vector": [0.2, 0.1, 0.9, 0.7],
                                      "limit": 3,
                                      "with_payload"true
                                    }
                                    返回如下
                                      {
                                        "result": [
                                          {
                                            "id": 4,
                                            "version": 0,
                                            "score": 1.362,
                                            "payload": {
                                              "colony": "Moon"
                                            }
                                          },
                                          {
                                            "id": 1,
                                            "version": 0,
                                            "score": 1.273,
                                            "payload": {
                                              "colony": "Mars"
                                            }
                                          },
                                          {
                                            "id": 3,
                                            "version": 0,
                                            "score": 1.208,
                                            "payload": {
                                              "colony": "Venus"
                                            }
                                          }
                                        ],
                                        "status": "ok",
                                        "time": 0.156498077
                                      }
                                      当然也可以加载官方的数据库实例
                                        PUT /collections/midjourney/snapshots/recover
                                        {
                                          "location""http://snapshots.qdrant.io/midlib.snapshot"
                                        }
                                          {
                                            "result": true,
                                            "status": "ok",
                                            "time": 40.917713856
                                          }
                                          加载完成后,可以到后台去查看,详情如下:
                                          当然,我们也可以通过命令,自己创建collections
                                             curl -X PUT http://localhost:6333/collections/langchaingo-ollama-rag \
                                              -H 'Content-Type: application/json' \
                                              --data-raw '{
                                                "vectors": {
                                                  "size"768,
                                                  "distance""Dot"
                                                }
                                              }'
                                              {"result":true,"status":"ok","time":130.206360552}
                                              至此,rag环境搭建完毕。
                                                  

                                              文章转载自golang算法架构leetcode技术php,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                              评论