AI- இயங்கும் சாட்போட்களுக்கான வெக்டர் தரவு புதுப்பிப்புகளை சீரமைத்தல்
குறிப்பாக CosmosDB இல் வெக்டார் உட்பொதிப்புகளை நிர்வகிக்கும் போது, அதன் அறிவுத் தளமாக மார்க் டவுன் கோப்புகளை மேம்படுத்தும் சாட்போட்டை உருவாக்குவது சிறிய சாதனையல்ல. மேம்பட்ட நினைவக சேமிப்பகத்திற்காக Azure CosmosDB உடன் சொற்பொருள் கர்னலை ஒருங்கிணைக்கும் டெவலப்பர்களுக்கு இந்த சவால் அடிக்கடி எழுகிறது. 💡
புதிய மார்க் டவுன் கோப்புகள் மற்றும் அவற்றுடன் தொடர்புடைய திசையன்களைச் சேமிப்பது நேரடியானதாகத் தோன்றினாலும், இந்த வெக்டார்களைப் புதுப்பிப்பது ஒரு தனித்துவமான சிக்கலை அளிக்கிறது. மேம்படுத்தப்பட்ட மார்க் டவுன் உள்ளடக்கம், ஏற்கனவே உள்ளவற்றை மேலெழுதுவதற்குப் பதிலாக தரவுத்தளத்தில் நகல் உள்ளீடுகளுக்கு வழிவகுக்கும் சூழ்நிலைகளை டெவலப்பர்கள் அடிக்கடி சந்திக்கின்றனர்.
ஒரு நிஜ உலக சூழ்நிலையில், ஒரு டெவலப்பர் ஒரு போட் செயல்படுத்தினார், இது மார்க் டவுன் கோப்புகளை காஸ்மோஸ்ட்பில் திசையன்களாக சேமித்தது. இருப்பினும், கோப்புகளைப் புதுப்பிக்க முயற்சிக்கும்போது, தற்போதுள்ளவற்றை மாற்றியமைப்பதற்குப் பதிலாக புதிய உருப்படிகள் உருவாக்கப்படுவதை அவர்கள் கவனித்தனர், இதனால் தரவு நகல் மற்றும் திறமையின்மை ஏற்படுகிறது.
இந்தச் சிக்கலை எவ்வாறு திறம்பட நிவர்த்தி செய்வது என்பது பற்றி இந்தக் கட்டுரை முழுக்க முழுக்க, முழு திசையன் மறு உருவாக்கத்தைத் தவிர்த்து, தேவையான பகுதிகளை மட்டும் CosmosDB புதுப்பிப்பதை உறுதி செய்கிறது. சரியான நுட்பங்கள் மூலம், உங்கள் சாட்போட்டுக்கான நெறிப்படுத்தப்பட்ட, துல்லியமான நினைவகக் சேமிப்பை நீங்கள் பராமரிக்கலாம்-நேரம் மற்றும் வளங்களைச் சேமிக்கலாம். 🚀
| கட்டளை | பயன்பாட்டின் உதாரணம் |
|---|---|
| WithMemoryStore() | மெமரி ஸ்டோர் கட்டமைக்கப் பயன்படுகிறது, இந்த விஷயத்தில், அஸூர் காஸ்மோஸ்டிபி. இது தரவுத்தள இறுதிப்புள்ளி, விசை, உட்பொதித்தல் பரிமாணங்கள் மற்றும் குறியீட்டு வகை போன்ற அளவுருக்களைக் குறிப்பிடுகிறது. |
| VectorIndexType.DiskANN | CosmosDB இல் பயன்படுத்த திசையன் குறியீட்டு வகையை வரையறுக்கிறது. டிஸ்கான் என்பது பெரிய தரவுத்தொகுப்புகளுக்கு ஏற்ற உயர் செயல்திறன் கொண்ட தோராயமான அருகிலுள்ள அண்டை வழிமுறையாகும். |
| SaveInformationAsync() | CosmosDB இல் குறிப்பிட்ட சேகரிப்பில் புதிய நினைவகப் பதிவைச் சேமிக்கிறது. இந்தச் செயல்பாடு ஒரு உரை, விளக்கம் மற்றும் மீட்டெடுப்பதற்கான அடையாளங்காட்டியைச் சேர்க்க அனுமதிக்கிறது. |
| GetAsync() | CosmosDB இலிருந்து ஏற்கனவே உள்ள நினைவகப் பதிவை அதன் தனித்துவமான அடையாளங்காட்டி மூலம் மீட்டெடுக்கிறது. மாற்றங்களைச் செய்வதற்கு முன் பதிவு ஏற்கனவே உள்ளதா என்பதைச் சரிபார்க்க இது உதவுகிறது. |
| RemoveAsync() | காஸ்மோஸ்டிபியிலிருந்து ஏற்கனவே உள்ள பதிவை நீக்குகிறது. தரவைப் புதுப்பிப்பதற்கு முன் நகல் உள்ளீடுகள் எதுவும் இல்லை என்பதை உறுதிப்படுத்த இது பயனுள்ளதாக இருக்கும். |
| UpsertItemAsync() | ஒரு CosmosDB SDK கட்டளை தரவுத்தளத்தில் ஒரு ஆவணத்தை செருகும் அல்லது புதுப்பிக்கும். ஆவணம் இருந்தால், அது புதுப்பிக்கப்படும்; இல்லையெனில், ஒரு புதிய ஆவணம் உருவாக்கப்பட்டது. |
| PartitionKey | CosmosDB இல் ஒரு ஆவணத்திற்கான பகிர்வு விசையைக் குறிப்பிடுகிறது. தரவுத்தளத்தில் தரவை திறம்பட ஒழுங்கமைக்கவும் வினவவும் இது மிகவும் முக்கியமானது. |
| Mock<T>() | அலகு சோதனைக்கு போலி பொருள்களை உருவாக்க பயன்படுத்தப்படும் MOQ நூலகத்தின் அம்சம். இந்த எடுத்துக்காட்டில், சொற்பொருள் உரை நினைவகத்தின் நடத்தையை உருவகப்படுத்த இது பயன்படுத்தப்படுகிறது. |
| Verify() | ஒரு சோதனையின் போது போலி பொருளின் ஒரு குறிப்பிட்ட செயல்பாடு அழைக்கப்படுவதை உறுதி செய்வதற்கான MOQ இல் ஒரு முறை. தரவைச் சேமிப்பது அல்லது அகற்றுவது போன்ற எதிர்பார்க்கப்படும் செயல்கள் நிகழ்ந்தன என்பதை உறுதிப்படுத்த இது உதவுகிறது. |
| Times.Once | யூனிட் சோதனையின் போது ஒரு முறை எத்தனை முறை அழைக்கப்பட வேண்டும் என்று எதிர்பார்க்கப்படும் எண்ணிக்கையைக் குறிப்பிடுகிறது. இங்கே, SaveInformationAsync போன்ற முக்கிய செயல்பாடுகள் சரியாக ஒருமுறை செயல்படுத்தப்படுவதை இது உறுதி செய்கிறது. |
செமாண்டிக் கெர்னலுடன் காஸ்மோஸ்டிபியில் வெக்டர் புதுப்பிப்புகளை மேம்படுத்துதல்
மேலே வழங்கப்பட்ட ஸ்கிரிப்டுகள் CosmosDB உடன் நினைவக ஸ்டோரை நிர்வகிப்பதற்கான பொதுவான சவாலை எதிர்கொள்கின்றன: உள்ளீடுகளை நகலெடுக்காமல் திசையன் தரவை திறம்பட புதுப்பித்தல். முதல் தீர்வு செமாண்டிக் கெர்னலின் உள்ளமைக்கப்பட்ட நினைவக மேலாண்மை செயல்பாடுகளைப் பயன்படுத்துகிறது SaveInformationasync மற்றும் Removeasync. ஒவ்வொரு மார்க் டவுன் கோப்பின் திசையன் பிரதிநிதித்துவமும் சரியாக புதுப்பிக்கப்படுவதை இந்த கட்டளைகள் உறுதி செய்கின்றன. சேகரிப்பில் திசையன் ஏற்கனவே இருக்கிறதா என்பதை முதலில் சரிபார்க்கிறது Getasync. கண்டுபிடிக்கப்பட்டால், புதிய வெக்டரைச் சேமிப்பதற்கு முன், ஸ்கிரிப்ட் காலாவதியான உள்ளீட்டை நீக்குகிறது, இதனால் நகல்களைத் தடுக்கிறது. தங்கள் தரவுத்தளத்தில் சுத்தமான மற்றும் துல்லியமான தரவைப் பராமரிக்கும் போது, சொற்பொருள் கர்னலுடன் தடையற்ற ஒருங்கிணைப்பை விரும்புவோருக்கு இந்த அணுகுமுறை சிறந்தது. 💻
இரண்டாவது தீர்வு, திசையன்களை நிர்வகிக்க CosmosDB SDK ஐ நேரடியாகப் பயன்படுத்துகிறது. இந்த முறை மிகவும் பல்துறை, மேம்படுத்தல் தர்க்கத்தின் மீது மேம்பட்ட கட்டுப்பாட்டை அனுமதிக்கிறது. உதாரணமாக, UpsertItemAsync ஒரே செயல்பாட்டில் தரவுத்தளத்தில் ஒரு ஆவணத்தை மாற்ற அல்லது சேர்க்க பயன்படுத்தப்படுகிறது. குறிப்பிடுவதன் மூலம் பகிர்வு விசை, ஸ்கிரிப்ட் திறமையான வினவல்களை உறுதி செய்கிறது மற்றும் தேவையற்ற தரவுத்தள மேல்நிலையைத் தடுக்கிறது. இந்த அணுகுமுறை டெவலப்பர்கள் தங்கள் தரவுத்தள செயல்பாடுகளைத் தனிப்பயனாக்க விரும்பும் டெவலப்பர்களுக்கு மிகவும் பயனுள்ளதாக இருக்கும், இது விளிம்பு நிலைகளைக் கையாளும் அல்லது கூடுதல் பாதுகாப்பு நடவடிக்கைகளைச் செயல்படுத்தும் திறனை அவர்களுக்கு வழங்குகிறது.
இரண்டு தீர்வுகளின் செயல்பாட்டை சரிபார்ப்பதில் அலகு சோதனை முக்கிய பங்கு வகிக்கிறது. மேலே உள்ள எடுத்துக்காட்டில், நினைவக மேலாண்மை அமைப்பின் நடத்தையை உருவகப்படுத்த Moq பயன்படுத்தப்படுகிறது, எதிர்பார்க்கப்படும் அனைத்து செயல்பாடுகளும் சரியாக நடைபெறுவதை உறுதி செய்கிறது. உதாரணமாக, சரிபார்க்கவும் செயல்பாடுகள் போன்றவற்றை உறுதிப்படுத்த பயன்படுகிறது Removeasync மற்றும் SaveInformationAsync உரிய நேரத்தில் அழைக்கப்படுகின்றனர். புதிய மார்க் டவுன் கோப்பை புதுப்பித்தல் அல்லது செருகுவது போன்ற பல்வேறு நிபந்தனைகளின் கீழ் கணினி செயல்படுவதை இது உறுதி செய்கிறது. 🧪
எல்லாவற்றையும் ஒன்றாக இணைக்க, இந்த தீர்வுகள் மட்டுப்படுத்தல் மற்றும் சிறந்த நடைமுறைகளின் முக்கியத்துவத்தை வலியுறுத்துகின்றன. ஒவ்வொரு செயல்பாட்டையும் குறிப்பிட்ட செயல்பாடுகளில் தனிமைப்படுத்துவதன் மூலம் (எ.கா., வெக்டார்களைப் புதுப்பித்தல் அல்லது அகற்றுதல்), டெவலப்பர்கள் மற்ற பயன்பாட்டு நிகழ்வுகளுக்கு குறியீட்டை எளிதாக மீண்டும் பயன்படுத்தலாம் அல்லது மாற்றியமைக்கலாம். மேலும், பிழை கையாளுதல் மற்றும் சரிபார்த்தல் ஆகியவை உற்பத்தி சூழல்களில் தீர்வுகள் வலுவாக இருப்பதை உறுதி செய்கின்றன. எடுத்துக்காட்டாக, புதுப்பிப்பின் போது ஐடி பொருத்தமின்மை ஏற்பட்டால், ஸ்கிரிப்ட் பிழையை அழகாகக் கையாளுகிறது, தரவு சிதைவைத் தடுக்கிறது. Semantic Kernel இன் உள்ளமைக்கப்பட்ட கருவிகள் அல்லது CosmosDB SDK ஐப் பயன்படுத்தினாலும், இந்த தீர்வுகள் AI- இயக்கப்படும் பயன்பாடுகளுக்கு உகந்த மற்றும் நம்பகமான நினைவக சேமிப்பை பராமரிக்க டெவலப்பர்களுக்கு அதிகாரம் அளிக்கின்றன. 🚀
சொற்பொருள் கர்னலைப் பயன்படுத்தி COSMOSDB இல் திசையன் தரவு புதுப்பிப்புகளை நிர்வகித்தல்
இந்த தீர்வு C# ஐ பின்தளத்தில் செயல்படுத்த பயன்படுத்துகிறது, செமாண்டிக் கெர்னலுடன் CosmosDB இல் திறமையான தரவு கையாளுதலில் கவனம் செலுத்துகிறது.
// Import necessary namespacesusing Microsoft.SemanticKernel.Memory;using Microsoft.SemanticKernel.Connectors.Memory.AzureCosmosDB;using System.Threading.Tasks;using System;// Define the memory builder and initialize the semantic memoryISemanticTextMemory semanticTextMemory = new MemoryBuilder().WithTextEmbeddingGeneration(kernel.GetRequiredService<ITextEmbeddingGenerationService>()).WithMemoryStore(new AzureCosmosDBNoSQLMemoryStore("your-endpoint","your-key",1536,VectorDataType.Float32,VectorIndexType.DiskANN)).Build();// Define a function to update a vector in CosmosDBpublic async Task UpdateVectorAsync(string collection, string id, string content, string description){var existingItem = await semanticTextMemory.GetAsync(collection, id);if (existingItem != null){await semanticTextMemory.RemoveAsync(collection, id);}await semanticTextMemory.SaveInformationAsync(collection, id: id, text: content, description: description);}// Usage exampleawait UpdateVectorAsync("collection", "markdown-file-path", "updated content", "updated description");
மாற்று தீர்வு: நேர்த்தியான கட்டுப்பாட்டுக்கு COSMOSDB SDK ஐப் பயன்படுத்துதல்
தனிப்பயன் ஐடிகளின் அடிப்படையில் ஆவணங்களை நேரடியாகப் புதுப்பிக்க இந்த அணுகுமுறை Azure CosmosDB SDKஐப் பயன்படுத்துகிறது.
// Import necessary namespacesusing Microsoft.Azure.Cosmos;using System.Threading.Tasks;using System;// Initialize Cosmos client and containervar cosmosClient = new CosmosClient("your-endpoint", "your-key");var container = cosmosClient.GetContainer("database-name", "collection-name");// Define a function to update or insert a vectorpublic async Task UpsertVectorAsync(string id, string content, string description){var item = new{id = id,text = content,description = description};await container.UpsertItemAsync(item, new PartitionKey(id));}// Usage exampleawait UpsertVectorAsync("markdown-file-path", "updated content", "updated description");
சரியான தன்மையை உறுதிப்படுத்த அலகு சோதனைகளைச் சேர்ப்பது
இந்த C# அலகு சோதனை தீர்வு திசையன்களை துல்லியமாக புதுப்பிக்கிறது.
// Import testing librariesusing Xunit;using Moq;using System.Threading.Tasks;// Define a test classpublic class VectorUpdateTests{[Fact]public async Task UpdateVector_ShouldReplaceExistingVector(){// Mock the semantic text memoryvar mockMemory = new Mock<ISemanticTextMemory>();mockMemory.Setup(m => m.GetAsync("collection", "test-id")).ReturnsAsync(new MemoryRecord("test-id", "old content", "old description"));mockMemory.Setup(m => m.SaveInformationAsync("collection", "test-id", "new content", "new description")).Returns(Task.CompletedTask);var service = new YourServiceClass(mockMemory.Object);await service.UpdateVectorAsync("collection", "test-id", "new content", "new description");// Verify behaviormockMemory.Verify(m => m.RemoveAsync("collection", "test-id"), Times.Once);mockMemory.Verify(m => m.SaveInformationAsync("collection", "test-id", "new content", "new description"), Times.Once);}}
மெட்டாடேட்டா உத்திகளுடன் வெக்டர் தரவு புதுப்பிப்புகளை மேம்படுத்துதல்
திசையன் தரவை நிர்வகிப்பதில் பெரும்பாலும் கவனிக்கப்படாத ஒன்று காஸ்மோஸ்டிபி பதிவுகளை திறம்பட அடையாளம் காணவும் புதுப்பிக்கவும் மெட்டாடேட்டாவின் பயன்பாடு. ஐடிகள் அல்லது பாதைகளை மட்டுமே நம்புவதற்கு பதிலாக, நேர முத்திரைகள், பதிப்பு எண்கள் அல்லது உள்ளடக்கத்திற்கான ஹாஷ் மதிப்புகள் போன்ற மெட்டாடேட்டாவை இணைப்பது புதுப்பிப்புகளை கணிசமாக மேம்படுத்தும். உதாரணமாக, மார்க் டவுன் கோப்பு புதுப்பிக்கப்படும்போது, மாற்றங்களைக் கண்டறிய உள்ளடக்க ஹாஷ் உருவாக்கப்படலாம். இந்த வழியில், உள்ளடக்கம் மாற்றியமைக்கப்பட்டிருந்தால் மட்டுமே கணினி திசையனை புதுப்பிக்கிறது, தேவையற்ற செயல்பாடுகளைத் தவிர்த்து, தரவுத்தள சுமைகளைக் குறைக்கிறது. .
மற்றொரு முக்கிய மூலோபாயம் காஸ்மோஸ்டிபியின் உள்ளமைக்கப்பட்ட அட்டவணைப்படுத்தல் திறன்களை மேம்படுத்துவதை உள்ளடக்குகிறது. தனிப்பயனாக்குவதன் மூலம் பகிர்வு விசைகள் மற்றும் குறியீட்டு கொள்கைகள், டெவலப்பர்கள் திசையன் தரவை விரைவாக தேட அனுமதிக்கும் ஒரு கட்டமைப்பை உருவாக்க முடியும். எடுத்துக்காட்டாக, திசையன்களை அவற்றின் மூலக் கோப்பு அல்லது வகையின் மூலம் பகிர்வு விசையாகக் குழுவாக்குவது வினவல்களை மிகவும் திறம்படச் செய்யும். கூடுதலாக, நேர முத்திரைகள் அல்லது உள்ளடக்க வகைகள் போன்ற அடிக்கடி வினவப்படும் புலங்களில் கூட்டு அட்டவணைப்படுத்தலை இயக்குவது செயல்திறனை மேலும் மேம்படுத்தலாம்.
கடைசியாக, கேச்சிங் உத்திகள் வெக்டார் புதுப்பிப்புகளை நிறைவுசெய்யும், குறிப்பாக ஒரே தரவை அடிக்கடி அணுகும் சாட்போட்களுக்கு. ரெடிஸ் போன்ற கேச்சிங் லேயரை ஒருங்கிணைப்பதன் மூலம், பயன்பாடு காஸ்மோஸ்டிபியை மீண்டும் மீண்டும் வினவாமல் பதில்களை வழங்க முடியும். இது பதில்களை விரைவுபடுத்துவது மட்டுமல்லாமல் தரவுத்தள பரிவர்த்தனைகளைக் குறைப்பதன் மூலம் செலவுகளையும் குறைக்கிறது. இந்த உத்திகளை இணைப்பது, அறிவு சார்ந்த சாட்போட்கள் போன்ற AI- இயக்கப்படும் பயன்பாடுகளுக்கான வெக்டர் தரவை நிர்வகிப்பதற்கான அளவிடக்கூடிய மற்றும் திறமையான அணுகுமுறையை உறுதி செய்கிறது. 🚀
COSMOSDB இல் திசையன் தரவைப் புதுப்பிப்பது பற்றிய பொதுவான கேள்விகள்
- இதன் நோக்கம் என்ன SaveInformationAsync சொற்பொருள் கர்னலில்?
- இது எதிர்கால மீட்டெடுப்பிற்காக திசையன் உட்பொதித்தல் மற்றும் மெட்டாடேட்டா உள்ளிட்ட காஸ்மோஸ்ட்பியில் ஒரு புதிய நினைவக பதிவை சேமிக்கிறது.
- காஸ்மோஸ்டிபியில் நகல் உள்ளீடுகளை நான் எவ்வாறு தவிர்ப்பது?
- பயன்படுத்தவும் GetAsync ஏற்கனவே உள்ள பதிவை சரிபார்க்க, பின்னர் அழைக்கவும் RemoveAsync புதுப்பிக்கப்பட்ட தரவைச் சேமிப்பதற்கு முன்.
- அவை அனைத்தையும் மீண்டும் உருவாக்காமல் திசையன்களைப் புதுப்பிக்க முடியுமா?
- ஆம், தனிப்பட்ட ஐடிகள் அல்லது நேர முத்திரைகள் போன்ற மெட்டாடேட்டா மூலம் பதிவுகளை அடையாளம் கண்டு, மாற்றப்பட்ட பகுதிகளை மட்டும் பயன்படுத்தி புதுப்பிக்கவும் UpsertItemAsync.
- COSMOSDB இல் பகிர்வு என்ன பங்கு வகிக்கிறது?
- கோப்பு பாதைகள் அல்லது வகைகள் போன்ற பகிர்வு விசைகள், தொடர்புடைய தரவை தர்க்கரீதியாக தொகுப்பதன் மூலம் வினவல் செயல்திறனை மேம்படுத்துகிறது.
- எனது குறியீட்டில் புதுப்பிப்புகளை எவ்வாறு சரிபார்க்கலாம்?
- நினைவக புதுப்பிப்புகளை உருவகப்படுத்த MOQ போன்ற நூலகங்களைப் பயன்படுத்தி அலகு சோதனைகளை செயல்படுத்தவும், அந்த முறைகள் போன்ற முறைகளை சரிபார்க்கவும் SaveInformationAsync மற்றும் RemoveAsync எதிர்பார்த்தபடி வேலை.
நம்பகமான நினைவக நிர்வாகத்திற்கான திசையன் புதுப்பிப்புகளை நெறிப்படுத்துதல்
காஸ்மோஸ்டிபியில் திசையன் தரவை திறம்பட புதுப்பித்தல், சாட்போட்கள் மற்றும் ஒத்த பயன்பாடுகளுக்கான அளவிடக்கூடிய மற்றும் நம்பகமான நினைவக ஸ்டோரை பராமரிப்பதற்கு முக்கியமானது. செமாண்டிக் கெர்னல் கட்டளைகளை சரியான மேம்படுத்தல் உத்திகளுடன் பயன்படுத்துவது தேவையற்ற செயல்பாடுகளை குறைக்கும் போது தரவு நிலைத்தன்மையை உறுதி செய்கிறது. இந்த கலவையானது ஒட்டுமொத்த கணினி செயல்திறனை மேம்படுத்துகிறது. 🤖
பகிர்வு விசைகள், உள்ளடக்க ஹாஷ்கள் மற்றும் கேச்சிங் போன்ற மேம்பட்ட அம்சங்களை இணைப்பது செயல்முறையை மேலும் மேம்படுத்துகிறது, விரைவான வினவல்கள் மற்றும் நெறிப்படுத்தப்பட்ட தரவு கையாளுதலை செயல்படுத்துகிறது. இந்த சிறந்த நடைமுறைகள், உங்கள் CosmosDB செயல்படுத்தல் செயல்பாட்டுடன் மட்டுமல்லாமல் வலுவானதாகவும் இருப்பதை உறுதிசெய்கிறது, இது AI- இயங்கும் தீர்வுகளுக்கான சிறந்த தேர்வாக அமைகிறது. 🌟
ஆதாரங்கள் மற்றும் குறிப்புகள்
- சொற்பொருள் கர்னல் மற்றும் அதன் APIகள் பற்றிய விரிவான ஆவணங்கள்: மைக்ரோசாஃப்ட் சொற்பொருள் கர்னல் ஆவணங்கள்
- திசையன் அடிப்படையிலான பயன்பாடுகளுக்கான COSMOSDB ஐ ஒருங்கிணைப்பதற்கான வழிகாட்டுதல்: Azure CosmosDB ஆவணம்
- AI நினைவகக் கடைகளுக்கான எடுத்துக்காட்டு செயல்படுத்தல் மற்றும் சிறந்த நடைமுறைகள்: Microsoft Semantic Kernel GitHub களஞ்சியம்